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 :

POO et accés BDD


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut POO et accés BDD
    Bonjour,
    Après de longue recherche, et une longue réflexion je n'arrive pas à trouver quelque chose de logique concernant un problème de développement en POO.
    Je m'explique on a deux classes une auteur et une autre livre.
    J'ai alors la méthode afficher_les_ouvrages() qui est dans la classe auteur...
    Et c'est la que mon problème intervient dans cette méthode je fais un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $sql = SELECT id_livre FROM table_jointure WHERE id_auteur= $id;
     
    $query= $this->database->query($sql);
     
    while ($rs = $query->fetch_array() )
    {
    	$livre = new Livre($rs[0]);
    	$livre->plein_dinformation();
    }
    J'ai utilisé une table jointure car on suppose qu'un livre peut avoir plusieurs auteurs (exemple stupide je vous l'accorde)
    Le constructeur de la classe Livre contient une requete incluant plusieurs table pour avoir des info comme, la notation par les utilisateurs, le nombre de fois acheter...
    Donc mon problème c'est que si cet auteur à écrit 48 bouquins j'aurais 49 requètes dans la page...

    Design pattern, Poo... Comment avoir du style?!
    Un grand merci

  2. #2
    mon_nom_est_personne
    Invité(e)
    Par défaut
    le probleme il est pas au niveau de ton design mais de ta requete.
    car au final tu veux recuperer tout les livre d'un auteur et leurs info alors pk pas faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql = SELECT livre.* FROM table_auteur AS au JOIN table_jointure AS joint ON au.id_auteur = joint.id_auteur JOIN table_livre AS livre ON joint.id_livre = livre.id_livre WHERE au.id_auteur= $id;
     
    $query= $this->database->query($sql);
     
    while ($rs = $query->fetch_array() )
    {
    	$livre = new Livre($rs[0]);
            // la tu fmet tes info de livre comme bon te semble; un array, plusieur propreite etc...
    	$livre->info = array(...);
    }

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut classe auteur liés à la table livre
    Oui, très bien je suis totalement d'accord cela fait qu'une (belle) requête..
    Mais l'intérêt de la poo c'est aussi de prévoir les modifications et de faire en sorte que celle ci n'affecte pas trop de code.
    Dans ta solution si je change un jour la table livre, il faudra modifier la classe livre et la classe auteur. Dans l'exemple il n'y a que deux mais mon projet est beaucoup plus important une quinzaine de table dont certaines reliés avec des relations N-aire..
    Donc dans la classe auteur j'ai envie de faire complètement abstraction de comment est constitué la classe livre...
    Une autre solution?
    Thx

  4. #4
    mon_nom_est_personne
    Invité(e)
    Par défaut
    faux dans le propos mais je comprend ce que tu veux dire.
    Cette solution c'est pour collé a ton code. perso je travaillerais dans ce cas avec 3 classes :
    - auteur
    - livre
    - collection des methode d'acces db.

    je mettrais ta methode dans la 3eme classe et lui ferais retourner un array Et dans la classe auteur je ferais une methode de mapping entre le array retourne et la classe livre.
    Et au lieu de generé n class livre je pense qu'il serais plus malin que cette classe contienne n class livre (reflection patern il me semble).
    comme ca si tu change quelquechose au niveau de la db tu n'as que la methode db a changer et le reste roulera.

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Par défaut
    ça c'est de la réponse que j'aime!!!
    Merci!

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

Discussions similaires

  1. [WebForms][2.0] Accès BdD ou Web.config ?
    Par quanou dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 29/12/2005, 14h54
  2. Accés BDD Access sous MinGW Studio
    Par pottiez dans le forum C++
    Réponses: 1
    Dernier message: 01/12/2005, 12h47
  3. Optimisation temps d'accès Bdd des composants ADO
    Par Creenshaw dans le forum Bases de données
    Réponses: 14
    Dernier message: 07/06/2005, 17h09
  4. Accès BDD Oracle
    Par rgarnier dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2005, 15h03
  5. Erreur Accès BDD
    Par psyco2604 dans le forum ASP
    Réponses: 13
    Dernier message: 10/06/2004, 10h46

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