[AJAX] InnerHTML et boucle ?

MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'utilise un script ajax (InnerHTML) il fonctionne plutot bien l'ayant testé depuis 3 jours ^^
Sauf que (et oui sinon je ne serai pas la ^^)
J'utilise un boucle WHILE et là, la premiere ligne transmet tres bien ma variable mais la 2eme ne la transmet pas : s
Je commence a me dire que ce n'est vraiment pas logique car si la premiere ligne fonction, pourquoi pas les autres puisque ce sont des repliques de la 1er : s
est ce qu'il faut une commande spécifique avec les Innerhtml et les boucles ? ou n'est ce pas possible ? ou est ce une erreur de codage de ma part ? : s

Si vous avez besoin du code je peu le poster

Merci d'avance a ceux qui se pencheront sur le sujet : )

6 réponses

JR des cavernes Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   84
 
Je vais me pencher sur le sujet mais pas trop pour ne pas tomber. -_-

Oui le code serait le bienvenu là le peux rien te dire...
0
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
héhé ^^

<script language="JavaScript">
	function submitForm()
	{ 
		var req = null;
		var numfou=document.getElementById('liste').value; 

		document.ajax.dyn.value="Started...";
		if(window.XMLHttpRequest)
			req = new XMLHttpRequest(); 
		else if (window.ActiveXObject)
			req  = new ActiveXObject(Microsoft.XMLHTTP); 

		req.onreadystatechange = function()
		{ 
			document.ajax.dyn.value="Wait server...";
			if(req.readyState == 4)
			{
				if(req.status == 200)
				{
					document.ajax.dyn.value="Received:" + req.responseText + numfou;	
				}	
				else	
				{
					document.ajax.dyn.value="Error: returned status code " + req.status + " " + req.statusText;
				}	
			} 
		}; 
		req.open("POST", "reponse.php", true); 
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		req.send(null); 
	} 
</script>


Voila deja le script AJAX : )
puis ma magnifique boucle -_-

<INPUT type="text" name="dyn" value="" size="25">
<?
  $i=0;
    while($boucleaff=mysql_fetch_array($resultataff))
	{
	$i=$i+1;
	
	$reqprix="SELECT * FROM prix WHERE numcon='$boucleaff[numcon]';";
	$resultatprix=mysql_query($reqprix);
	$boucleprix=mysql_fetch_array($resultatprix);
	
    if($boucleaff['stomin']>=$boucleaff['stoact'])
    { ?>
   <TR>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[refcon]";?></div></center></TD>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[markimp]";?></div></center></TD>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[modimp]";?></div></center></TD>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[typcon]";?></div></center></TD>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[coulcon]";?></div></center></TD>
		<TD><center><font color="#4B4B4B">
</TD>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[stomin]";?></div></center></TD>
		<TD><center><font color="#4B4B4B"><? echo "$boucleaff[stoact]";?></div></center></TD>
		<TD><center><font color="#4B4B4B">
		
		
		
    
   		<select name="liste" size="1" onchange="javascript:submitForm()">

    <?php
      
      
      $sqlmin="SELECT numfou, MIN(prixcon) FROM prix WHERE numcon='$boucleaff[numcon]' GROUP BY numfou DESC LIMIT 1;";
      $reqmin=mysql_query($sqlmin);
      $resmin=mysql_fetch_array($reqmin);
      
      $sqlfouminaff="SELECT * FROM fournisseur WHERE numfou='$resmin[numfou]'";
      $reqfouminaff=mysql_query($sqlfouminaff);
      $resfouminaff=mysql_fetch_array($reqfouminaff);
      
      
      echo'<option value="'.$resmin["numfou"].'" selected>'.$resfouminaff["nomfou"].'</option>';
      
      $sqlfou="SELECT * FROM prix WHERE numcon='$boucleaff[numcon]' AND numfou!='$resmin[numfou]'";
      $reqfou=mysql_query($sqlfou);
      
      while($resfou=mysql_fetch_array($reqfou))
      {
      $sqlfouaff="SELECT * FROM fournisseur WHERE numfou='$resfou[numfou]'";
      $reqfouaff=mysql_query($sqlfouaff);
      $resfouaff=mysql_fetch_array($reqfouaff);
      
      
      
      echo'<option value="'.$resfou["numfou"].'" >'.$resfouaff["nomfou"].'</option>';
      }
      ?>
    </select>
		</div></center>
		</TD>
<?	}
	
	}
?>
</tr>
  </table>



