Récupérer et afficher des données d'une BDD
Résolu/Ferméemrh Messages postés 427 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 9 avril 2024 - 20 oct. 2022 à 09:07
- Récupérer et afficher des données d'une BDD
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Impossible de récupérer mon compte gmail - Guide
- Récupérer mon compte facebook désactivé - Guide
6 réponses
Modifié le 20 oct. 2022 à 09:07
Résolu avec :
alert(response[0].nom);
Encore mille mercis à Jordan et Grandasse_
:-)
Modifié le 20 oct. 2022 à 08:23
Merci à Jordan et Grandasse_ pour cette solution :
$.ajax({ type:'POST', url:'client-data.php', data:{id_client:arg}, dataType:"json", success:function(response){ console.log('success ajax',response); document.getElementById("nomclient").value = response[0].nom; }, error:function(response){ console.log('erreur ajax',response); alert("Erreur Ajax"); } });
20 oct. 2022 à 08:35
D'ailleurs dans la mesure où je n'affiche qu'un seul client par clic, je vais modifier mon PHP :
$json[ ] = array(... en $json = array(...
Du coup mon Javascript n'a plus besoin de tableau :
document.getElementById("nomclient").value = response.nom;
18 oct. 2022 à 15:23
Bonjour,
Je vois qu'il y a plusieurs méthodes dans la documentation pour utiliser la réponse de la requête, lesquelles as-tu testé ?
https://api.jquery.com/jquery.post/#jqxhr-object
Modifié le 18 oct. 2022 à 19:25
Bonsoir,
Je ne sais pas trop ce que je teste vu que je ne comprends absolument pas la doc !
J'essaie d'adapter la méthode de l'autocomplétion qui fonctionne bien avec un input 'nomclient' qui une fois validé va rechercher dans la base de données les infos du client en question et rempli des inputs text adresse, cp, ville, etc...
Je m'inspire de ça :
$('#nomclient').autocomplete({ source: "clients-liste.php", minLength: 1, select: function (event, ui) { $("#nomclient").val(ui.item.label); $("#idclient").val(ui.item.id); $("#adresse").val(ui.item.adresse); $("#cp").val(ui.item.cp); $("#ville").val(ui.item.ville); $("#telephone").val(ui.item.telephone); $("#email").val(ui.item.email); } });
car du côté serveur, j'essaie d'utiliser le remplissage d'un array de ce type :
$json[] = array(
'nom' => $nom,
'id' => $idclient,
'adresse' => $adresse,
'cp' => $cp,
'ville' => $ville,
'telephone' => $telephone,
'email' => $email
);
J'ai donc fait ça :
$.ajax({ type:'POST' url:'client-data.php', data:'id_client=' + clientId, success:function () { $("#nomclient").val(nom); } });
Qui ne fonctionne pas (Uncaught ReferenceError: nom is not defined)
Ou ça :
$.ajax({ type:'POST' url:'client-data.php', data:'id_client=' + clientId, success:function(){ document.getElementById("nomclient").value = nom; } });
Idem
18 oct. 2022 à 21:50
Lire une doc, ça s'apprend :D
Et là je pense que t'es pas loin. Tu as ce message d'erreur parce que la fonction que tu passes dans "success" ne sait pas d'où vient "nom".
J'imagine qu'un truc comme ça :
var getNomFromResult = function (result) { // TODO récupérer le nom dans le JSON "result" } $.ajax({ type:'POST' url:'client-data.php', data:'id_client=' + clientId, success:function(result){ document.getElementById("nomclient").value = getNomFromResult(result); // ou $("#nomclient").val(getNomFromResult(result)); } });
En tout cas, mets un point d'arrêt dans ta fonction success pour voir à quoi ressemblent les données, comme ça tu vas savoir vers où aller, ce qu'il te manque, etc...
18 oct. 2022 à 22:10
En même temps que Jordan ! :-)
Il propose (response) et toi (result) !
D'où vous sortez ces infos ? Je viens de faire un CTRL F sur la doc que tu m'as indiqué et je ne trouve ni l'un ni l'autre ?
On peut mettre le mot que l'on veut pour y stocker les résultats, comme une variable ?
18 oct. 2022 à 22:13
Oui
19 oct. 2022 à 10:00
Je sors les informations de la documentation :
"The success
callback function is passed the returned data"
Donc il faut lui faire rentrer en input les données qui sont le résultat de ta requête
Modifié le 18 oct. 2022 à 21:52
Bonjour,
$.ajax({ type:'POST' url:'client-data.php', data:{id_client:clientId}, dataType:"json", contentType: "application/json", success:function(response){ console.log('success ajax',response); document.getElementById("nomclient").value = response.nom; }, error:function(response){ console.log('erreur ajax',response); alert("Erreur Ajax"); } });
Modifié le 19 oct. 2022 à 09:30
Bonjour Jordan...
J'ai momentanément retiré résolu à ma question pour 2 raisons :
1. J'ai vu que tu avais modifié ton code à 21h52 et quand je l'utilise j'ai dans la console :
erreur ajax {readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
Alors qu'effectivement, j'ai lu dans un tuto ou dans la doc qu'il fallait bien mettre :
dataType:"json",
contentType: "application/json",
compte tenu de ma page php / json[]
2. Si j'utilise ton premier code posté, à savoir
$.ajax({ type:'POST', url:'client-data.php', data:'id_client=' + arg, success:function(response){ console.log('success ajax',response); /*document.getElementById("nomclient").value = response.nom;*/ /*document.getElementById("nomclient").innerHTML = response.nom;*/ $("#nomclient").val(response.nom); alert(response.nom); }, error:function(response){ console.log('erreur ajax',response); alert("Erreur Ajax"); } });
J'ai bien en console les infos du client cliqué :
success ajax [{"nom":"XXXXXX Alain","id":"12","adresse":"371 route de la pluie","cp":"12345","ville":"PARIS","telephone":"06 07 08 09 10","email":"test@orange.fr"}]
par contre comme tu peux le lire en lignes 7, 8, 9 je n'arrive pas à récupérer les infos, j'obtiens un "undefined" en alerte !
Une idée ?
PS : Tu as oublié une virgule en ligne 2
PS2 : Compte tenu de mon code JavaScript qui précède j'utilise data:'id_client=' + arg, plutôt que
data:'id_client=' + clientId,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question18 oct. 2022 à 21:57
Bonsoir Jordane,
C'est donc "response" qu'il faut utiliser pour espérer récupérer qqchose de la BDD!
J'ai ajouter une virgule en ligne 2 car j'avais une erreur (Unexpected identifier 'url')...
Maintenant la console indique :
success ajax <br />
<b>Notice</b>: Undefined variable: json in <b>/var/www/html/gestion2/client-data.php</b> on line <b>45</b><br />
null
Le problème vient de mon code PHP je suppose :
<?php require ("connexion.php"); if(!empty($_POST["id_client"])){ // Requête recherche fiche client : $requete = $bdd->prepare('SELECT * FROM clients WHERE id_client = :id_client'); $requete->execute(array( 'id_client' => $_POST['id_client'] )); // on effectue une boucle pour obtenir les données while($reponse = $requete->fetch()) { $idclient =$donnees['id_client']; if($donnees['prenom']<>''){ $nom = $donnees['nom'] . ' ' . $donnees['prenom']; } else { $nom= $donnees['nom']; } $adresse = $donnees['adresse']; $cp = $donnees['cp']; $ville = $donnees['ville']; $telephone = sprintf("%s %s %s %s %s", substr($donnees['telephone'], 0, 2), substr($donnees['telephone'], 2, 2), substr($donnees['telephone'], 4, 2), substr($donnees['telephone'], 6, 2), substr($donnees['telephone'], 8, 2) ); $email = $donnees['email']; $json[] = array( 'nom' => $nom, 'id' => $idclient, 'adresse' => $adresse, 'cp' => $cp, 'ville' => $ville, 'telephone' => $telephone, 'email' => $email ); } // il n'y a plus qu'à convertir en JSON echo json_encode($json); } ?>
18 oct. 2022 à 23:05
L'erreur venait de $reponse dans ma boucle while... Il fallait mettre $donnes !
J'vais aller reprendre un p'tit café moi !
Merci à vous deux pour votre aide !!!
:-)
19 oct. 2022 à 10:01
Pense à mettre le sujet en résolu !
Modifié le 19 oct. 2022 à 10:27
Je l'avais mis en résolu mais compte tenu de mon message de 9h30 (post9), le problème n'est qu'à moitié résolu !
:-(
19 oct. 2022 à 22:24
Ah oui, en effet !
Alors on dirait que tu as bien toutes tes infos d'après le console.log :
success ajax [{"nom":"XXXXXX Alain","id":"12","adresse":"371 route de la pluie",
"cp":"12345","ville":"PARIS","telephone":"06 07 08 09 10","email":"test@orange.fr"}]
Par contre vu l'affichage, on dirait que ton objet est dans un tableau.
Essaie donc :
alert(response[0].nom);
Tu comprends l'idée ?
19 oct. 2022 à 23:40
C'était effectivement une bonne idée, hélas j'ai toujours le même message d'erreur alerte undefined
Modifié le 19 oct. 2022 à 23:47
Et un truc comme ça :
$.ajax({ type:'POST', url:'client-data.php', data:'id_client=' + arg, success:function(response){ console.log('success ajax',response); /*document.getElementById("nomclient").value = response.nom;*/ /*document.getElementById("nomclient").innerHTML = response.nom;*/ $("#nomclient").val(response.nom); $.each(response, function(i, item) { $("#nomclient").val(i.item.nom); }); }, error:function(response){ console.log('erreur ajax',response); alert("Erreur Ajax"); } });
Erreur : jquery.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in [{"nom":....
https://stackoverflow.com/questions/50419183/how-to-display-json-data-with-jquery-ajax