Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/08/2006, 11h27   #1
Membre confirmé
 
Inscription : septembre 2005
Messages : 724
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 724
Points : 267
Points : 267
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 !
vallica est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 12h30   #2
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
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 :
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 :
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
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 13h23   #3
Membre du Club
 
Avatar de liza83
 
Étudiant
Inscription : mai 2004
Messages : 52
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2004
Messages : 52
Points : 69
Points : 69
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
liza83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 13h35   #4
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
salut
et pourquoi pas utilisé des bibliothèque existante propel, adobd, sdo ....
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 14h01   #5
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
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
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 14h07   #6
Membre confirmé
 
Inscription : septembre 2005
Messages : 724
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 724
Points : 267
Points : 267
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_!.
vallica est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 14h14   #7
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
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
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2006, 14h27   #8
Membre confirmé
 
Inscription : septembre 2005
Messages : 724
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 724
Points : 267
Points : 267
ca marche, je vais voir avec propel alors.
vallica est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h23.


 
 
 
 
Partenaires

Hébergement Web