Bon pour la petite explication c'est une application de gestion de consommable informatique. Cette page est la page de commande. J'affiche les consommable qui doivent etre commander en fonction de leurs stocks actuel d'ou mon while et mon if.
Je souhaite donc transmettre le numero du fournisseur pour permettre de changer de fournisseur en fonction de l'exigence de l'utilisateur (prix moin chere, rapidité de commande etc)
et je souhait donc ressortir le bon prix pour le fournisseur selectionné et le consommable selectionner : )
pour l'instant je n'en suis que a la phase de test donc j'affiche un peu n'importe quoi en resultat + mon numeros de fournisseur pour deja voir si cela fonctionne : x

J'avoue le code est un peu long : s
0
JR des cavernes Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   84
 
Oula j'ai du mal là.

J'arrive pas bien à situer le problème. Tu parles de innerHTML et j'en vois pas. Et que veux tu dire par

"J'utilise un boucle WHILE et là, la premiere ligne transmet tres bien ma variable mais la 2eme ne la transmet pas" ?
0
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
peut etre que quelque screen s'impose j'ai vu que sa se fesait ^^

alors l'origine :

http://img529.imageshack.us/img529/4713/origineew0.jpg

ensuite numeros de fournisseur 1 sur la ligne 1 :

http://img386.imageshack.us/img386/2721/numfou1kh7.jpg

fournisseur 2 sur la ligne 1 :

http://img152.imageshack.us/img152/4988/numfou2ln3.jpg

et enfin ma ligne 2 qui ne transmet rien :

http://img292.imageshack.us/img292/7209/numfoucacalh9.jpg


J'espere que cela eclairera plus : s
0
JR des cavernes Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   84
 
Bon je vois pas trop. (y'a des numfou partout x.x) ^^

Je vais te dire ce qui me semble bizarre on sait jamais ça peut t'avancer...

des fois tu utilise $resmin[numfou] sans '' (au lieu de $resmin['numfou']) mais c'est peut-être pas une erreur si numfou est un entier à ce moment là...

Ce que je trouve le plus étrange c'est que tu fais

"var numfou=document.getElementById('liste').value; "

alors que tu n'as aucune liste ayant l'id 'liste'...
0
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
oui il y a beaucoup d'appel a la base pour me faire ressortir des noms pour l affichage

en ce qui concert les $resmin[numfou] ce n'est pas une erreur de syntaxe puisque ces resultats sont contenue dans une requete et que si l'on rajoute des ' ' ou " " , PHP n'est pa content ^^

pour le var numfou=document.getElementById('liste').value; certe il n'y a pas de id="numfou" dans le
<select name="liste" size="1" onchange="javascript:submitForm()">
mais j'ai testé et c'est toujours la meme chose. Apparament le name suiffi amplement : s

peut etre vaudrait-il mieu trouver une autre methode de penser pour passer ces variables : s
0
JR des cavernes Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   84
 
En fait j'ai une petite idée :

Tes deux listes n'auraient pas le même nom par hasard ? Parceque si c'est le cas, quand tu fait "var numfou=document.getElementById('liste').value; " comment js fait pour savoir la valeur de laquelle il prend ? et peut-être qu'il doit toujours prendre la première...

Suppositions............
0
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
bah etant dans un boucle et voulant interroger la base avec du php sans rafraichier la page la seul solution est d'utiliser ajax. Pour me faciliter la vie un meme nom sur toute les lignes sera plus simple puisque de toute facon les demandes sont traitées une par une. Apres a moi de retrouver sur quel ligne doit etre replacer le resultat grace au numero de consommable. Je l'ai penser comme sa : s serai ce une erreur ?
0

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

Posez votre question
JR des cavernes Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   84
 
Ben je sais pas trop mais je dirais que oui...

J'aurais tenté :

<select id="liste'.$i.'" size="1" onchange="javascript:submitForm('.$i.')">


puis

function submitForm(numero)
	{ 
		var req = null;
		var numfou=document.getElementById('liste'+numero).value; 
                ....

Pas gagné que ça marche mais ça me parrait plus logique.
Enfin...
0
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
oui sa permettrai de faire passer la variable mais sa ne marche pas. Je commence vraiment a me poser des questions sur le fait que ce soit une idée realisable ou pas et pourquoi la boucle bloque elle cette transmission. Enfin c'est surtout le fait que cela marche une fois qui me trouble ^^
0
JR des cavernes Messages postés 152 Date d'inscription   Statut Membre Dernière intervention   84
 
Si c'est possible mais là je vais pas pouvoir te dire comment.

J'y réfléchirais si j'ai le temps

A+
0
MuronY Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
;) merci mais je vais remanier sa je pense ; )
0