Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-10-2010 09:42:16

Siol
Membre
Date d'inscription: 11-02-2010
Messages: 20

[Zend 1.10] Comment faire appel a ma base de donnée ?

Bonjour,

J'ai configurer ma base de donnée en .ini dans le le fichier configuration.ini sa ressemble a ceci :

resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "localhost"
resources.db.params.dbname = "zend"
resources.db.params.username = "root"
resources.db.params.password = ""
resources.db.params.charset = UTF8

J'aimerais savoir comment appeler ma base de donnée pour faire une requête. J'ai essayé avec "$this->getAdapter();" mais sa ne marche pas. Voici le code en entier :

$db = $this->getAdapter();
       
$select = $db->select()
    ->from('products')
    ->where('visilibity = "0"')
    ->limit(5);
$query = $select->query();
       
$result = $query->fetchAll();

Merci,

Fabien.

Dernière modification par Siol (19-10-2010 09:42:42)

Hors ligne

 

#2 19-10-2010 09:58:19

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [Zend 1.10] Comment faire appel a ma base de donnée ?

Il te manque la configuration de ton front controller.
Voici ce que tu dois y ajouter :

Code:

try {
    $db = Zend_Db::factory($configMain->resources.db);
    $db->query("SET NAMES 'UTF8'");
    
    // passage de la connexion à toutes les classes passerelles
    Zend_Db_Table_Abstract::setDefaultAdapter($db);
} catch (Zend_Db_Exception $e) {
    // on passe l'exception sous silence, elle sera gérée dans le systême MVC plus tard 
    echo $e->getMessage();
}

Après tes classes vont hériter de de Zend_Db_Table puis dans pour faire un select tu n'auras qu'à écrire :

Code:

$select = $this->select();
$select->from(...);
...

Dernière modification par Godzinho (19-10-2010 10:00:08)

Hors ligne

 

#3 19-10-2010 12:08:07

Siol
Membre
Date d'inscription: 11-02-2010
Messages: 20

Re: [Zend 1.10] Comment faire appel a ma base de donnée ?

Je n'ai pas réussi exactement comme tu m'as dit, mais j'ai réussi a le faire comme sa via Boostrap.php :

protected function _initDb()
{
    try {
        $resource = $this->getPluginResource('db');
        $db = $resource->getDbAdapter();
           
        Zend_Db_Table_Abstract::setDefaultAdapter($db);
        } catch (Zend_Db_Exception $e) {
            echo $e->getMessage();
        }
       
        $select = $db->query('SELECT name FROM products LIMIT 5');
        $rows = $select->fetchAll();
       
        print_r($rows);
    }

Avec sa j'arrive a faire des requête Mysql depuis le Bootstrap mais comment en faire depuis un controller ? J'ai essayer $this->select() ou $this->db->select() ou $db->select() mais cela ne marche pas. Quel est la bonne syntaxe ?

Merci.

Hors ligne

 

#4 19-10-2010 12:31:09

Godzinho
Membre
Lieu: Toulouse
Date d'inscription: 15-10-2009
Messages: 58

Re: [Zend 1.10] Comment faire appel a ma base de donnée ?

Tu ne fais pas des requêtes depuis un controlleur mais depuis un modèle.
Tu es en MVC, donc les classes qui accèdent à la BD sont dans le modèle.
Chaque classe va hériter de la classe Zend_Db_Table.
Ainsi tu pourras faire appel à $this->select();

Hors ligne

 

#5 19-10-2010 13:17:29

Siol
Membre
Date d'inscription: 11-02-2010
Messages: 20

Re: [Zend 1.10] Comment faire appel a ma base de donnée ?

Ok merci pour les infos, je vais essayer de faire un modèle

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages