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 :

Affichage de résultat [PDO]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut Affichage de résultat
    Bonjour,

    J'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class EditComptes {
    var $data;
    ...
    function getInfoApp($app) {
    ...
    global $data;
    ]$select = $PDO->prepare('SELECT nom, prenom, id, pass, `section`
    FROM cpte
    WHERE `idRec` = :idRec');
    $select->bindValue(':idRec', $_SESSION['app'], PDO::PARAM_INT);
    $select->execute();
    $data = $select->fetch();
    ...
    Avec lequel je dois afficher les informations contenues dans $data dans un formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="nom" id="nom" value="<?php echo $data->nom; ?>" />
    global $data me paraît plus un tour de passe passe qu'autre chose et ne me satisfait pas... Je pense qu'il y a mieux à faire...
    j'ai essayé de stocker l'objet $select dans la propriété $data, mais j'avoue honnêtement:
    1. Ne pas savoir comment faire pour afficher les données à partir de cette propriété
    2. et de savoir si c'est la bonne méthode à faire...

    Merci,

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Aïe.

    Cette forme est plus appropriée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class EditComptes {
      public $data;
     
      public function getInfoApp ($app) {
        $select = $PDO->prepare('SELECT nom, prenom, id, pass, `section` FROM cpte WHERE `idRec` = :idRec');
        $select->bindValue(':idRec', $_SESSION['app'], PDO::PARAM_INT);
        if ($select->execute()) {
           $this->data = $select->fetch(PDO::FETCH_ASSOC);
        }
        else {
             $err = $PDO->errorInfo();
             throw new RuntimeException("Query Error : {$err[2]}");
        }
    }
    Une question tout de même, d'ou vient cette variable $PDO dans cette méthode ?

    global $data me paraît plus un tour de passe passe qu'autre chose et ne me satisfait pas... Je pense qu'il y a mieux à faire...
    Effectivement, $data est une propriété d'instance de EditComptes elle est donc accessible par les méthode d'instance avec le mot clé $this (voir l'exemple ci dessus).

    j'ai essayé de stocker l'objet $select dans la propriété $data, mais j'avoue honnêtement:
    L'objet select est un PDOStatement, à moins de vouloir le mettre en cache pour la classe (en non pour l'instance - ça n'a aucun sens, il y aurait redondance), ça ne sert à rien de le conserver comme propriété d'instance.

    Ne pas savoir comment faire pour afficher les données à partir de cette propriété
    Vu que cette propriété est publique tu peux y accéder ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $edit_compte = new EditCompte(); // je ne connais pas la forme de ton constructeur
    $edit_compte->getInfoApp($app);
    var_dump($edit_compte->data); // sera un array

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Vu que cette propriété est publique tu peux y accéder ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $edit_compte = new EditCompte(); // je ne connais pas la forme de ton constructeur
    $edit_compte->getInfoApp($app);
    var_dump($edit_compte->data); // sera un array
    Et moi je suis fatigué... Sûr que si je fais echo $this->data->index après l'instanciation, ça ne risque pas de fonctionner...
    Une question tout de même, d'où vient cette variable $PDO dans cette méthode ?
    C'est l'objet de connection PDO... Par contre,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $err = $PDO->errorInfo();
    throw new RuntimeException("Query Error : {$err[2]}");
    Correspond à la gestion d'une exception ?
    Merci,

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Oublie ma précédente question, quoique je ne connaissais pas ce vocabulaire... A personnaliser lorsqu'on passe en production je suppose...
    Je passe par un try and catch d'habitude. Cela revient au même ?

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    A personnaliser lorsqu'on passe en production je suppose...
    Non à mettre en place dès le départ.
    Les exceptions sont levées avec le mot-clé throw et catchées par un bloc try catch ailleurs (voir attrapées par le système si la callback à été définie par set_exception_handler).

    A lire: http://php.net/manual/en/language.exceptions.php

    C'est l'objet de connection PDO... Par contre,
    Oui et comment se retrouve t'il dans cette méthode ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 295
    Par défaut
    Bonjour,

    cela vient du fait que je n'ai pas créée de classe de connection. Mais maintenant que je le dis, je pense que je devrais le faire...

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

Discussions similaires

  1. [MySQL] Affichage 1 résultat / 1 tableau
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 01/05/2006, 19h22
  2. [MySQL] affichage du résultat d'une requete dans une page
    Par blackbird1 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2006, 14h07
  3. [MySQL] Affichage des résultats d'un requête
    Par wiwi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/02/2006, 11h25
  4. Affichage des résultats d'un moteur de recherche
    Par poah dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2005, 14h31
  5. Affichage du résultat
    Par thomas_strass dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/07/2005, 11h30

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