Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-01-2009 13:07:26

Chim
Membre
Date d'inscription: 24-12-2008
Messages: 34

Traduire un LIKE avec zend?

Bonjour a tous! Encore moi! (oh non pas lui!) lol

J'ai un petit turlupinement... Ouais c'est possible que ce soit pas français... M'enfin en tout cas je voudrais savoir comment on peut traduire un LIKE d'une requête sql... Parce que j'ai une requête et j'ai testé avec PhpMyAdmin, et elle marche seulement s'il y a un LIKE, et non un '=' ...

Donc je demande votre aide pour m'éclairer sur ce petit soucis ^^

Bonne journée a tous wink

Hors ligne

 

#2 08-01-2009 13:09:41

Guillhomme
Membre
Date d'inscription: 09-10-2008
Messages: 102

Re: Traduire un LIKE avec zend?

Bah suffit de mettre un LIKE a la place du '=' lol
je vois pas le probleme, sinon mets nous le code de la requete ...

Hors ligne

 

#3 08-01-2009 13:41:44

Chim
Membre
Date d'inscription: 24-12-2008
Messages: 34

Re: Traduire un LIKE avec zend?

Voila le code wink

Code:

                $select = $news->select()
                ->from('news')
                ->where($news->news = "%".$form->getValue('recherche')."%");

Et si je met un LIKE a la place de mon '=' il me met :

Code:

Parse error: syntax error, unexpected T_STRING in C:\wamp\www\zfmvc-projetIntra\application\controllers\AdminController.php on line 320

Et ma ligne 320 est juste au dessus ^^

Hors ligne

 

#4 08-01-2009 14:03:44

Phil
Membre
Lieu: Lyon
Date d'inscription: 10-10-2008
Messages: 58

Re: Traduire un LIKE avec zend?

Ça marcherait peut-être mieux comme ça.. :x

Code:

    $select = $news->select()
                ->from('news')
                ->where($news->news .'LIKE "%'.$form->getValue('recherche').'%"');

Hors ligne

 

#5 08-01-2009 14:06:16

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Traduire un LIKE avec zend?

Chim a écrit:

Voila le code wink

Code:

                $select = $news->select()
                ->from('news')
                ->where($news->news = "%".$form->getValue('recherche')."%");

Et si je met un LIKE a la place de mon '=' il me met :

Code:

Parse error: syntax error, unexpected T_STRING in C:\wamp\www\zfmvc-projetIntra\application\controllers\AdminController.php on line 320

Et ma ligne 320 est juste au dessus ^^

simplement parcequ'avec ton = ton code est déjà faux

Code:

                $select = $news->select()
                ->from('news')
                ->where($news->news ."= %".$form->getValue('recherche')."%");

tu faisait une affectation au membre news de ton objet news
mais je déconseille cette écriture

Code:

                $select = $news->select()
                ->from('news')
                ->where(
                    $db->quoteInto(" ? = %:recherche%", $news->news)
                );
                $select->execute(array('recherche' => $form->getValue('recherche')));

et plus sur et propre
A+JYT

Dernière modification par sekaijin (08-01-2009 14:07:36)

Hors ligne

 

#6 08-01-2009 14:13:13

Chim
Membre
Date d'inscription: 24-12-2008
Messages: 34

Re: Traduire un LIKE avec zend?

Je vous remercie de vos réponses et m'excuse de mon étourdissement...

Mais pour la dernière solution de sekaijin, à quoi correspond le $db? hmm

Hors ligne

 

#7 08-01-2009 14:40:20

Fuggerbit
Membre
Date d'inscription: 17-12-2008
Messages: 54

Re: Traduire un LIKE avec zend?

Chim a écrit:

Je vous remercie de vos réponses et m'excuse de mon étourdissement...

Mais pour la dernière solution de sekaijin, à quoi correspond le $db? hmm

$db = $news->getAdapter();

wink

Hors ligne

 

#8 08-01-2009 14:47:14

Chim
Membre
Date d'inscription: 24-12-2008
Messages: 34

Re: Traduire un LIKE avec zend?

Erf, je vais passer pour un lourd, mais j'ai encore une erreur qui me dit que :

Code:

Message: Unrecognized method 'execute()'

Et comme je suis en train d'utiliser des methodes que je n'assimile pas forcément, j'ai du mal à voir ce qui cloche hmm

Hors ligne

 

#9 08-01-2009 17:17:37

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Traduire un LIKE avec zend?

Hello,

Si je me rappelle sekaijin est en 1.0.4, donc en 1.7.2 il faut faire :

Code:

$select = $news->select()
                ->from('news')
                ->where($news->getAdapter()->quoteInto(" ? = %:recherche%", $news->news));
// et
$stmt = $news->getAdapter()->query(array('recherche' => $form->getValue('recherche'))); // pour un stat
// ou
$rows = $news->getAdapter()->fetchAll(array('recherche' => $form->getValue('recherche'))); // pour un rowset

Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#10 09-01-2009 09:58:33

Chim
Membre
Date d'inscription: 24-12-2008
Messages: 34

Re: Traduire un LIKE avec zend?

Bonjour,

Je viens d'essayer ce que tu m'as écris, mais ça ne marche pas, il ne reconnait pas le $news de la clause where()

J'ai pas trop compris pourquoi, mais il ne l'aime pas...

Code:

Notice: Undefined property: News::$news in C:\wamp\www\zfmvc-projetIntra\application\controllers\AdminController.php on line 323

Warning: preg_split() expects parameter 2 to be string, array given in C:\wamp\www\zfmvc-projetIntra\library\Zend\Db\Statement.php on line 124

Warning: Invalid argument supplied for foreach() in C:\wamp\www\zfmvc-projetIntra\library\Zend\Db\Statement.php on line 128

Warning: PDO::prepare() expects parameter 1 to be string, array given in C:\wamp\www\zfmvc-projetIntra\library\Zend\Db\Statement\Pdo.php on line 65

Fatal error: Call to a member function setFetchMode() on a non-object in C:\wamp\www\zfmvc-projetIntra\library\Zend\Db\Statement\Pdo.php on line 426

Il y a peut etre quelque chose que j'ai oublié de configurer?

Hors ligne

 

#11 09-01-2009 10:25:11

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Traduire un LIKE avec zend?

Hello,

Fais en sorte que $news->news vaut qqch.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#12 09-01-2009 16:01:22

Chim
Membre
Date d'inscription: 24-12-2008
Messages: 34

Re: Traduire un LIKE avec zend?

Bon en fait c'était bien le $news qui foirait, mais pourquoi?

J'ai tout repris depuis le début, et maintenant ça fait ce que je voulais wink

Je vous met le code, même s'il n'est pas très académique, je m'en fiche, puisqu'il fonctionne! tongue

Code:

    function rechercheAction(){
        $this->view->title = "C'est le titre!";
        $form = new RechercheForm();
        $form->setAction('recherche');
        $form->setMethod('POST');
        $form->submit->setLabel('Rechercher');
        $this->view->form = $form;
        if ($this->_request->isPost()) {
            $formData = $this->_request->getPost();
            if ($form->isValid($formData)) {
                $recherche = '%'.$form->getValue('recherche').'%';
                $d = new News();
                $select = $d->select()
                ->where('news LIKE   ? ', $recherche);
                $this->view->news=$d->fetchAll($select);
                $this->view->cb = count($d->fetchAll($select));
            }
        }

    }

Edit: Comment ai-je pu oublié??

Un grand merci à vous pour vous être autant penché sur le sujet wink MERCI !

Dernière modification par Chim (09-01-2009 16:03:27)

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