Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-05-2011 10:29:06

niusha
Nouveau membre
Date d'inscription: 13-05-2011
Messages: 4

[résolu][Zend_Db][1.11]

Bonjour à tous,

J'ai un problème pour transcrire une requête SQL en utilisant Zend_Db_Select :

Voici la requête (qui fonctionne) :

Code:

[lang=sql]SELECT * 
FROM Repondants,action 
WHERE action.id_rep='$idrep' 
AND Repondants.IDS=$idsurvey 
AND action.id_rep=Repondants.id_rep 
AND action.Date_Emission='$date_emission'

Voici comment je la traduit en utilisant Zend_Db_Select :

Code:

[lang=php]$filtre2 = "action.id_rep = ". $idrep . " AND repondants.IDS = " . $idsurvey . " AND action.id_rep = repondants.id_rep AND action.Date_Emission = " . $date_emission ;
            
               $select = $db->select()
                 ->from('repondants')
                 ->from('action')
                 ->where($filtre2);

$action_rowset=$db->fetchall($select->query());
$action_rowcount= count($action_rowset);

Malheureusement, cela ne fonctionne pas, et voici le message d'erreur :

Catchable fatal error: Object of class Zend_Db_Statement_Pdo could not be converted to string in C:\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Statement.php on line 204

Je ne trouve rien de concluant sur internet...

Merci d'avance de votre précieuse aide

Dernière modification par niusha (13-05-2011 15:21:47)

Hors ligne

 

#2 13-05-2011 12:00:21

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [résolu][Zend_Db][1.11]

Bonjour,

Je pense qu'un petit tour sur la doc serait le bienvenu : http://framework.zend.com/manual/fr/zend.db.select.html

Je ne rentrerai pas dans le détail, mais voici ce à quoi pourrai ressembler la requête.
Pensez à utiliser les jointures, cela rendra votre code plus lisible.

Code:

$table = $this->getDbTable();
$select = $table ->select()
                        ->from(.....)
                        ->joinLeft(...)
                        ->joinLeft(...)
                        ->where("action.id_rep=$idrep")
                        ->where("Repondants.IDS=$idsurvey")
                        ;

return $table->fetchAll($select)->toArray();

et pour visualiser la requête :

Code:

echo $select->__toString();

En espérant que cela vous donne de bonnes pistes.

Dernière modification par _Fuse_ (13-05-2011 12:05:25)

Hors ligne

 

#3 13-05-2011 15:15:10

niusha
Nouveau membre
Date d'inscription: 13-05-2011
Messages: 4

Re: [résolu][Zend_Db][1.11]

Bonjour et merci pour votre réponse.

J'ai résolu mon problème, voici la version corrigée de mon premier post qui fonctionne :

Code:

[lang=php]
$filtre2 = "action.id_rep = ". $idrep . " AND repondants.IDS = " . $idsurvey . " AND action.id_rep = repondants.id_rep AND action.Date_Emission = '" . $date_emission . "'";
            
               $select = $db->select()
                 ->from('repondants')
                 ->from('action')
                 ->where($filtre2);

               $action_rowset=$select->query()->fetchAll();
        $action_rowcount= count($action_rowset);

Erreur dans mon filtre, il manquait les ' ' autour de ma variable $date_emission qui est attendue en VARCHAR par la base de données

Erreur : ne pas utiliser $action_rowset=$db->fetchall($select->query()); mais comme je l'ai fait ci-dessus.

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