[AJAX] Afficher résultat sql à la volée
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:
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:
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:
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:
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:
1 2 3
|
<script type="text/javascript" >showUser(719)</script>
<script type="text/javascript" >showUser(727)</script> |
Merci d'avance pour votre aide
Patrice