Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je suis en stage dans une entreprise qui utilise le zend framework que je ne connaissais pas du tout avant d'être ici.
Mon supérieur technique est en maladie, il ne m'a pas expliqué grand chose et là j'ai une erreur sur le post d'un nouveau sondage.
L'erreur apparait quand je consulte le sondage sur le site mais se valide bien dans la partie admin.
Je vous copie colle l'erreur ci dessous , moi de mon coté j'ai upload tous les fichiers nommés dans l'erreur, j'ai regardé les lignes qu'ils indiquaient mais à part que c'est un problème de paramètre , je ne vois pas d'où cela vient.
Merci de votre aide.
The following error occurred:
exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[HY093]: Invalid parameter number: no parameters were bound' in
/home/okarito/sd/groupement-dem/library/Zend/Db/Statement/Pdo.php:238
Stack trace:
#0 /home/okarito/sd/groupement-dem/library/Zend/Db/Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/okarito/sd/groupement-dem/library/Zend/Db/Adapter/Abstract.php(433): Zend_Db_Statement->execute(Array)
#2 /home/okarito/sd/groupement-dem/library/Zend/Db/Adapter/Pdo/Abstract.php(230): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#3 /home/okarito/sd/groupement-dem/library/Zend/Db/Table/Abstract.php(1330): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 /home/okarito/sd/groupement-dem/library/Zend/Db/Table/Abstract.php(1158): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#5 /home/okarito/sd/groupement-dem/library/Kaimite/Db/AccesDonnees.php(244): Zend_Db_Table_Abstract->fetchAll(Object(Zend_Db_Table_Select))
#6 /home/okarito/sd/groupement-dem/app/modules/default/models/Reponses.php(18): Kaimite_Db_AccesDonnees->_infosDepuisSelect(Object(Zend_Db_Table_Select), 'Reponse')
#7 /home/okarito/sd/groupement-dem/app/modules/default/controllers/IndexController.php(170): Reponses->getReponsesFromSondage(NULL, false)
#8 /home/okarito/sd/groupement-dem/library/Zend/Controller/Action.php(503): IndexController->reponseAction()
#9 /home/okarito/sd/groupement-dem/library/Zend/Controller/Dispatcher/Standard.php(285): Zend_Controller_Action->dispatch('reponseAction')
#10 /home/okarito/sd/groupement-dem/library/Zend/Controller/Front.php(934): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#11 /home/okarito/sd/groupement-dem/www/index.php(114): Zend_Controller_Front->dispatch()
#12 {main}
Hors ligne
Bonjour,
Pour t'aider il nous faudra un peu plus de détail, du genre le code correspondant à l'erreur :
#6 /home/okarito/sd/groupement-dem/app/modules/default/models/Reponses.php(18): Kaimite_Db_AccesDonnees->_infosDepuisSelect(Object(Zend_Db_Table_Select), 'Reponse') #7 /home/okarito/sd/groupement-dem/app/modules/default/controllers/IndexController.php(170): Reponses->getReponsesFromSondage(NULL, false)
A priori il s'agit d'une requète sql dans laquelle aucune valeur n'est associée à un champ.
Hors ligne
Bonjour
Merci de votre réponse vous trouverez ci dessous les codes demandés :
reponses.php
<?php
class Reponses extends Kaimite_Db_AccesDonnees {
/**
* Le nom de la table
* @var string
*/
protected $_name = 'reponse';
public function getReponsesFromSondage($sid,$pourAdmin = true){
$select = $this -> select() -> from($this -> _name, 'uid') ->where("actif = '1'")-> where ("`poubelle` = '0'") -> where("`id_question` = ? ", $sid);
$select -> order ("reponse ASC");
if ( !$pourAdmin ) {
$select -> where ("`actif` = '1'");
}
return $this -> _infosDepuisSelect ($select, "Reponse"); // LIGNE ERREUR 18
}
public function getReponses($son_id,$pourAdmin = false){
$select = $this -> select() -> from("reponse", 'uid') ->where("actif = '1'")-> where ("`poubelle` = '0'") -> where("`id_question` = ? ", $son_id);
if ( !$pourAdmin ) {
$select -> where ("`actif` = '1'");
}
$select -> order ("reponse ASC");
return $this -> _infosDepuisSelect ($select, "Reponse");
}
public function deleteReponses($son_id){
$where = $this -> getAdapter() -> quoteInto('id_question = ?', (int) $son_id);
$this -> delete($where);
}
}
?>
indexcontroller.php
je vous copie la fonction où se trouve l'erreur
public function reponseAction(){
$sond = new Sondages();
$sondage = $sond->getLastSondages();
if(is_array($sondage) && count($sondage)==1){
$sondage[0]->recupererInfosPourWeb();
$this->view->sondage = $sondage[0]->infosWeb['texte'];
$this->view->uid = $sondage[0]->infosWeb['uid'];
$repon = new Reponses();
$reponse = $repon->getReponsesFromSondage($sondage[0]->infosWeb['uid'],false); // LIGNE ERREUR 170
$this->view->reponsesSondage=array();
if(is_array($reponse)){
foreach($reponse as $rep){
$rep->recupererInfosPourWeb();
//print_r($rep->infosWeb);
$this->view->reponsesSondage[$rep->infosWeb['uid']] = $rep->infosWeb['reponse'];
}
}else{
$this->view->reponsesSondage = " ";
}
}else{
$this->view->sondage = " ";
}
return;
}
merci à vous.
Hors ligne
Quelle est la valeur de $sondage[0]->infosWeb['uid'] ? (sid dans le reste du code)
Essaye de faire un var_dump ou un Zend_Debug::dump de ton $sondage au pire.
Je verrais bien un problème de ce côté là : si $sondage[0]->infosWeb['uid'] est undifined, on peut considérer $sid comme null, donc lors du ->where("`id_question` = ? ", $sid), on va avoir sid == null donc une erreur dans l'attribution des paramètres dans le SQL, l'erreur est donc levée lors de l'exécution du SQL (je pense, mais il faudrait aussi le contenu de _infosDepuisSelect pour le garantir).
Hors ligne