Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
J'aimerai pouvoir supprimer ce que j'apelle une présence.
Une présence = id_personne, id_plage, id_zone
Voila mon erreur.
Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id_plage = 1' in 'order clause'
#0 /var/www/CNRS/library/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 /var/www/CNRS/library/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#2 /var/www/CNRS/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#3 /var/www/CNRS/library/Zend/Db/Table/Abstract.php(1529): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 /var/www/CNRS/library/Zend/Db/Table/Abstract.php(1391): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#5 /var/www/CNRS/application/models/DbTable/TSeSituer.php(24): Zend_Db_Table_Abstract->fetchRow('id_personne = 2', 'id_plage = 1', 'id_zone = 1')
#6 /var/www/CNRS/application/controllers/UtilisateurController.php(67): Application_Model_DbTable_TSeSituer->obtenirPresence('2', '1', '1')
Je vois qu'il apelle la colonne plage =1 au lieu de plage mais quand j'ai une seule clé primaire mon fetch row fonctionne bien.
Ce que je fais quand je veux obtenir une personne
public function obtenirPersonne($id) { $id = (int)$id; $row = $this->fetchRow('id_personne = ' . $id);
Ca c'est mon code pour essayer de supprimer une présence :
Model
<?php class Application_Model_DbTable_TSeSituer extends Zend_Db_Table_Abstract { protected $_name = 'SE_SITUER'; protected $_primary = array ('id_personne', 'id_plage', 'id_zone'); protected $_referenceMap = array ( 'personne' => array( 'columns' => 'id_personne', 'refTableClass' => 'Application_Model_DbTable_TPersonne',), 'plage' => array( 'columns' => 'id_plage', 'refTableClass' => 'Application_Model_DbTable_TPlage',), 'zone' => array( 'columns' => 'id_zone', 'refTableClass' => 'Application_Model_DbTable_TZone',), ); protected $_rowClass = 'Application_Model_DbTable_TSeSituerRow'; public function obtenirPresence($id_p, $id_pl, $id_z) { $row = $this->fetchRow('id_personne = ' . $id_p,'id_plage = ' . $id_pl, 'id_zone = ' . $id_z ); if (!$row) { throw new Exception("Impossible de trouver la personne $id_p ou la plage $id_pl ou la zone $id_z"); } return $row->toArray(); } public function supprimerAlbum($id_personne, $id_plage, $id_zone) { $id=array($id_personne, $id_plage, $id_zone); $this->delete($id); } }
UtilisateurController
public function supprimerAction() { if ($this->getRequest()->isPost()) { $supprimer = $this->getRequest()->getPost('supprimer'); if ($supprimer == 'Oui') { $id_p = $this->getRequest()->getPost('id_personne'); $id_pl = $this->getRequest()->getPost('id_plage'); $id_z = $this->getRequest()->getPost('id_zone'); $presences = new Application_Model_DbTable_TSeSituer(); $presences->supprimerPresences($id_p,$id_pl, $id_z); } $this->_helper->redirector('index'); } else { $id_p = $this->_getParam('id_personne',0); $id_pl = $this->_getParam('id_plage',0); $id_z = $this->_getParam('id_zone',0); $presences = new Application_Model_DbTable_TSeSituer(); $this->view->Presences = $presences->obtenirPresence($id_p,$id_pl, $id_z); } }
view supprimer
<?php $this->title = "Supprimer un album"; $this->headTitle($this->title); ?> <p>Êtes-vous sûr de vouloir supprimer '<?php echo $this->escape($this->TSeSituer['id_plage']); ?>' ? </p> <form action="<?php echo $this->url(array('action'=>'supprimer')); ?>" method="post"> <div> <input type="hidden" name="id_p" value="<?php echo $this->TSeSituer['id_personne']; ?>" /> <input type="hidden" name="id_pl" value="<?php echo $this->TSeSituer['id_plage']; ?>" /> <input type="hidden" name="id_z" value="<?php echo $this->TSeSituer['id_zone']; ?>" /> <input type="submit" name="supprimer" value="Oui" /> <input type="submit" name="supprimer" value="Non" /> </div> </form>
Merci de votre lecture
Dernière modification par Neka (22-06-2012 11:59:09)
Hors ligne
Pages: 1