Insertion javascript dans PHP et inversement

Fermé
law - 23 oct. 2006 à 14:34
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 24 oct. 2006 à 10:56
bonjour, mon problème est le suivant
j'ai besoin de récupérer dans un tableau déclaré dans javascript les valeurs obtenues après une requête PHP/ SQL, je m'explique :
apres la requête PHP/SQL, j'obtiens un tableau avec le nom de différentes images $img1 est ce tableau :
<? $img1 = les valeurs correspondantes ; ?>

ensuite j'aimerais récupérer toutes ses valeurs dans un tableau sous javascript
j'ai essayé de cette manière

<script language='javascript'>
var Pic = new array[];
for(i=0;i<<? echo sizeof($img1); ?>;i++){
Pic[i]="images/<? echo $img1["+i+"] ?>";
}
</script>

mais ça ne fonctionne pas, il affiche juste "images"

ensuite j'ai essayé de le faire dans le php
<?
for($i=0;$i<sizeof($img1);$i++){
echo "<script language=javascript>";
echo "Pic[".$i."]=images/".$img1[$i];
echo "</script>";
}
?>

et c'est encore le meme problème je n'arrive pas à concaténer l'indice i

Si quelqu'un aurait une solution, merci d'avance
A voir également:

3 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
23 oct. 2006 à 17:07
J'ai une solution pour toi, qui consiste à faire de l'AJAX en utilisant les objets XMLHttpRequest de javascript.

Explications :

Tu créé une fonction javascript qui va initialiser un objet XMLHttpRequest. Cet objet là, va appelé ton script PHP, dans lequel tu effectue ta requete SQL sur ta base de donnée, puis dans lequel tu écrit ta String de réponse (tu comprendra mieux en ayant lu le lien que je vais te donner à la fin).
Lorsque ton script PHP est terminé, dans ta fonction javascript appellante, l'objet XMLHttpRequest va récupérer tout ce qui a été afficher dans ton script PHP pour éventuellement l'interpréter si tu le demande. C'est là que c'est intéressant pour toi, car tu vas pouvoir écrire du code javascript sous forme de chaine dans ton script PHP (initialiser donc ta variable javascript de ton tableau d'image avec ta requète) et ce code sera interpréter au retour (fin de script php)

Ta chaine ressemblera donc à un truc du genre :
$taille = @myslq_num_row($result);
$ma_chaine = "var tab = new Array[];
   tab.length = ".$taille."; ";
$i = 0;
while ( $line = @mysql_fetch_array($result) ){
   $ma_chaine .= "tab[".$i."] = ".$line["image"].";  ";
}

echo $ma_chaine


Voila en gros la construction de ta réponse de retour de ton script pour que ca te créé une variable tableau contenant tes images. Ca fait longtemps que j'ai pas touché au JS donc la déclaration du tableau c'est peut etre pas ca, mais l'idée est là.


Maintenant pour comprendre les objets XMLHttpRequest et leur puissance (c'est vraiment tres utile !), regarde ici :
https://openweb.eu.org/articles/objet_xmlhttprequest/

Bon courage :), et si tu as besoin d'un exemple concret, bip moi : kij_82@hotmail.fr

0
merci pour ton aide,
j'ai trouvé une autre solution, j'ai transformé mon tableau php en chaine, j'ai passé cette chaine dans une variable javascript et j'ai retransformé en tableau :)

par contre est ce que tu saurais comment résoudre cela :
voila j'aimerais sous php lui faire comprendre que : $fiche->question.$i en l'utilisant dans une boucle soit $fiche->question1, $fiche->question2 etc
mais il ne l'interprete pas comme ça, je sais pas si c possible de concaténer,
j'ai essaye en transformant en une chaine ne faisant $question="$"."fiche->question".$i; il m'affichait bien $fiche->question1 mais comme c un string il ne peut plus l'interpreter comme une variable, est ce kil faut peut etre changer ensuite le type de la variable,

merci d'avance si tu vois comment je peux faire
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
24 oct. 2006 à 10:56
Bonjour,

Essaie quelque chose de ce genre :
for (int $i=0;$i<10;$i++)
{
    echo $fiche->{"question".$i};
}
Il me semble que ça devrait donner le résultat souhaité.

Xavier
0