Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour;
j'ai besoin de vous s'il vous plaît
voici mon code :
$db = Zend_Db_Table_Abstract::getDefaultAdapter(); $list = $db->select(); $list->from('table-n') ->where('toto_id LIKE ?', '%'.$var1.'%') ->where('tata_id LIKE ?', '%'.$var2.'%') ->where('titi_id LIKE ?', '%'.$var3.'%') ->where('tita_cat LIKE ?', '%'.$var4.'%'); $db->query($list); $paginator = Zend_Paginator::factory($list); $paginator->setItemCountPerPage(4) ->setPageRange(3) ->setCurrentPageNumber($this->_getParam('page',1));
les variable je les récupère via une formulaire j'ai pas de souci a ce niveau par contre je cherche a passer ses variable aux zend_paginator pour offrir quelques critère de recherche à l'utilisateur je vois pas ou est le problème j'ai aucun exception par contre mon champ de recherche ne me sort pas les résultat selon les critères de recherches.
Hors ligne
Voici un bout de code comme exemple.
Dans le contrôleur
..... $pa = new mqualPA ( );// mqualPA est le nom de la classe de mon modèle $select=$pa->getPAActions ($id_pa,$filtre,$username );// les paramètres passés sont récupérés à partir d'un formulaire pour construire la requête. $page = Zend_Paginator::factory($select); $page->setPageRange(10); $page->setCurrentPageNumber($this->_getParam('page',1)); $page->setItemCountPerPage($this->_getParam('par',20)); $this->view->liste = $page;//Je pense qu'il manque dans ton code le passage du résultat de ton $paginator à la vue
Dans la vue
foreach ($this->liste as $pa): echo $pa['objet'].<br>; echo ..... endforeach; echo $this->liste;// affiche la pagination
J'espère que ça répond à ta question
Dernière modification par ziedb (25-11-2009 13:35:10)
Hors ligne
déjà je vous remercie beaucoup pour ta réponse pour la vue tout marche bien j'arrive a affiché la pagination des pages par contre je crois que mon problème se situe au niveau de init()
public function init() { $request= $this->getRequest(); $form = new Form_Rechercher(); $this->view->TitrePage('titre de la page'); $this->view->form=$form; if($request->isPost()) { if($form->isValid($this->_request->getPost())) { $tit = ""; $reg =$form->getValue('elem1'); $dep =$form->getValue('elem2'); $cat =$form->getValue('elem3'); $r =$form->getValue('elem4'); $this->rechercherAction($var1="$r", $var2="", $var3="$reg", $var4="$dep", $categories="$cat"); } } }
j'ai utiliser init() pour afficher le formulaire sa marche bien mais une fois j'envoie les résultat après un echo $var1.'-'.$var2.'-'.$var3.'-'.$var4.'-'.$var5.'</br>'; j'ai deux résultat une avec les valeur de formulaire et une avec des valeur vide de ce genre ---- puisque j'utilise - comme séparateur
j'ai l'impression que init renvoie les valeur deux fois a la fonction rechercher une avec les vrai valeur et une avec des valeur vide
j'espere que quelqu'un a une idée
Hors ligne
$this->rechercherAction($var1="$r", $var2="", $var3="$reg", $var4="$dep", $categories="$cat");
Je pense que l'écriture correcte est la suivante :
$this->rechercherAction($r, "", $reg, $dep, $cat);
Hors ligne
Merci pour tes réponses c'est très gentil les deux syntaxe marche bien mais le tien est plus élégant d'ailleurs c'est ce que je viens de mettre par contre j'ai toujours le même problème est ce que le syntaxe where et like est fonctionnelle? je pense que j'ai quelques chose qui cloche au niveau de mon select surtout au passage des variables
Hors ligne
bonsoir est ce que cet requette est valide:
$db = Zend_Db_Table_Abstract::getDefaultAdapter(); $list = $db->select(); $list->from('table-n') ->where('toto_id LIKE ?', '%'.$var1.'%') ->where('tata_id LIKE ?', '%'.$var2.'%') ->where('titi_id LIKE ?', '%'.$var3.'%') ->where('tita_cat LIKE ?', '%'.$var4.'%'); $db->query($list);
si quelqu'un a une meilleur solution s'il vous plait?
Hors ligne
Fanchement j'utilise pas trop cette écriture.
Je pourrais peut être vous suggérer d'utiliser $db->quote($var) pour les chaines de caractères.
Hors ligne
déjà merci pour vos réponse pour le $db->quote je vais essayer de me renseigner ailleurs sauf si ta un bout de code comme exemple
merci beaucoup ziedb
Hors ligne
Pour $db->quote() essayez cette écriture
->where('toto_id LIKE ?', $db->quote('%'.$var1.'%') )
Sinon, j'ai un doute sur la manipulation de la requête et de son résultat. Essayez de réecrire ainsi (s'il y a un problème essayer avec le $db->quote()) :
$db = Zend_Db_Table_Abstract::getDefaultAdapter(); $select = $db->select()->from('table-n') ->where('toto_id LIKE ?', '%'.$var1.'%') ->where('tata_id LIKE ?', '%'.$var2.'%') ->where('titi_id LIKE ?', '%'.$var3.'%') ->where('tita_cat LIKE ?', '%'.$var4.'%'); $statement=$db->query($select); // si tu as plusieurs lignes à récpérer $list=$statement->fetchALL() // s'il s'agit d'un seul enregistrement $list=$statement->fetch()
Bon, l'idéal est de fournir un code complet de rechercherAction ou au moins le bout de code qui utilise le résultat de cette requête
Hors ligne
Merci encore une autre fois pour ton aide et ton soutien, pour le moment ça marche bien le code est fonctionnel le souci vient de mon analyse j'ai pas fait attention avec la logique au niveau de la dernière where fallait la transformé en orwhere puisque la valeur est toujours null,
par contre je voulu opter pour ton code $db->quote et ça marche pas du tout néanmoins est ce que mon code est sécurisé
Hors ligne