Problème Tableau javascript

Fermé
ayer - 2 juil. 2009 à 14:41
 ayer - 2 juil. 2009 à 17:01
Bonjour,

Je cherche à passer la valeur d'une variable dans un tableau,et pour une raison inconnue cela ne passe pas.
Tout d'abord je récupère une variable php en Js,puis je cherche à la transferer dans un tableau js,seule la premièere étape fonctionne.


var i;
var t;
i=0;
var tableau = new array();
</SCRIPT>

<?php
foreach($tab_all_fichier as $tb)
{
echo '<div id="ok">'.$tb.'</div>';
echo '<div id="i">'.$i.'</div>';
?>
<script>

i=eval(document.getElementById('i').innerHTML);//i est valide,c'est l'indice du tableau
t=document.getElementById('ok').innerHTML; //La valeur récuperé est valide,je l'ai testée
tableau[i]=t; //impossible de faire passer t dans ce tableau.
</script>
<?php
$i++;
}

Je pensais que le problème était que je navigue entre js et php..mais mais variable s'affiche correctement,seul le passage de la variable au tableau ne fonctionne pas,pourtant l'indice et la variable sont valides.Si quelqu'un peut m'aider..
A voir également:

5 réponses

Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 6
2 juil. 2009 à 15:10
Hello,

Je crois comprendre pourquoi.

Tu essaye d'incrementer la variable i en PHP, alors qu'elle est declaré en javascript.

Donc, je ne crois pas que ce soit possible de faire communiquer ainsi les variables.

Et je ne suis pas sûr non plus qu'il soit possible d'executer du javascript dans une boucle PHP, vu que le PHP s'execute coté serveur, et le javascript coté client.
0
En théorie on devrait pouvoir passer du php vers javascript sans rafraichir la page étant donné que la page est executer sur le serveur à son lancement.
J'arrive a passer faire transiter la variable dans les 2 langages,ça fonctionne.Par contre c'est après quand je doit remplir mon tableau.J'ai essayé de changer les noms de mon indices pour ne pas avoir 2 i.Mais c'est toujours pareil.J'ai du mal à voir d'ou ça vient,mais normalement au moment ou je rempli mon tableau,tout se passe sur le client.De plus je passe bien dans le javascript dans le boucle php :s
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
2 juil. 2009 à 15:33
déjà tu n'initialise pas la variable $i
ensuite si ta boucle fait 3 tours ben tu auras 3 fois un div avec id="ok" et trois fois un div avec id="i"
et enfin c'est Array et non array

et pourquoi tu passe par du html pour passer ta variable de php a javascript ?
tu devrais le faire directement

pour une raison inconnue cela ne passe pas.
tu regardes ta console d'erreur ?
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
2 juil. 2009 à 15:42
<script type="text/javascript">
var tableau = new Array();
<?php
foreach($tab_all_fichier as $tb)
	echo 'tableau['.$i.']='.$tb.';';
?>
</script>


c'est pas mieux comme ça ?
reste toujours le problème du $i que tu n'as pas initialisé et je vois pas ce que tu veux en faire :/
0
Mopra-L Messages postés 146 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 23 mai 2012 6
2 juil. 2009 à 15:35
"J'ai du mal à voir d'ou ça vient,mais normalement au moment ou je rempli mon tableau,tout se passe sur le client"

Oui, mais a ce moment la, la boucle PHP est deja executée, non ?
Du coup, l'instruction javascript ne s'executera qu'une fois.

Je suis pas sûr de ce que j'avance, mais il ne me semblait pas possible de melanger comme ca PHP et javascript.

Il faudrait l'avis de quelqu'un d'autre a ce niveau, je pense :p
0
nEm3sis Messages postés 710 Date d'inscription lundi 20 août 2007 Statut Membre Dernière intervention 9 avril 2012 113
2 juil. 2009 à 15:37
je confirme
d'abord le php va créer la page ( avec les echo, en faisant la boucle pour ici)
ensuite le navigateur va lire la page créée par php et va éxécuter tout le javascript et afficher le html
et là aïe aïe aïe ton code est pas prévu pour ça
0

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

Posez votre question
Cela fonctionne.Après vous avez raison,mélanger les 2 n'est pas très conseillé,je vais plutôt passer par de l'ajax,merci en tout cas;)
0