Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PEAR > DB & MDB2
DB & MDB2 Forum d'entraide pour les bibliothèques DB et MDB2 du framework PEAR, permettant de manipuler les bases de données en PHP. Avant de poster -> tutoriels DB et MDB2
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 17/01/2008, 23h09   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 22
Points : 10
Points : 10
Par défaut recherche pro pear dataobjects

Bonjour a tous

j'ai repris un projet de dev web sur lequel est installé pear et qui utilise pear pour la couche d'abstraction à la base de données.

il n'est pas simple de trouver bcp de doc sur pear et des guides d'utilisation.

voici comment le projet a utilisé pear pour les accés à la bdd mysql

- les tables sous crées sous phpmyadmin
- un script 'createtables' génère les classes objets de chaque table de la bdd en etendant la classe db-dataobjects

- puis une classe appelé 'metier' étend la classe objet precedemment créee afin de rajouter dans cette classe des fonctions liées à la table (ex : insertion, maj, recherche etc etc)

pour utiliser dans un prog. php la table de la bdd, une instance de la table est crée : ex $obj_utilisateur = new utilisateur(); (utilisateur = une table de la bdd).

puis ajout de whereadd order by et fetch pour lire la table

jusque là tout me va (j'esperes avoir été clair).

La ou ca se corse........

les ex eveloppeurs n'ont jamais utilisé de jointure avec pear dataobjects ce qui n'est pas top.

j'ai utilisé la clause joinadd de pear mais cela necessite la maj d'un fichier .ini pour déclarer les cléfs étrangères et de plus dés qu'il y a 5 ou 6 tables avec des unions et des subselect, cela devient l'usine..............

voici la solution que j'ai trouvé pour me faciliter la tache.

je déclare directement une instance de la dataobjects et non une instance d'une ou plusieurs tables de la dataobject.

ensuite je fait un 'query pear' sur cette instance

$obj = new dataobjects();
$obj->query("select * from etc etc inner join etc etc......);

alors là tout va mieux ..........

est-ce ok ?

mais au bout du compte, si on requête de cette manière, a quoi sert alors d'utiliser pear ?

merci pour votre éclairage
herve42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2008, 17h37   #2
Nouveau Membre du Club
 
Inscription : mars 2004
Messages : 56
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 56
Points : 38
Points : 38
Bonjour,

Pour utiliser les fonctions de liaison auto de db_DataObject, il faut les activer puis générer le fichier .links.ini :
- L'option "generate_links" doit être sur true : ce paramètre devrait se trouver au même endroit que les variables de connexion à la base de donnée, surement un fichier .ini., section [DB_DataObject]
- Utiliser le "createTables" qui va créer un fichier nomDeLaBase.links.ini, à l'endroit dédié aux classes de la table.

Et en passant : Sauf exception justifiée, inutile de dériver les classes générées par createTables, car createTables garde tout le code écrit après l'instruction "#END_AUTOCODE".

a+
Damran

Edit: Il me semble qu'il faut aussi que la base (ici MySQL) soit dans un format gérant les contraintes relationnelles (les liaisons). Donc, MyISAM est à délaisser pour par exemple, InnoDB... à tester si ça ne marche pas.
Damran est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h58.


 
 
 
 
Partenaires

Hébergement Web