Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-06-2012 11:57:28

Neka
Membre
Date d'inscription: 19-06-2012
Messages: 13

[1.11.11] Supprimer avec plusieurs clés primaire

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
   

Code:

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

Code:

<?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

Code:

    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

Code:

<?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

 

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