Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-10-2009 09:43:41

sm
Membre
Date d'inscription: 23-10-2009
Messages: 23

[Résolu] Requête Delete

Bonjour,
voila j'ai un probleme avec ma requette delete ca ne marche pas, elle renvoi une erreur quand je fais ceci

Code:

$paiement = new Paiement();
$where = 'paiement.NUMPAIEMENT = cohtion.NUMPAIEMENT AND cohtion.NUMPERSONNE='.$id;
$paiement->delete($where);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

si qlq un a une idee, merci.

Dernière modification par Mr.MoOx (30-10-2009 22:53:05)

Hors ligne

 

#2 23-10-2009 10:16:33

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Requête Delete

Quand tu utilise Zend_Db_Table, je ne crois pas que tu puisses faire appel à d'autre table dans ton where.

Hors ligne

 

#3 23-10-2009 10:55:59

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [Résolu] Requête Delete

@sm : juste pour info (je pense que Mr Moox a raison pour l'explication) quelle erreur est renvoyée ?


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#4 23-10-2009 10:58:21

sm
Membre
Date d'inscription: 23-10-2009
Messages: 23

Re: [Résolu] Requête Delete

la suivante.

Fatal error: Uncaught exception 'Zend_Db_Statement_Exception' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cohtion.NUMPAIEMENT' in 'where clause'' in C:\wamp\www\SamaxSoft\library\Zend\Db\Statement\Pdo.php:238 Stack trace: #0 C:\wamp\www\SamaxSoft\library\Zend\Db\Statement.php(283): Zend_Db_Statement_Pdo->_execute(Array) #1 C:\wamp\www\SamaxSoft\library\Zend\Db\Adapter\Abstract.php(433): Zend_Db_Statement->execute(Array) #2 C:\wamp\www\SamaxSoft\library\Zend\Db\Adapter\Pdo\Abstract.php(230): Zend_Db_Adapter_Abstract->query('DELETE FROM `pa...', Array) #3 C:\wamp\www\SamaxSoft\library\Zend\Db\Adapter\Abstract.php(580): Zend_Db_Adapter_Pdo_Abstract->query('DELETE FROM `pa...') #4 C:\wamp\www\SamaxSoft\library\Zend\Db\Table\Abstract.php(1010): Zend_Db_Adapter_Abstract->delete('paiement', 'paiement.NUMPAI...') #5 C:\wamp\www\SamaxSoft\application\controllers\AdminController.php(125): Zend_Db_Table_Abstract->delete('paiement.NUMPAI...') #6 C:\wamp\www\SamaxSoft\library\Zend\Controller\Action.php(503): in C:\wamp\www\SamaxSoft\library\Zend\Db\Statement\Pdo.php on line 238

Hors ligne

 

#5 23-10-2009 11:08:51

Seubeu
Membre
Date d'inscription: 28-09-2009
Messages: 19

Re: [Résolu] Requête Delete

C'est certainement ca, mais il serait intéressant de dumper la requete SQL pour voir exactement smile

Hors ligne

 

#6 23-10-2009 15:50:12

sm
Membre
Date d'inscription: 23-10-2009
Messages: 23

Re: [Résolu] Requête Delete

voila j'ai reussi a evité l'erreur en fusant comme ceci

Code:

    $paiement = new Paiement();
    $sql = 'select NUMPAIEMENT from cohtion where NUMPERSONNE = ' . $id;
    $result = (int)$paiement->fetchRow($sql);
    $where = 'NUMPAIEMENT = ' . $result;
    $paiement->delete($where);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

mais je vois que mon enregistrement n'a pas etait supprimer dans ma table paiement

Dernière modification par Mr.MoOx (23-10-2009 16:02:57)

Hors ligne

 

#7 23-10-2009 16:07:26

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Résolu] Requête Delete

Malheureusement je pense que la ligne suivante ne doit pas te retourner ce que tu veux

Code:

 $result = (int)$paiement->fetchRow($sql);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Essayes

Code:

 $result = (int)$paiement->fetchRow($sql)->NUMPAIEMENT;
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Petite remarque tu devrais utiliser la notation des requêtes préparés
Ex:

Code:

    $paiement->delete(array('NUMPAIEMENT = ?' => $result));
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

C'est plus sécurisé car cela converti bien la valeur en mettant ce qu'il faut selon le type (quote par exemple etc).
http://julien-pauli.developpez.com/tuto … ge=zend-db

Hors ligne

 

#8 23-10-2009 20:21:09

sm
Membre
Date d'inscription: 23-10-2009
Messages: 23

Re: [Résolu] Requête Delete

Mr.MoOx j'ai essai vote suggetion mais ca n'aller pas et apres qlq modification la suppression marche mais a chaque fois c'est la premiere ligne de ma table paiement qui est supprimé. en fait la suppresion se fais sur 3 table

Code:

                $cohtion = new Cohtion();
                $sql = 'select NUMPAIEMENT from cohtion where NUMPERSONNE = ' . $id;
                $result = (int)$cohtion->fetchRow($sql)->NUMCOHTION;
                $where = 'NUMPERSONNE = ' . $id;
                $cohtion->delete($where);
                
                $personne = new Personne();
                $where = 'NUMPERSONNE = ' . $id;
                $personne->delete($where);
                
                $paiement = new Paiement();
                $where = 'NUMPAIEMENT = ' . $result;
                $paiement->delete($where);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Dernière modification par sm (27-10-2009 22:28:54)

Hors ligne

 

#9 30-10-2009 22:36:36

sm
Membre
Date d'inscription: 23-10-2009
Messages: 23

Re: [Résolu] Requête Delete

c'est réglé, voila comment j'ai fait.
merci.

Code:

                $cohtion = new Cohtion();
        $result = $cohtion->fetchRow('NUMPERSONNE = ' . $id)->NUMPAIEMENT;
        $where = 'NUMPERSONNE = ' . $id;
        $cohtion->delete($where);
                
                $personne = new Personne();
                $where = 'NUMPERSONNE = ' . $id;
                $personne->delete($where);

        $paiement = new Paiement();
        $where = 'NUMPAIEMENT = ' . $result;
        $paiement->delete($where);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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