Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
je souhaite utiliser les fonctions de Zend_Db pour mettre à jour ma base de donées mais je n'ai besoin de Zend QUE pour ça. J'ai regardé un peu à gauche à droite pour trouver de l'aide mais sans grand succès.
En fait mon architecture de dossier est totalement différente de celle conventionnelle de Zend framework donc je me demande si je peux utliser Zend_Db sans pour autant changer toute ma structure de dossier.
Pour en venir à mon problème, j'ai une classe qui a pour code (account.class.php) :
<?php require_once '../library/Zend/Loader.php'; include '../library/Zend/Db.php'; require 'connectdb.class.php'; class account extends Zend_Db { public function UsersConnect() { $a = new Connexion(); $db = $a->getAdapter(); // Pour une Connexion Zend DB, on peut ecrire cela : $liste = $db->fetchAll('SELECT * FROM Users'); foreach ($liste as $elt) { var_dump($elt); } } // Le fonction AddCount() permet d'ajouter un compte dans la BDD public function AddCount() { $rows = array( 'nom'=>'Simpson', 'prenom'=>'Bart', 'type'=>'a', 'login'=>'login', 'password'=>'password', 'telephone'=>'071512369', 'gsm'=>'0475236589', 'email'=>'homer@simpson.com', 'codepostal'=>'45789', 'ville'=>'Springfield', 'rue'=>'742, Evergreen Terasse', 'pays'=>'Belgique', 'born'=>'01011901',); $table = 'Users'; $affectedRows = $this->db->insert($table,$rows); $idInsere = $this->db->lastInsertId(); } } ?>
Pour me connecter à la base de donnée, je me sers d'un code trouvé sur internet qui est le suivant (connectdb.class.php) :
<?php //require_once ('Zend/Db.php'); require_once '../library/Zend/Loader.php'; require_once '../library/Zend/Db.php'; /** * Classe Connexion * * Cette classe réalise une Connexion à la Base de Données * @author * @version * */ class Connexion { /** * Connexion Base de Données * @access private * @static * @var Zend_DB */ public static $_db; /** * Connexion à la Base de Données */ public static function connect() { $params = array ("host" => "192.168.1.xxx", "dbname" => "xxx", "username" => "xxx", "password" => "xxx"); Connexion::$_db = Zend_Db::factory ( 'Pdo_Ibm', $params ); //Connexion::$_db->setFetchMode ( Zend_Db::FETCH_OBJ ); Zend_Db_Table::setDefaultAdapter($db); } /** * Constructeur de la classe Connexion * */ public function __construct() { // Si mon connecteur n'est pas défini alors on crée la connexion if (Connexion::$_db == NULL) { Connexion::connect ( ); } } /** * Retourne l'Adaptateur de la Base de Données * * @return Zend_DB */ public function getAdapter() { if (Connexion::$_db !== NULL) { return Connexion::$_db; } else { return false; } } }
Merci à qui peut m'aider
PS: J'avais oublié de donner le message d'erreur que je reçoit
Warning: require_once(../library/Zend/Loader.php) [function.require-once]: failed to open stream: No such file or directory in /mnt/sdb1/www/xxx/classes/account.class.php on line 2 Fatal error: require_once() [function.require]: Failed opening required '../library/Zend/Loader.php' (include_path='.:/usr/share/php:/usr/share/pear') in /mnt/sdb1/www/xxxs/classes/account.class.php on line 2
Dernière modification par abessems (25-02-2009 11:09:41)
Hors ligne
Bonjour,
Ca ne pose aucun problème de n'utiliser que Zend_Db. Tu n'as absolument pas besoin d'utiliser l'organisation de répertoires "standard" (disons celle du MVC) du Zend Framework.
Sinon je ne comprends pas bien pourquoi ta classe account hérite de Zend_Db. Ca ne me paraît pas utile (et pas pertinent, elle ne jouent pas le même rôle).
Pour en revenir plus concrètement à ton problème, ça vient des inclusions qui ne fonctionnent pas (il ne trouve pas les fichiers). Pour résoudre ton problème, le plus simple est d'utiliser les include_path. Ajoute ça au début de ton fichier.
set_include_path( "/le_répertoire_du_zf/library".PATH_SEPARATOR. get_include_path() );
Ensuite tu fais simplement
require_once ('Zend/Db.php');
A+, Philippe
Hors ligne
Merci pour ta réponse, malheureusement je ne parviens pas à faire fonctionner l'ensemble de façon cohérente donc je préfère perdre un peu de temps à faire des requètes SQL plutôt que de comprendre la logique du programme.
Merci quand même
Hors ligne
il n'y a aucune logique là
tu fait un require de Zend_Loader et le système te dit qu'il ne l'a pas
soit tu t'en sert et il te faut le mettre dans ton include pass soit tu l'utilise pas et tu ne le mets pas dans ton fichier de classe acount
A+JYT
Hors ligne
Je me suis finalement ravisé, après avoir corrigé un problème de PATH. J'utilise Zend_Db pour intéragir avec ma base de donnée et cela fonctionne correctement.
J'espère ne plus être confronté à trop de problèmes mais j'espère compter sur vous si jamais cela venait à arriver.
Bonne journée
Hors ligne