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

Zend Framework PHP Discussion :

Récupération du résultat d'une requête (léger problème) [ZF 1.10]


Sujet :

Zend Framework PHP

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut Récupération du résultat d'une requête (léger problème)
    Bonjour à tous,

    Désolé de vous importuner pour si peu mais j'ai un léger problème quand à la restitution de donnée sur une requête.

    En effet voici ma requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $result = $db->select()
                     ->from(array('s'=>'status'),array('s.LIBELLESTATUS'))
                     ->join(array('u'=>'utilisateur'),'s.IDSTATUS = u.IDSTATUS',array('s.LIBELLESTATUS'))
     ->where('LOGINUTILISATEUR = "'.$user->LOGINUTILISATEUR.'"');
    Lorsque je regarde le résultat de ma requête avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zend_Debug::dump($db->fetchAll($result));
    il me restitue bien les données que je souhaite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array(1) {
      [0] => array(1) {
        ["LIBELLESTATUS"] => string(14) "Membre"
      }
    }
    mais comment récupérer ce "Membre" et le placer dans une variable de type texte ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $test = $db->fetchAll($result);	
    echo $test;
    me renvoi Array

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $test = $db->fetchAll($result);	
    echo $test["LIBELLESTATUS"]
    me renvoi Notice: Undefined index: LIBELLESTATUS
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $test = $db->fetchAll($result);	
    echo $test->LIBELLESTATUS;
    me renvoi : Notice: Trying to get property of non-object

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 28
    Par défaut
    Salut,

    D'après moi, car je suis assez nouveau sur le framework mais :

    Si tu en a plusieurs tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $test = $db->fetchAll($result);
    foreach($test as $value) :	
    echo $value->LIBELLESTATUS;
    endforeach;
    ou alors si tu connais la ligne que tu veux attaquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $test[$i]->LIBELLESTATUS;
    SpaceInvader.

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Merci de ton aide, cependant ma requête ne me renvoi qu'un résultat et ta solution me pose le même problème : Notice: Trying to get property of non-object

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 28
    Par défaut
    Et si tu fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $test[0]->LIBELLESTATUS;
    Tu as la même erreur ?

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    oui c'est ce que j'ai fait, donc même erreur.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Bonjour,

    Et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $test[0]['LIBELLESTATUS'];

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 28
    Par défaut
    En relisant ton premier post et notamment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    array(1) {
      [0] => array(1) {
        ["LIBELLESTATUS"] => string(14) "Membre"
      }
    }
    Je ne comprend pas pq tu as un tableau 2D et pas un object de type DataTable.

    As-tu essayé de l'intérroger comme un tableau de tableau ? Tu peux essayer ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo $test[0][0];
    echo $test[0][1];
    echo $test[0]["LIBELLESTATUS"];

  8. #8
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Effectivement de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $test[0]["LIBELLESTATUS"];
    je récupère ce que je souhaite mais bon je ne vois pas non plus pourquoi ce tableau de deux dimensions ... et la méthode de récupération ne me plait pas vraiment ^^

    mais merci en tout cas.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Je t'en prie,

    Si tu es sûr que ta requête ne récupère qu'un seul enregistrement, appel juste fetch et non fetchAll!
    Et si tu veux récupérer le résultat en tant que objet au lieux d'un tableau associatif, tu appel fetch(Zend_Db::FETCH_OBJ) (valable aussi pour la méthode fetchAll).


    Cordialement,
    Ahmed.

  10. #10
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Salut abenlahsen, ça faisait longtemps.

    Lorsque j'utilise simplement fetch il ne semble pas trouver cette fonction :

    Fatal error: Call to undefined method Zend_Db_Adapter_Pdo_Mysql::fetch()

    et j'ai déjà essayé de mettre la récupération en objet avec cette commande

    $db->setFetchMode(Zend_Db::FETCH_OBJ);

    Cependant il est vrai que ce tableau 2D me dérange pas mal surtout que je ne sais pas pourquoi il est en 2D

  11. #11
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Bonjour,

    Lorsque j'utilise simplement fetch il ne semble pas trouver cette fonction :

    Fatal error: Call to undefined method Zend_Db_Adapter_Pdo_Mysql::fetch()
    Tu es sous quelle version de ZF ?

    Cependant il est vrai que ce tableau 2D me dérange pas mal surtout que je ne sais pas pourquoi il est en 2D
    Parce que :
    1- Dimension 1: Tu utilise fetchAll().
    2- Dimension 2: Tu utilise les tableaux associatifs (valeur par défaut).

    Cordialement,
    Ahmed.

  12. #12
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Tu es sous quelle version de ZF ?
    Je suis en version 1.10

    Parce que :
    1- Dimension 1: Tu utilise fetchAll().
    2- Dimension 2: Tu utilise les tableaux associatifs (valeur par défaut).
    Je ne comprends pas trop pourquoi il est en Dimension 2 d'ou ça peut venir, en théorie il devrait être en Dimension 1

  13. #13
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Je suis en version 1.10
    Donc tu peux utiliser la fonction fetch sans problème!

    Je ne comprends pas trop pourquoi il est en Dimension 2 d'ou ça peut venir, en théorie il devrait être en Dimension 1
    Ok j'explique autrement.



    J'espère que c'est plus clair maintenant!

    Cordialement,
    Ahmed.

  14. #14
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Ahhhhhh effectivement je comprend beaucoup mieux maintenant, je m'empresse de tester ça. Merci beaucoup

  15. #15
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Je croyais avoir trouvé un moyen de faire comme je le souhaitais mais c'est pas encore le cas en utilisant la méthode de récupération en objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $stmt->setFetchMode(Zend_Db::FETCH_OBJ);
    je me retrouve avec quelque chose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array(1) {
      [0] => object(stdClass)#51 (1) {
        ["LIBELLESTATUS"] => string(14) "Membre"
      }
    }
    et en utilisant la méthode sans définir de type de récupération je me retrouve avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    array(1) {
      [0] => array(1) {
        ["LIBELLESTATUS"] => string(14) "Membre"
      }
    }

    donc j'affiche ces résultats de ces deux manières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $result[0]['LIBELLESTATUS'];
    pour le tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $result[0]->LIBELLESTATUS;
    pour l'objet.


    Cependant ce que je cherche à faire c'est tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $result->LIBELLESTATUS

  16. #16
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Bonjour,

    Cependant ce que je cherche à faire c'est tout simplementecho $result->LIBELLESTATUS
    Il faut utiliser la fonction fetch au lieu de fetchAll.

    Je te donne un exemple qui marche chez moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $db = Zend_Db_Table::getDefaultAdapter();
    $select = new Zend_Db_Select($db);
     
    $select->from('esn_idnt', array('NUMR_TELP'))
              ->where('ESN = ?', $esn);
     
    $stmt = $db->query($select);
    $result = $stmt->fetch();
     
    return $result;
    ?>
    Ici je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $result->NUMR_TELP; ?>
    ça marche!

    Cordialement,
    Ahmed.

  17. #17
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 58
    Par défaut
    Merci beaucoup maintenant j'arrive effectivement à récupérer comme je le voulais.

    Désolé si j'ai été un peu long à la détente et merci de ta patiente

    Cordialement
    kawa

  18. #18
    Membre éprouvé
    Homme Profil pro
    Ingenieur BI - Dev Web Senior
    Inscrit en
    Décembre 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingenieur BI - Dev Web Senior

    Informations forums :
    Inscription : Décembre 2009
    Messages : 118
    Par défaut
    Enjoy!

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

Discussions similaires

  1. Récupération du résultat d'une requête
    Par malgache dans le forum Android
    Réponses: 4
    Dernier message: 20/04/2011, 13h10
  2. Réponses: 3
    Dernier message: 10/11/2010, 17h20
  3. Réponses: 3
    Dernier message: 09/10/2009, 20h20
  4. [PDO] Récupération des résultats d'une requête
    Par nikco dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/06/2009, 01h26
  5. Récupération du résultat d'une requête sur une table liée
    Par champijulie dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2007, 12h26

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