Passer une variable tableau dans fonction JS

beudet Messages postés 128 Statut Membre -  
gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   301
 
Bé : <$php echo $fichier[i] ?>
0
beudet Messages postés 128 Statut Membre 13
 
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   Statut Membre Dernière intervention   301
 
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 128 Statut Membre 13
 
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   Statut Membre Dernière intervention   301
 
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 128 Statut Membre 13
 
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   Statut Membre Dernière intervention   301
 
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 128 Statut Membre 13
 
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   Statut Membre Dernière intervention   301
 
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 128 Statut Membre 13 > gigaga Messages postés 2347 Date d'inscription   Statut Membre Dernière intervention  
 
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 128 Statut Membre 13
 
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 128 Statut Membre 13
 
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   Statut Membre Dernière intervention   301
 
Mais si... Ta fonction javascript sera constituée des alert (par fichiers). (code généré par php)...
0