IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Traiter un stdClassObject et le récupérer dans Javascript


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut Traiter un stdClassObject et le récupérer dans Javascript
    Bonjour

    Je cherche à récupérer le résultat de requêtes SQL renvoyé par du php via une XMLHttpRequest. Sachant que les données sont en tableau la meilleure méthode est apparemment (?) le JSON, mais je n'arrive pas à écrire ça ..

    De plus :
    - le php fait 2 requêtes (il y a 2 champs dans le formulaire), je ne sais pas si il vaut mieux fusionner les 2 tableaux ou tenter de récupérer les 2 séparément.
    - le résultat de la requête est traité par un fetch(PDO::FETCH_OBJ) qui renvoie un stdClassObject (car fetch() renvoie un array mais en doublant les données..)

    Quelle est la bonne méthode en fonction de ces contraintes ?

    Faut-il d'abord fusionner les tableaux (avec array_merge ?) en faisant un transtipage sur les stdClassObject ?

    Comment ça se passe dans la fonction retour en Java (actuellement j'ai un bête req.responseText) ?

    Si vous avez des exemples et conseils je suis preneur ..

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comment doivent être utilisées les données retournées par la requête ?

    Si par exemple tu veux afficher ça dans un tableau HTML, il est plus simple de tout construire en PHP et de renvoyer le résultat final.

    Si tu souhaites toutefois recuperer le tableau dans Javascript (et non dans Java), utilise PDO::FETCH_ASSOC et json_encode.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    Une partie des données sert effectivement à updater des input text (ou peut être un tableau)..

    Ok merci, alors avec fetch(PDO::FETCH_ASSOC) je récupère un tableau normal, ensuite je fais un tableau des 2 et un json_encode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ..
    $res0 = $req0->fetch(PDO::FETCH_ASSOC);
    $res1 = $req1->fetch(PDO::FETCH_ASSOC);
    ..
    $out = array ($res0, $res1);
    echo json_encode($out);
    ?>
    Par contre côté Javascript je le récupère avec un simple responseText ?
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ..
    if (req.readyState == 4 && req.status == 200)
    {
    	var get = (req.responseText);
    	alert (get);
    }

    Dans ce cas j'obtiens cette structure en l'occurrence :
    [{"code_INSEE":"69380","code_postal":"69000","nom_ville":"Lyon"},{"code_INSEE":"75100","code_postal":"75000","nom_ville":"Paris"}]
    Les "propriétés" sont les noms des champs de la requête, mais ils sont entre guillemets, donc dans mon cas je ne peux pas faire ça :
    C'est normal ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, c'est normal, comme l'indique le nom de la propriété responseText, ce que tu reçois en JavaScript est du texte (et c'est normal : HTTP ne sait pas transporter de données typées).
    Tu es donc obligée de la parser pour obtenir du JSON
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var get = JSON.parse(xhr.responseText);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    C'est donc là qu'il faut parser .. ok c'est impeccable et ça tient en quelques lignes.

    Merci beaucoup à vous 2 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2008, 12h49
  2. Récupérer var javascript dans mon java
    Par Mynautor dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/02/2007, 16h44
  3. Réponses: 1
    Dernier message: 20/01/2007, 11h47
  4. Réponses: 17
    Dernier message: 06/09/2006, 13h37
  5. Réponses: 5
    Dernier message: 13/08/2004, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo