Passer une variable tableau dans fonction JS

Fermé
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 - 9 avril 2009 à 16:51
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 - 12 avril 2009 à 13:00
Bonjour,

Je souhaite passer en pramamètre un tableau qui contient des données de type chaine de caractère en PHP dans une fonction JS. Pour le moment quand je fait un alert cela me marque array si je passe ma variable de cette facon <$php echo $fichier ?> et undefined si je la passe comme sa <?php $fichier ?> .

mon code PHP :

$j=0;
$mydir = "../upload/".$prenom.".".$nom."/".$titre."/";
if ($dir = @opendir($mydir))
{

while (($file = readdir($dir)) !== false)
{
if($file != ".." && $file != ".")
{
$j = $j+1;
$filelist[] = $file;
}
}
closedir($dir);
}

$lien="../upload/$prenom.$nom/$titre/";
$fichier=$filelist;

<input type="image" title="lecture"value="Fenetre" src="../img/lecture.png" onclick="creer_fenetre(400,400,300,500,'<?php echo $titre; ?>','<?php echo $text; ?>','<?php echo $lien; ?>','<?php $fichier; ?>')" />

script js

function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {

alert(lien);
alert(fichier[0]);


Voila comment récupérer mon tableau $fichier.

Merci
A voir également:

7 réponses

gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
9 avril 2009 à 16:53
Bé : <$php echo $fichier[i] ?>
0
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13
9 avril 2009 à 16:57
Il y a plusieur valeur à faire passer , je veut tout récupérer pas juste une valeur.
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
9 avril 2009 à 16:58
Ben tu inscréments i... de 0 jusqu'à la taille de ton tableau...

for($i=0;$i<sizeof($fichier);$i++) {
echo $fichier[i];
}
0
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13
9 avril 2009 à 17:03
Non je ne peut pas. Je souhaite passer tout le tableau avec toute les valeurs dans la fonction JS. Et seulement dans la fonction JS récup toute les valeurs avec une boucle for.
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
9 avril 2009 à 17:09
Ce n'est pas possible... Tu ne peux pas mélanger des variables coté serveur et des variables coté client.
Les variables javascript doivent être initialisés coté client, il faut donc que ce soit php qui écrive le code que le client pourra interpréter... Si tu as un tableau en php, alors pourque js utilise ce tableau, il faut que php écrive le code d'initialisation de ce tableau js :

var MonTableau = new Array();

<?
for ($i=0;$i<sizeof($fichier);$i++) {
echo "MonTableau[".$i."] = \"".$fichier[$i]."\";";
}
?>

A ce stade, tu as un tableau js initialisé à partir d'un tableau php.
0
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13
9 avril 2009 à 17:17
Oula je me sens un peut perdu ^^

var MonTableau = new Array(); je le créer dans ma fonction JS creer_fenetre() ?

et

<?
for ($i=0;$i<sizeof($fichier);$i++) {
echo "MonTableau[".$i."] = \"".$fichier[$i]."\";";
}
?>

c'est du php. Je comprend pas comment veus tu que je récupère les valeurs dans ma fonction JS.
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
9 avril 2009 à 17:24
Exemple:

<?
for ($i=0;$i<sizeof($fichier);$i++) {
echo "<input type=\"image\" title=\"lecture\" value=\"Fenetre\" src=\"../img/lecture.png\" onclick=\"creer_fenetre(400,400,300,500,'".$titre."','".$text."','".$lien."', '".$fichier[$i]."')\"/>";
}
?>


function creer_fenetre(left,top,width,height,titre,texte,lien,fichier) {

alert(lien);
alert(fichier);

}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13
9 avril 2009 à 17:30
Ah oui d'accord.
Le problème c'est que je clique sur mon bouton input et il m'affiche une fenetre type webOS en dynamique ou j'affiche le titre de l'article, le corp du message et les fichiers qu'il a uploader.
Le problème avec ta technique c'est que je me retrouve avec 3 bouton input si la personne à partager 3 fichiers et pour chaque bouton sa ne m'affichera qu'un lien dans ma fenetre JS. C'est pour sa qu'il faut que je récupère toute les valeurs du tableau PHP dans ma fonction JS en une seule fois pour pouvoir afficher tout les liens de tout les fichier uploader par la personne qui a écrit l'article.

Je c'est pas si je suis très clair :s
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
9 avril 2009 à 17:33
dans ce cas :

<?
echo "<input type=\"image\" title=\"lecture\" value=\"Fenetre\" src=\"../img/lecture.png\" onclick=\"creer_fenetre(400,400,300,500,'".$titre."','".$text."','".$lien."')\"/>";
?>


function creer_fenetre(left,top,width,height,titre,texte,lien) {

alert(lien);
<?
for ($i=0;$i<sizeof($fichier);$i++) {
echo "alert('".$fichier[$i]."');";
}
?>

}
0
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13 > gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014
10 avril 2009 à 09:09
Je ne peut pas utiliser

<?
for ($i=0;$i<sizeof($fichier);$i++) {
echo "alert('".$fichier[$i]."');";
}

car ma fonction creer_fenetre est une fonction javascript.
0
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13
10 avril 2009 à 09:06
Je vien de regarder ce que tu ma proposé gigaga, mais ma fonction creer_fenetre est une fonction javas script, je peut pas intégrer de php dedans.
0
beudet Messages postés 122 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 février 2011 13
10 avril 2009 à 09:07
Le problème gigaga c'est que la fonction creer_fenetre est une fonction javascript , donc je peut pas utiliser :

<?
for ($i=0;$i<sizeof($fichier);$i++) {
echo "alert('".$fichier[$i]."');";
}
0
gigaga Messages postés 2347 Date d'inscription vendredi 20 juin 2008 Statut Membre Dernière intervention 22 août 2014 301
12 avril 2009 à 13:00
Mais si... Ta fonction javascript sera constituée des alert (par fichiers). (code généré par php)...
0