Bonjour

J'essaye d'afficher les résultats d'une requête SQL ligne par ligne (au fur et à mesure de l'exécution de ma requête), sans avoir à rafraîchir ma page.


Voici mon code qui appelle la fonction js ShowUser (simplifié) - fichier geocode.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<p>
<div id="719"><b>719 - Usersss info will be listed here.</b></div>
</p>
 
<p>
<div id="727"><b>727-User info will be listed here.</b></div>
</p>
 
<script type="text/javascript" >showUser(719)</script> 
<script type="text/javascript" >showUser(727)</script>
Voici le code JS - fichier select.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
var xmlHttp
var ID
 
 
function showUser(str)
{ 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
 {
 alert ("Browser does not support HTTP Request")
 return
 }
 
var url="getcoord.php"
url=url+"?nrID="+str
url=url+"&sid="+Math.random()
ID=str
xmlHttp.open("GET",url,true)
xmlHttp.onreadystatechange=stateChanged
xmlHttp.send(null)
}
 
function stateChanged() 
{ 
//prompt("NO",ID)
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
//prompt("YES",ID)
 document.getElementById(ID).innerHTML=xmlHttp.responseText 
 } 
}
 
 
 
 
function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}


La requête sql qui recupère les infos à afficher (simplifiée) - fichier getcoord.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
echo "<table border='1'>
...
 
while ($row = @mysql_fetch_assoc($result)) {
.....
			  $geocode_pending = false;
			  echo "<tr>";
			  echo "<td>" . $row['id'] . " </td>";
			  echo "<td>" . $row['name'] . " </td>";
 			  echo "<td>" . $row['address'] . " </td>";
			  echo "<td>" . $row['zip'] . " </td>";
			  echo "<td>" . $row['city'] . " </td>";
			  echo "<td>" . $row['state'] . "TEST </td>";
			  echo "<td>" . $row['country'] . " </td>";
 			  echo "<td>" . $status . " = failed to geocoded</td>";
			  echo "</tr>";
			}
 
 
echo "</table>";
Si je ne mets pas des alert dans le js, seul le dernier enregistrement de la requête s'affiche.
Si je mets des alert, tous les enregistrements sont affichés

J'ai modifié le code js de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
xmlHttp.open("GET",url,false)
xmlHttp.onreadystatechange=stateChanged
xmlHttp.send(null)
}

function stateChanged() ....
Aucun résultat n'est affiché

Comment faire pour attendre que la fin de l'exécution du premier appel de la fonction js avant de passer à la suivante (est-ce la solution ?) ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
<script type="text/javascript" >showUser(719)</script> 
<script type="text/javascript" >showUser(727)</script>
Merci d'avance pour votre aide
Patrice