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

MVC PHP Discussion :

Erreur avec Zend_Db_Select


Sujet :

MVC PHP

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut Erreur avec Zend_Db_Select
    je suis entraine tester une requete simple sur une table avec Zend_Db_Select, et je me retrouve avec une erreur que je connai pas sont origine.
    Le code est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      function indexAction()
    	   {
    		$this->view->title = "Mes livres";
    		Zend_Loader::loadClass("Zend_Db_Select");
    		$db = Zend_Registry::get("dbAdapter");
    		$select = $db->select()->from('livres','*');
                    $this->view->livres = $db->fetchAll($select);
    	}
    et l'erreur est:
    Notice: Trying to get property of non-object in C:\xampp\htdocs\testZend\application\views\scripts\index\index.phtml on line 12

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Peux tu nous montrer le code dans index.phtml?

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    le code est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?php echo $this->render('header.phtml'); ?>
    <h1><?php echo $this->escape($this->title); ?></h1>
    <p><a href="<?php echo $this->baseUrl; ?>/index/ajouter">Ajouter un nouvel livre</a></p>
    <table>
    <tr>
    <th>Titre</th>
    <th>Auteur</th>
    <th>Edition</th>
    <th>&nbsp;</th>
    </tr>
    <?php foreach($this->livre as $livre) : ?>
    <tr>
    <td><?php echo $this->escape($livre->titre);?></td>
    <td><?php echo $this->escape($livre->auteur);?></td>
    <td><?php echo $this->escape($livre->edition);?></td>
    <td>
    <a href="<?php echo $this->baseUrl; ?>/index/modifier/id_livre/<?php
    echo $livre->id_livre;?>">Modifier</a>
    <a href="<?php echo $this->baseUrl; ?>/index/supprimer/id_livre/<?php
    echo $livre->id_livre;?>">Supprimer</a>
    </td>
    </tr>
    <?php endforeach; ?>
    </table>
    <?php echo $this->render('footer.phtml'); ?>

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Si je compte 12 lignes, je tombe sur
    tu es sûr de toi?

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    excuser moi, le code precedent est celui d'une autre programme.
    le bon code est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php echo $this->render('header.phtml'); ?>
    <h1><?php echo $this->escape($this->title); ?></h1>
    <table>
    <tr>
    <th>Titre</th>
    <th>Auteur</th>
    <th>Edition</th>
    <th>&nbsp;</th>
    </tr>
    <?php foreach($this->livres as $livre) : ?>
    <tr>
    <td><?php echo $this->escape($livre->titre);?></td>
    <td><?php echo $this->escape($livre->auteur);?></td>
    <td><?php echo $this->escape($livre->edition);?></td>
    </tr>
    <?php endforeach; ?>
    </table>
    <?php echo $this->render('footer.phtml'); ?>
    Merci.

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    es tu sûr de ta connexion à ta base de données?

  7. #7
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    Avec ce code la connexion marche tres bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    class IndexController extends Zend_Controller_Action
    {
    	function init()
    	{
    		$this->initView();
    		Zend_Loader::loadClass('Livres');
    		$this->view->baseUrl = $this->_request->getBaseUrl();
    	}
    	function indexAction()
    	{
    		$this->view->title = "Mes livres";
    		$livre = new Livres();
    		$this->view->livres = $livre->fetchAll();
    	}
    }

  8. #8
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    et si tu fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = $db->select()->from('livres','*')->query();

  9. #9
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    Non, elle m'affiche tjrs le meme ereurs, qui est:
    Notice: Trying to get property of non-object in C:\xampp\htdocs\testZend\application\views\scripts\index\index.phtml on line 12.
    Vous avez un petit exemple utilisant le Zend_Db_Select?
    Merci.

  10. #10
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    d'ordinaire je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $select = new Zend_Db_Select($db); 
    $select->from('livres','*');  
    $result = $select->query();

  11. #11
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    je crois que la requete retourne un objet qui ne correspond au tableau dans index.phtml.

  12. #12
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $select = new Zend_Db_Select($db); 
    $select->from('livres','*');  
    $result = $select->query();
    aucune erreur et les donnees aussi ne sont pas affiché

  13. #13
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    essaye juste ça pour voir si ta connexion est vraiment ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $rows = $db->query('SELECT * FROM livres')->fetchAll();
    echo $rows[0]['titre'];

  14. #14
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    comme d'habitude ça n'a rien donné, la connexion est etabli dans le bootstrap par par un fichier config.ini dont le code du boot... est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // load configuration
    $config = new Zend_Config_Ini('./application/config.ini', 'general');
    $registry = Zend_Registry::getInstance();
    $registry->set('config', $config);
    // setup database
    $db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
    $dbAdapter = Zend_Db::factory($config->db->adapter,$config->db->config->toArray());
    Zend_Db_Table::setDefaultAdapter($db);
    Zend_Registry::set('dbAdapter', $db);

  15. #15
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Dans ton bootstrap fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error_reporting(E_ALL|E_STRICT);
    Zend_Controller_Front::getInstance()->throwExceptions(true);
    et fais ta connexion dans la méthode init() de ton controleur comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $db = Zend_Db::factory($config->db);
    $db->getconnection();
    Zend_Db_Table::setDefaultAdapter($db);
    avec ton fichier .ini formaté comme ceci :
    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
    en mettant les bonnes valeurs.

  16. #16
    Membre averti
    Inscrit en
    Février 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 18
    Par défaut
    je crois que l'erreur vient du fait que l'objet retourné par Zend_Db_Select, est un objet issu de la jointure d'au moins deux tables.

Discussions similaires

  1. Erreur Avec Interbase
    Par smokemon dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/10/2004, 07h24
  2. Erreur avec procédure LockWorkStation ...
    Par simonseztech dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h33
  3. [Débutant][Conception] Erreur avec une classe interne
    Par Devil Redneck dans le forum Général Java
    Réponses: 5
    Dernier message: 11/06/2004, 15h45
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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