Rechercher : dans
Par :

Passer une variable tableau dans fonction JS

Dernière réponse le 12 avr 2009 à 13:00:34 beudet, le 9 avr 2009 à 16:51:15 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.8

Meilleures réponses pour « Passer une variable tableau dans fonction JS » dans :
Javascript - Afficher un message d'au-revoir aux visiteurs VoirIl est parfois très plaisant d'afficher un message en remerciant les visiteurs de votre site de leur passage. Cette astuce a pour but de vous montrer comment s'y prendre. 1.La fonction JavaScript 2.Appel du Script 1.La fonction...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Javascript - Les tableaux VoirIntroduction à la notion de tableau Les variables de Javascript ne permettent de stocker qu'une seule donnée à la fois. Or, étant donné qu'il est souvent utile de manipuler de nombreuses données, le concept de variable se révéle parfois...

1

gigaga, le 9 avr 2009 à 16:53:39

Bé : <$php echo $fichier[i] ?>

Répondre à gigaga

2

beudet, le 9 avr 2009 à 16:57:28

Il y a plusieur valeur à faire passer , je veut tout récupérer pas juste une valeur.

Répondre à beudet

3

gigaga, le 9 avr 2009 à 16:58:44

Ben tu inscréments i... de 0 jusqu'à la taille de ton tableau...

for($i=0;$i<sizeof($fichier);$i++) {
echo $fichier[i];
}

Répondre à gigaga

4

beudet, le 9 avr 2009 à 17:03:48

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.

Répondre à beudet

5

gigaga, le 9 avr 2009 à 17:09:49

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.

Répondre à gigaga

6

beudet, le 9 avr 2009 à 17:17:46

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.

Répondre à beudet

7

gigaga, le 9 avr 2009 à 17:24:48

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);

}

Répondre à gigaga

8

beudet, le 9 avr 2009 à 17:30:24

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

Répondre à beudet

9

gigaga, le 9 avr 2009 à 17:33:42

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]."');";
}
?>

}

Répondre à gigaga

12

beudet, le 10 avr 2009 à 09:09:26

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.

Répondre à beudet

10

beudet, le 10 avr 2009 à 09:06:30

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.

Répondre à beudet

11

beudet, le 10 avr 2009 à 09:07:43

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]."');";
}

Répondre à beudet

13

 gigaga, le 12 avr 2009 à 13:00:34

Mais si... Ta fonction javascript sera constituée des alert (par fichiers). (code généré par php)...

Répondre à gigaga
Collection CommentÇaMarche.net