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

Zend_Db PHP Discussion :

connexion à la bdd en amont d'un db_select


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6
    Par défaut connexion à la bdd en amont d'un db_select
    Bonjour,

    Je désire effectuer une requête de sélection multitable dans mon contrôleur, sans forcément passer par une classe dbtable_matableXYZ en particulier.

    En lisant la doc de Db_Select, les exemples utilisent soit d'un objet $db déjà instancié, soit propose d'utiliser Zend_Db::factory avec des options non explicitées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $db = Zend_Db::factory( ...options... );
    $select = $db->select();
    Ce qui me rend perplexe, c'est que si j'utilise une classe dérivant de db_table_abstract, la connexion à la base se fait de manière transparente, en utilisant les paramètres stockés dans application.ini (et ça marche)
    mais si je veux utiliser un objet db_select, c'est à moi de récupérer tous les paramètres de connexion et de les transmettre à la factory...

    Y a-t-il pas un moyen plus simple d'instancier cet objet $db ? (en bref qu'est-ce que je mets à la place de ...options... pour dire de prendre les paramètres définis dans application.ini ?)
    D'avance merci pour votre éclairage.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 8
    Par défaut
    Pour obtenir une connexion via Zend_Db en utilisant la factory du Zend_Db tu dois passer en premier paramètre ton adaptater (MySql, Oracle, ...) et en deuxième paramètre un tableau contenant tes informations de connexion.

    Pour récupérer le $config ci dessous je t'invite à voir du coté du Zend_Config

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $db = Zend_Db::factory($config->database->adapter,
                                     $config->database->params->toArray());

  3. #3
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2008
    Messages : 71
    Par défaut
    Citation Envoyé par dblbass Voir le message
    Bonjour,

    Je désire effectuer une requête de sélection multitable dans mon contrôleur, sans forcément passer par une classe dbtable_matableXYZ en particulier.

    En lisant la doc de Db_Select, les exemples utilisent soit d'un objet $db déjà instancié, soit propose d'utiliser Zend_Db::factory avec des options non explicitées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $db = Zend_Db::factory( ...options... );
    $select = $db->select();
    Ce qui me rend perplexe, c'est que si j'utilise une classe dérivant de db_table_abstract, la connexion à la base se fait de manière transparente, en utilisant les paramètres stockés dans application.ini (et ça marche)
    mais si je veux utiliser un objet db_select, c'est à moi de récupérer tous les paramètres de connexion et de les transmettre à la factory...

    Y a-t-il pas un moyen plus simple d'instancier cet objet $db ? (en bref qu'est-ce que je mets à la place de ...options... pour dire de prendre les paramètres définis dans application.ini ?)
    D'avance merci pour votre éclairage.
    Salut,

    Si tu utilises une structure d'application standard, il existe un moyen (bizarre, mais je n'ai pas trouvé mieux) de récupérer ton adaptateur par défaut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    $dbh = Zend_Db_Table::getDefaultAdapter();
    Je trouve ça tellement sale que j'ai opté pour une autre option dans mes applications :

    - je n'utilise pas le fichier application.ini pour stocker les paramètres de la BDD (de toute façon, c'est pour moi un problème de conception : la base de données n'étant pas forcément utilisée tout le temps, ses paramètres de connexion ne doivent pas être chargés en permanence dans l'ensemble de l'application).

    - je place ces informations dans un fichier ini séparé, que je charge au besoin via un objet Zend_Config, lorsque j'ai réellement besoin de me connecter à la base. Ca me permet en outre de ne pas forcément utiliser Zend_Db.


    PS : tu ne devrais pas effectuer de requête directement depuis ton controlleur : l'accès aux données est de la responsabilité du modèle. Cela te permet notamment de ne pas avoir à changer ton controlleur le jour où tu décides de modifier le système de stockage de données.En plus, tu risque d'avoir à dupliquer du code, car il est beaucoup plus difficile de rendre un controlleur réutilisable qu'un modèle.

Discussions similaires

  1. [ODBC] connexion à differentes BDD avec php et ODBC
    Par tigunn dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/12/2009, 12h17
  2. [VB+MySql]Une seule connexion à ma Bdd...
    Par Deejoh dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 28/01/2006, 11h08
  3. connexion à une bdd mysql en asp
    Par asetti dans le forum ASP
    Réponses: 3
    Dernier message: 31/10/2005, 18h31
  4. [Applet][MySQL] connexion à une BDD
    Par Michel38 dans le forum JDBC
    Réponses: 19
    Dernier message: 20/07/2005, 14h59
  5. Erreur de connexion à une BDD SQL Server 2000 avec BDE
    Par SchpatziBreizh dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/06/2005, 11h22

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