Bonjour,
j'ai une variable ($db) dans index.php et je veux l'utiliser dans IndexController.php.
comment j'appelle cette variable à partir de IndexController.php?
merci d'avance.
Bonjour,
j'ai une variable ($db) dans index.php et je veux l'utiliser dans IndexController.php.
comment j'appelle cette variable à partir de IndexController.php?
merci d'avance.
Hello,
Quel lien y a t'il entre index.php et indexcontroler.php (formulaire, include, lien ...) ???
Hello,
Plusieurs solutions :
Tu l'as créé en tant que variable globale avec $GLOBALS['db'] = $db;
Et tu l'utilise avec $GLOBALS['db'] dans ton index.
Ou tu créé ta variable dans un singleton.
Ou tu crée un Zen_Conf
...
A+
tu peux aussi faire un setParam() sur l'instance de ton FrontController, ou bien te servir du registre.
merci bcp pour votre aide.
Voici mon problème en détail:
J'utilise un fichier config.ini contient les paramètres de la connexion à la base de données.
la variable $db est identifié dans la page index.php.
Je veux appeler la variable $db qui contient les même données.
J'ai fait le suivant:
dans index.php:
et dans IndexController.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $GLOBALS['db'] = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($GLOBALS['db']); $dbAdapter = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($GLOBALS['db']); Zend_Registry::set('dbAdapter', $GLOBALS['db']);
Mais ça m'affiche l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function listefactureAction() { $GLOBALS['db'] = $db; $req = "SELECT * FROM facture"; $this->view->lots = $db->fetchAll($req); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2Notice: Undefined variable: db in C:\wamp\www\Projet_facture\application\controllers\IndexController.php on line 27
Merci nicolas,
mais à quoi serre la fonction: setParam() ?
SVP donnez moi plus de détail.
C'est quoi ce code horrible et en double?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $GLOBALS['db'] = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($GLOBALS['db']); $dbAdapter = Zend_Db::factory($config->db->adapter, $config->db->config->toArray()); Zend_Db_Table::setDefaultAdapter($GLOBALS['db']);
ça fait 1000 fois que je dis que faire :
c'est lourd pour rien!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dbAdapter = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
formatte ton fichier .ini comme ceci :
et fais comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 db.adapter = PDO_MYSQL db.params.host = localhost db.params.username = root db.params.password = db.params.dbname = forum
ensuite tu fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dbAdapter = Zend_Db::factory($config->db);
et dans ton controleur tu fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part Zend_Db_Table::setDefaultAdapter($dbAdapter);
comme ça pas besoin de variable globale horrible ni de registre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dbAdapter = Zend_Db_Table::getDefaultAdapter();
j'ai fait comme tu m'a dit mais ça affiche cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Fatal error: Uncaught exception 'Zend_Db_Adapter_Exception' with message 'Configuration array must have a key for 'dbname' that names the database instance' in C:\wamp\www\test_zend\library\Zend\Db\Adapter\Abstract.php:243 Stack trace: #0 C:\wamp\www\test_zend\library\Zend\Db\Adapter\Abstract.php(174): Zend_Db_Adapter_Abstract->_checkRequiredOptions(Array) #1 C:\wamp\www\test_zend\library\Zend\Db.php(247): Zend_Db_Adapter_Abstract->__construct(Array) #2 C:\wamp\www\Projet lotissement\index.php(26): Zend_Db::factory(Object(Zend_Config)) #3 {main} thrown in C:\wamp\www\test_zend\library\Zend\Db\Adapter\Abstract.php on line 243
Soit tu ne l'as pas formatté que je l'ai fais, soit tu utilises une ancienne version du framework.
Partager