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

Langage PHP Discussion :

[POO] requête en POO


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut [POO] requête en POO
    bonjour, je débute en POO et j'ai créé une classe qui doit me lister tous les noms, prenoms et adresses de ma base de données :

    j'ai mon fichier data.class.php :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    class client
     
    {
     
     var nom;
     var prenom;
     var adreses;
     
     function afficheClient()
     {
      $valide = " SELECT nom, prenom, adresse 
                  FROM client "
     
     
      $res = $mysql_query($valide);
     
      while ($data = mysql_fetch_assoc($res))
      {
       $nomIntervenant = $data['nom'];
       $nomClient = $data['prenom];
       $numNoteFrais = $data['adersse'];
     
       $nom [] = $nom;
       $prenom[] = $prenom;
       $adresse[] = $adresse;
     
      }			   
    return $nom[], $prenom[], $adresse []
     
     }
     
    }
    mais le problème c'est que je ne peux retourner qu'un seul élément ?
    donc dans ma page data.php :
    je fais un include data.class.php
    et là je veux mettre mes données dans un tableau :

    mais comment faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $client = new client();
    $client->afficheClient();
    je suis perdu avec les objets !

    Merci de votre aide...

  2. #2
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Une possibilité: retourner un array car on ne peut pas retourner plusieurs valeurs distinctes en php.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return array($nom, $prenom, $adresse);

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    A mon avis ta classe client est destinée à instancier des clients, et non des groupes de clients.

    Or ta fonction présente dans ta classe liste un ensemble de clients.
    Au niveau conceptuel c'est comme si tu demandais à un de tes clients de te citer tous les autres clients que tu possèdes : il n'est pas censé les connaitre.

    Le deuxième point qui m'a interpellé c'est une fonction afficheClient qui retourne un résultat.
    Il te faut faire un choix ici : ou bien la fonction affiche, ou bien elle retourne un résultat, dans ce cas ce n'est pas de l'affichage (enfin c'est un point de vue plus personnel ).

    Personnellement je traiterais l'affichage client par client : la fonction afficheClient afficherait seulement ses informations (nom, prénom, adresse), et le tableau serait géré dans une meta classe (Clientele par exemple).
    Tu peux aussi gérer l'affichage du tableau hors des classes.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    merci,

    et comment on gère l'affichage hors des classes ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Simplement dans ton code php, qui donnerait quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $valide = " SELECT nom, prenom, adresse 
                  FROM client "
    $res = $mysql_query($valide);
     
    echo "<table>";
     
      while ($data = mysql_fetch_assoc($res))
      {
          //Le constructeur du client est à construire
          $client = new Client($data);
          echo "<tr><td>".$client->afficheClient()."</td></tr>";
      }
    echo "</table>";

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Oui, ça le fait.
    Mais tant qu'à utiliser la POO, autant pousser un peu : je ferais une collection 'LesClients' composée d'objets 'UnClient'.

    J'avais galéré un peu à mettre en place des collections, mais maintenant je m'en sers à tout bout de champs : http://www.developpez.net/forums/sho...1&postcount=13

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    490
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 490
    Points : 201
    Points
    201
    Par défaut
    Citation Envoyé par ratapapa
    Simplement dans ton code php, qui donnerait quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $valide = " SELECT nom, prenom, adresse 
                  FROM client "
    $res = $mysql_query($valide);
     
    echo "<table>";
     
      while ($data = mysql_fetch_assoc($res))
      {
          //Le constructeur du client est à construire
          $client = new Client($data);
          echo "<tr><td>".$client->afficheClient()."</td></tr>";
      }
    echo "</table>";
    et si on veut le nom dans un <td> le prénon aussi ect... c'est là ou je bloque avec le afficheClient();.....

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    Dans ce cas ou tu préformates ton affichage dans ta fonction (sale ) ou bien tu utilises de simples getter pour renvoyer les infos au goutte à goutte, que tu formattes ensuite.

    Etant plutot puriste de l'objet je te conseille vivement de suivre le conseil de jml94 et d'utiliser une collection si tu es amenée à continuer à développer en objet.

    Edit : les getter ne sont que des méthodes envoyant la valeur de tes attributs.
    Exemple : function getNom() { return this->name; }

Discussions similaires

  1. [PDO] Débutant POO: requête preparé
    Par moudjahidine dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/02/2014, 21h57
  2. [PHP 5.3] POO : requête SQL afficher le résultat
    Par gwendoline-bricout dans le forum Langage
    Réponses: 27
    Dernier message: 04/02/2014, 17h18
  3. Optimisation de requètes en POO
    Par vince-nantes dans le forum Langage
    Réponses: 4
    Dernier message: 07/10/2013, 09h59
  4. [POO] Requêtes croisées
    Par oranocha dans le forum Langage
    Réponses: 15
    Dernier message: 12/07/2008, 14h39
  5. [POO] Requête avec classe PHP
    Par krfa1 dans le forum Langage
    Réponses: 3
    Dernier message: 18/01/2007, 18h45

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