Après une requête PHP/MYSQL, je transforme le résultat en chaîne JSON.
Code : Tout sélectionner
$row = mysql_fetch_assoc($query)
$json = json_encode($row);Il m'est donc possible de récupérer les variables sous Ajax:
Code : Tout sélectionner
reponse=eval('('+xhr_object.responseText+')');
$(div).innerHTML='Pseudo: '+reponse.pseudo+"<br/>\n"+'Niveau: '+reponse.NIVEAU;Mais le problème vent lorque le retour MYSQL renvoit plusieurs lignes de réponses:
La chaîne JSON ressemble alors à 3 lignes {"pseudo": "Toto", "NIVEAU": "1"}{"pseudo": "Titi", "NIVEAU": "2"}{"pseudo": "Tito", NIVEAU": "3"}
et Ajax renvoit une erreur au Navigateur sur le format de la chaîne, même en tentant les
Code : Tout sélectionner
$(div).innerHTML='Pseudo: '+reponse.pseudo[1]+"<br/>\n"+'Niveau: '+reponse.NIVEAU[1];Code : Tout sélectionner
{"user": [
{"pseudo": "Toto", "NIVEAU": "1"}, {"pseudo": "Titi", "NIVEAU": "2"}, {"pseudo": "Tito", "NIVEAU": "3"}
]
}; et la commande javascript : $(div).innerHTML += 'Pseudo: '+reponse.user[2].pseudo+"<br/>\n"+'Niveau: '+reponse.user[2].NIVEAU;
fonctionne.
Ma question est : comment faire pour que la chaîne multiple soit retournée au bon format en PHP ?
L'essai suivant me retourne des réponses en duplicata
<?php
// Accès MySQL
include '../commun/connexion.inc.php';
include '../commun/fonctions.inc.php';
// $pseudo = $_GET['pseudo'];
// $sql = "select * from tbl_user where pseudo='$pseudo'";
$table = 'tbl_user';
$sql = "select * from $table";
$query = mysql_query($sql);
$numrows = mysql_num_rows($query);
echo '{"user"'.": [ ";
$json = '';
while ($row = mysql_fetch_assoc($query)) {
if ($json == '') $json = json_encode($row); // 1ère ligne sans début de virgule
else {$json .= ", ".json_encode($row); // lignes suivantes séparées par une virgule sauf la fin
echo $json;}
}
echo " ] }";
?>
Merci de votre aide !
(Le défi ultérieur consitera à itérer la chaîne JSON en javasript pour afficher tous les résultats)
mctarek