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

Outils MySQL Discussion :

Mapping classe PHP <=> table MySQL


Sujet :

Outils MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut Mapping classe PHP <=> table MySQL
    Bonjour,

    J'aurais besoin de vos conseils, sur le mapping classe/table en php.

    Ce que je voudrais faire, c'est pour une table comportant 2 champs :
    personne(nom,prenom)

    Créer une classe php
    class personne{
    var $nom;
    var $prenom;
    }

    puis créer un objet personne :
    $pers1=new personne();
    pers1->nom="aa";
    pers1->prenom="aaa";

    et enfin trouver un moyen pour que cette classe s'insère dans ma base de données, c'est à dire un insert avec comme champs le nom des attributs, et comme valeur leur valeur.

    je ne sais pas si ca existe déjà, où si il faut passer par autre chose...

    merci d'avance pour votre aide !

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Deja un membre comme toi devrais savoir que


    Ensuite tu devrais plutot utiliser des setter que tu pourrait ensuite modifier pour qu'il mettent a jour ton champ


    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
     
    class personne{
    var $nom;
    var $prenom;
     
    function setNom($new_nom) {
      $this->nom = $new_nom;
      $this->updateChamp('nom', $new_nom);
    }
     
    function setPrenom($new_prenom) {
      $this->prenom = $new_prenom;
      $this->updateChamp('prenom', $new_prenom);
    }
     
    function updateChamp($nom_champ, $valeur_champ) {
      //requete de mise a jour
    }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $pers1=new personne();
    $pers1->setNom('aa');
    $pers1->setPrenom('aaa');

    L'autre methode consiste a creer une methode save par exemple qui mets tous les champs a jour en une seule fois.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    Membre du Club Avatar de liza83
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 52
    Points : 63
    Points
    63
    Par défaut
    C'est tout de même dangereux d'agir ainsi avec la base de données. Le nombre d'appel à la base sera vite conséquent si l'application prend une certaine ampleur ou bien encore si elle accueille beaucoup d'utilisateurs.

    J'aurai plutot tendance à utiliser des pattern existants pour la POO (DAO notamment) dans le but de réaliser le mapping d'une part et la persistance de la données d'autre part. Après, si tu ne tiens pas à t'immiscer dans ce genre de DP, contente toi d'un simple personne->saveOrUpdate() plutot qu'une mise à jour en base à chaque setter réalisé. Ca limitera largement ces appels (imagine que ta personne ait 20 attributs, cela ferait tout de même un sacré nombre de requêtes à balancer pour mettre à jour tout l'objet.

    Voila, c'etait mon humble avis

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    salut
    et pourquoi pas utilisé des bibliothèque existante propel, adobd, sdo ....

  5. #5
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Citation Envoyé par liza83
    C'est tout de même dangereux d'agir ainsi avec la base de données. Le nombre d'appel à la base sera vite conséquent si l'application prend une certaine ampleur ou bien encore si elle accueille beaucoup d'utilisateurs.

    J'aurai plutot tendance à utiliser des pattern existants pour la POO (DAO notamment) dans le but de réaliser le mapping d'une part et la persistance de la données d'autre part. Après, si tu ne tiens pas à t'immiscer dans ce genre de DP, contente toi d'un simple personne->saveOrUpdate() plutot qu'une mise à jour en base à chaque setter réalisé. Ca limitera largement ces appels (imagine que ta personne ait 20 attributs, cela ferait tout de même un sacré nombre de requêtes à balancer pour mettre à jour tout l'objet.

    Voila, c'etait mon humble avis
    D'ou ma derniere phrase
    Mais c'etait juste pour expliquer exactement ce que vallica voulait faire.
    Mais il existe bien evidement des pattern bien plus adapte.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    Tout d'abord merci beaucoup pour vos réponses, et désolé pour les balises codes, j'ai rédigé le post en vitesse.

    Effectivement j'ai des tables qui auront plus de 40 champs, d'où l'impossibilité de réaliser des appels successifs en bdd, de toute façon mon idée de départ est de réaliser cette opération en une seule requête.

    Ce que je voulais surtout savoir c'est quels sont les outils qui permettent de faire ce genre de choses assez "facilement", car je viens du monde J2EE, et je n'ai pas toutes les notions de vocabulaire (apparement vous appellez pattern ce que j'aurais appellé framework O/R) du monde php.

    Je vais essayer de me renseigner sur les noms qu'a cité jeff_!.

  7. #7
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    pattern c'est pour design pattern qui n'ont rien a voir avec le langage.
    Ce sont des "bonnes facon de faire". (tu en as sur a peu pres tout)
    Les plus connu ou en vogue sont singleton, factory, mvc, ....
    Le mapping O/R existe aussi en PHP.
    Regarde plutot Propel par exemple.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Points : 316
    Points
    316
    Par défaut
    ca marche, je vais voir avec propel alors.

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

Discussions similaires

  1. [MySQL] classe php pour faire un update table mysql
    Par legrandse dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/05/2011, 15h52
  2. Liens des pages PHP avec un table mysql
    Par xunil2003 dans le forum Langage
    Réponses: 3
    Dernier message: 23/03/2010, 15h41
  3. Recherche d'un plugin Mysql table => class PHP
    Par Dalai-Lama dans le forum NetBeans
    Réponses: 2
    Dernier message: 17/02/2009, 18h20
  4. Réponses: 2
    Dernier message: 06/12/2007, 15h11
  5. Insérer des données d'un tableau php dans une table mysql
    Par tom43 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 02/08/2006, 09h38

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