Vous êtes sur la page 1sur 14

Forums  

Tutoriels  Magazine  FAQs  Blogs  Chat  Newsletter  Études  Emploi  Club   Rechercher
Contacts

Accueil ALM Java .NET Dév. Web EDI Programmation SGBD Office Solutions d'entreprise Applications Mobiles Systèmes

Applications   Libres & Open Source   OpenOffice & LibreOffice   Projets

Forums   Gestionnaire de projets   Héberger votre projet

Identifiant   Mot de passe   S'identifier Aide S'inscrire

Actions Réseau social Blogs Agenda Règles Recherche avancée

Index du forum Applications Projets Projets hébergés MkFramework


Page de recherche avec pagination/tri des résulats ­ MainPrivate

+ Répondre à la discussion

Discussion: Page de recherche avec pagination/tri des résulats ­ MainPrivate 

Outils de la discussion Affichage

16/02/2015, 22h49 #1

ms400 
 Page de recherche avec pagination/tri des résulats ­ MainPrivate
Membre à l'essai
Bonjour, 

    Tout d'abord, je tenais à vous remercier pour votre framework ! 
Chercheur en informatique
Inscrit en: janvier 2015 J'ai commencé une application de gestion de consultants en utilisant vos divers tuto et le builder. 
Messages: 14 J'ai donc utilisé une authentification via le module MainPrivate, j'ai un module consultants avec une vue
Points: 14 de recherche sur plusieurs critères (5 inputs) dans une vue Search. 
Mon contrôleur gère la recherche et affiche dans la même vue les champs inputs, ainsi qu'un bouton qui
permet d'afficher juste en dessous les résultats. 
J'ai fait une autre vue List.php (que j'inclue dans mon search.php avec la fonction include pour ne pas
retaper tout le code) pour lister toutes les lignes et contrôler un peu les lignes affichées (avec une
requête findAll) dans un menu à part. 
J'ai utilisé le module de pagination du builder (complex4) sur la vue list.php. 

Résultat : lorsque je lance ma recherche, le tableau s'affiche bien en dessous des critères, mais dès que
je veux naviguer avec le module de pagination ou les tris, je perds les critères de ma recherche. 
Etant donné que j'ai la partie MainPrivate au début de mon URL, l'utilisation module::action me semble
du coup moins intuitive et je patauge un peu ... 

J'ai 2 questions : 
­ Est­ce que la composition d'une page de recherche et d'affichage de résultats sur une même vue est
correcte (sachant que dans le tuto, les résultats étaient affichés sur une vue list à part) 
­ Je pensais utiliser des variables de session pour garder en mémoire les critères de recherche : pensez­
vous que c'est une bonne idée, ou y'a­t­il un autre moyen comme transiter les variables via l'URL ? 

En vous remerciant par avance pour votre aide.

Répondre avec citation    0   0

16/02/2015, 23h15 #2

imikado 
Rédacteur
Bonsoir, 
Merci de votre intérêt, pour votre question: on se pose souvent la question, généralement je passe la
      pagination + liens de tris en POST: je transforme ainsi tout mon tableau en gros formulaire soumettant à
chaque fois 
Le champ de tri
La pagination
Le / les filtre(s)

Mais la solution de stoker en session est intéressante également, il faut par contre penser à la nettoyer
en quittant la page   
   
Ingénieur développement PS: pour l'include il y a peut etre moyen d'utiliser la gestion de vue du framework 
Inscrit en: décembre Pour info, vous pouvez faire plusieurs  
2006
Messages: 4 453 Code php : Sélectionner tout ­ Visualiser dans une fenêtre à part
Points: 16 880
Billets dans le blog: 4 1   
2 $this‐>oLayout‐>add('main',$oView);

On ajoute en dessous une nouvelle vue, on écrase pas 

Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/
(hebergé sur developpez.com)

Répondre avec citation    0   0

17/02/2015, 13h23 #3

ms400 
Membre à l'essai
Bonjour, 

    Merci pour votre réponse super rapide   
Chercheur en informatique
Inscrit en: janvier 2015
J'ai utilisé oLayout­>add sur mon module MainPrivate : 
Messages: 14
Points: 14
Code : Sélectionner tout ­ Visualiser dans une fenêtre à part
1 public function _search(){ 
2   $oModuleConsultants=new module_consultants(); 
3   // Vue Recherche ($sAction='_'.self::getParam('Action','search');   return $this‐>$sAction();)
4   $oView=$oModuleConsultants‐>_indexSearch(); 
5   $this‐>oLayout‐>add('main',$oView); 
6    
7   if(_root::getRequest()‐>isPost()){   
8     // Vue Résultats ($sAction='_'.self::getParam('Action','list');  return $this‐>$sAction();
9     $oView=$oModuleConsultants‐>_index(); 
10     $this‐>oLayout‐>add('main',$oView); 
11   } 
12 }

Ça fait en effet plus propre   Merci ! 

En revanche, je suis perdue pour mon pb de pagination : mon onglet qui liste tous les consultants et qui
pointe directement sur list fonctionne très bien (requête findAll) avec pagination + tri 
En revanche, sur mon onglet recherche, c'est toujours pas ça : 
1) je suis obligée de tester if(_root::getRequest()­>isPost()) dans mon mainPrivate, sinon les liens pour
éditer, afficher ou supprimer un consultant m'envoie sur une page où les infos sont affichées en double
(normal car on fait un add au Layout) ... mais du coup, je suis obligée de cliquer à chaque fois sur le
bouton Search pour afficher la page de résultats 
2) une fois la page résultats chargée, lorsque je clique sur une page ou que je fais un tri, ­ je dois encore
appuyer sur le bouton ­, et il me recharge alors toute la page search, donc je perds les critères 

Mes questions :  
­ pour mon test isPost : est­il placé au bon endroit ? ou sinon comment modifier mes lien dans le tableau
de résultats (actuellement : module_consultants::getLink('edit',array('id'=>$oConsultants­>getId()))) 
­ pour le pb de pagination, je voudrais essayer de transmettre mes critères en POST mais je ne sais pas
à quel niveau les transmettre   
­> Faut­il assigner mes critères avec GetParam au niveau du fichier complex4.php (qui semble poster les
paramètres order, page, side) ? 
­> Ou plutôt au niveau du formulaire search.php (peut­être en utilisant la méthode GET pour avoir les
critères dans l'URL, mais dans ce cas quel lien indiqué dans action du formulaire ? et où récupérer les
variables ? 

Je me faisais également une autre réflexion : étant donné que je gère mes critères dans une vue search
que je poste puis que j'utilise avec une méthode list pour afficher les résultats (qui récupère donc ces
variables pour effectuer la requête sql), y'a­t­il un moyen de ne rafraîchir que la vue Résultats (qui
affiche mon tableau de résultat : au final je ne devrais donc pas avoir à refaire ma requête à chaque
changement de page ou de tri ?) 

J'espère que je ne vous embête pas trop avec toutes ces questions ... 

Bonne journée.

Répondre avec citation    0   0

17/02/2015, 14h57 #4

imikado 
Rédacteur

 Envoyé par ms400 

      Bonjour, 

Merci pour votre réponse super rapide   

J'ai utilisé oLayout­>add sur mon module MainPrivate : 

Code : Sélectionner tout ­ Visualiser dans une fenêtre à part

   
Ingénieur développement 1 public function _search(){ 
Inscrit en: décembre 2   $oModuleConsultants=new module_consultants(); 
2006 3   // Vue Recherche ($sAction='_'.self::getParam('Action','search');   return $this‐>$sActi
Messages: 4 453 4   $oView=$oModuleConsultants‐>_indexSearch(); 
Points: 16 880 5   $this‐>oLayout‐>add('main',$oView); 
Billets dans le blog: 4 6    
7   if(_root::getRequest()‐>isPost()){   
8     // Vue Résultats ($sAction='_'.self::getParam('Action','list');  return $this‐>$sAct
9     $oView=$oModuleConsultants‐>_index(); 
10     $this‐>oLayout‐>add('main',$oView); 
11   } 
12 }

Ça fait en effet plus propre   Merci !

En effet c'est plus pratique   
 Envoyé par ms400 
En revanche, je suis perdue pour mon pb de pagination : mon onglet qui liste tous les consultants et qui
pointe directement sur list fonctionne très bien (requête findAll) avec pagination + tri 
En revanche, sur mon onglet recherche, c'est toujours pas ça : 
1) je suis obligée de tester if(_root::getRequest()­>isPost()) dans mon mainPrivate, sinon les liens pour
éditer, afficher ou supprimer un consultant m'envoie sur une page où les infos sont affichées en double
(normal car on fait un add au Layout) ... mais du coup, je suis obligée de cliquer à chaque fois sur le
bouton Search pour afficher la page de résultats

Si vous devez cliquez sur les liens present dans les resultats de recherche, vous devez amener sur une
page différente de votre page _search. 

 Envoyé par ms400 
2) une fois la page résultats chargée, lorsque je clique sur une page ou que je fais un tri, ­ je dois encore
appuyer sur le bouton ­, et il me recharge alors toute la page search, donc je perds les critères

L'idée de stoquer en session pourrait peut etre régler votre problème. 

 Envoyé par ms400 
Mes questions :  
­ pour mon test isPost : est­il placé au bon endroit ? ou sinon comment modifier mes lien dans le tableau
de résultats (actuellement : module_consultants::getLink('edit',array('id'=>$oConsultants­>getId())))

Oui il est placé au bon endroit pour afficher en dessous du moteur de recherche les resultats 

 Envoyé par ms400 
­ pour le pb de pagination, je voudrais essayer de transmettre mes critères en POST mais je ne sais pas à
quel niveau les transmettre   
­> Faut­il assigner mes critères avec GetParam au niveau du fichier complex4.php (qui semble poster les
paramètres order, page, side) ? 
­> Ou plutôt au niveau du formulaire search.php (peut­être en utilisant la méthode GET pour avoir les
critères dans l'URL, mais dans ce cas quel lien indiqué dans action du formulaire ? et où récupérer les
variables ?

Pour passer en parametre POST, il faudrait encadrer le formulaire de recherche d'une balise form, mais
vous risquez de rencontrer d'autre soucis, préferez utiisez la session pour stoquer les criteres de
recherche 

 Envoyé par ms400 
Je me faisais également une autre réflexion : étant donné que je gère mes critères dans une vue search
que je poste puis que j'utilise avec une méthode list pour afficher les résultats (qui récupère donc ces
variables pour effectuer la requête sql), y'a­t­il un moyen de ne rafraîchir que la vue Résultats (qui affiche
mon tableau de résultat : au final je ne devrais donc pas avoir à refaire ma requête à chaque changement
de page ou de tri ?)

La requete de tri étant effectuée coté SQL, il faudra donc recharger la requete coté base de donnée. 

Un tableau qui pourrait vous interesser: 
http://mkframework.com/telechargerModule_guriddo.html 

 Envoyé par ms400 
J'espère que je ne vous embête pas trop avec toutes ces questions ... 

Bonne journée.

Pas de soucis, ça me fait plaisir de vous aider. Merci d'utiliser ce framework 

Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/
(hebergé sur developpez.com)

Répondre avec citation    0   0

18/02/2015, 19h08 #5
ms400 
Membre à l'essai
Bonjour ! 

    Merci pour votre tableau mais j'ai préféré utilisé les variables de session pour garder la main sur le css
Chercheur en informatique du tableau car j'utilise bootstrap (d'ailleurs merci d'avoir intégré bootstrap à votre builder ... ça fait des
Inscrit en: janvier 2015 applications trop canons ^^) 
Messages: 14
Points: 14 Du coup, ça marche impec avec les variables de session. 
Voici ce que j'ai fait ­ si ça peut servir à d'autres   

Dans mainPrivate\main.php : j'initialise les variables de session correspondant à mes critères de
recherche 
Code : Sélectionner tout ­ Visualiser dans une fenêtre à part

1 class module_mainPrivate extends abstract_module{ 
2    
3   public function before(){ 
4   $this‐>oLayout=new _layout('bootstrap'); 
5   $this‐>oLayout‐>addModule('menu','menu::index'); 
6   // initialisation des variables de session utilisées dans le formulaire search 
7   if(isset($_SESSION['lastname'])){ } else {$_SESSION['lastname']='';} 
8   if(isset($_SESSION['firstname'])){ } else {$_SESSION['firstname']='';} 
9   }
10

Ensuite dans ma méthode list qui fait la recherche et appelle ma vue liste, je remplis mes variables de
session que si le formulaire de recherche a été posté, sinon je conserve les données de mes variables de
session 
Code : Sélectionner tout ­ Visualiser dans une fenêtre à part

1 if(_root::getRequest()‐>isPost()){   
2   $_SESSION['lastname']=_root::getParam('lastname'); 
3   $_SESSION['area_id']=_root::getParam('area_id'); 
4 } 
5 $tConsultants=$oConsultants‐>findPageSearch($sOrder,$sSide,$_SESSION['lastname'],$_SESSION['firstname']); 
6 $oView‐>tConsultants=$tConsultants;       
7 }
8
Du coup j'ai réussi à faire tout ce que je souhaitais grâce à vos nombreux tutoriels et à vos réponses sur
ce forum (encore merci) ­ et que j'aurais été incapable de faire sans votre framework !! 

Une dernière question ­ promis   
J'ai du mal à travailler avec les modules intégrables et les fonctions du framework qui initialise l'URL
(type getlink, redirect, etc). 
Par exemple, quand j'ai essayé d'intégrer le module Guriddo, je n'ai pas réussi à afficher le tableau
(j'avais une page toute blanche sans erreur mais blanche) ... je pense que le sas mainPrivate me
complexifie pas mal la compréhension d'appel des module::action. 
Quand faut­il utiliser module_xx::getlink() et _root::getlink() par exemple ? 

Autre exemple, sur ma page new consultant (url :
index.php?:nav=mainPrivate::consultants&consultantsAction=new), je souhaiterais 2 choses : 

1) que le bouton "Annuler" redirige vers ma page de recherche index.php?:nav=mainPrivate::search 
Or, j'essaie d'utiliser ce lien <?php echo module_consultants::getLink('search')?>, mais qui me redirige
vers index.php?:nav=mainPrivate::consultants&consultantsAction=search 
J'ai également essayé <?php echo _root::redirect('mainPrivate::search')?> mais je n'arrive plus à
accéder à la page depuis mon menu (lien utilisé au niveau du menu : $tLink=array('New consultant' =>
'mainPrivate::consultants&consultantsAction=new') 

2) qu'après la validation je sois redirigée vers ma vue show du consultant que je viens de créer, idem
même problème pour l'url à indiquer dans le champ action du formulaire POST 

Très bonne fin de journée.

Répondre avec citation    0   0

18/02/2015, 21h49 #6

imikado 
Rédacteur

 Envoyé par ms400 

      Bonjour !
Du coup j'ai réussi à faire tout ce que je souhaitais grâce à vos nombreux tutoriels et à vos réponses sur
ce forum (encore merci) ­ et que j'aurais été incapable de faire sans votre framework !!

Merci beaucoup pour ce partage ainsi que pour le compliment   
 Envoyé par ms400 
Une dernière question ­ promis   
J'ai du mal à travailler avec les modules intégrables et les fonctions du framework qui initialise l'URL (type
getlink, redirect, etc). 
    Par exemple, quand j'ai essayé d'intégrer le module Guriddo, je n'ai pas réussi à afficher le tableau
Ingénieur développement
(j'avais une page toute blanche sans erreur mais blanche) ... je pense que le sas mainPrivate me
Inscrit en: décembre
2006 complexifie pas mal la compréhension d'appel des module::action. 
Messages: 4 453 Quand faut­il utiliser module_xx::getlink() et _root::getlink() par exemple ?
Points: 16 880
Billets dans le blog: 4
La différence entre _root::getLink et module_xxx::getLink est simple: un module integrable étant
imbriqué au sein d'un autre module, ses liens doivent contenir les parametres du module parent ainsi
qu'un prefixe de variable afin d'éviter les colisions de variable 
Pour _root::getLink, il n'y a pas toutes ces contraintes: il génère juste un lien 

 Envoyé par ms400 
Autre exemple, sur ma page new consultant (url :
index.php?:nav=mainPrivate::consultants&consultantsAction=new), je souhaiterais 2 choses : 

1) que le bouton "Annuler" redirige vers ma page de recherche index.php?:nav=mainPrivate::search 
Or, j'essaie d'utiliser ce lien <?php echo module_consultants::getLink('search')?>, mais qui me redirige
vers index.php?:nav=mainPrivate::consultants&consultantsAction=search

Ici c'est en effet plutot le lien _root::getLink('mainPrivate::search') 

 Envoyé par ms400 
J'ai également essayé <?php echo _root::redirect('mainPrivate::search')?> mais je n'arrive plus à accéder
à la page depuis mon menu

A quel endroit avez vous mis cette redirection ? 
 Envoyé par ms400 
(lien utilisé au niveau du menu : $tLink=array('New consultant' =>
'mainPrivate::consultants&consultantsAction=new')

Le module menu généré automatiquement ne gère pas les parametres 

 Envoyé par ms400 
2) qu'après la validation je sois redirigée vers ma vue show du consultant que je viens de créer, idem
même problème pour l'url à indiquer dans le champ action du formulaire POST

Lorsque vous générez un module CRUD, une redirection est déjà en place, elle redirige vers la page de
listage, vous pouvez donc changer celle­ci   

Quel base de donnée utilisez­vous ? si c''est mysql/maraDb, cela peut etre tres simple 

Par exemple
Code : Sélectionner tout ­ Visualiser dans une fenêtre à part

1 $oRow=new row_matable; 
2 $oRow‐>monChamp='maValeur'; 
3 if($oRow‐>save()){ 
4  _root::redirect('monmodule::show',array('id'=>$oRow‐>id)); 
5 }
6

En effet, à l'enregistrement, l'id de l'objet est mis à jour avec la clé incrémental créée

Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/
(hebergé sur developpez.com)

Répondre avec citation    0   0
Répondre avec citation

18/02/2015, 23h00 #7

imikado 
Rédacteur

 Envoyé par ms400 

      Par exemple, quand j'ai essayé d'intégrer le module Guriddo, je n'ai pas réussi à afficher le tableau
(j'avais une page toute blanche sans erreur mais blanche)

Je viens d'ajouter un tutoriel pendant que je testais son implémentation 
http://mkframework.com/tutoriaux.html#tableguriddo 

Je pense que vous avez du oublier de copier le repertoire présent dans le répertoire "public" du module
    Gurrido   (j'avais fait l'erreur également)
Ingénieur développement
Inscrit en: décembre
2006
Messages: 4 453
Points: 16 880
Billets dans le blog: 4
Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/
(hebergé sur developpez.com)

Répondre avec citation    0   0

19/02/2015, 12h11 #8

ms400 
Membre à l'essai
Merci pour votre réponse qui m'a bien éclairée !  

    Je viens de saisir la différence entre redirect et getlink   
Chercheur en informatique
Inscrit en: janvier 2015
Du coup, l'URL dans mon menu est bien mainPrivate::consultants&consultantsAction=new (car je veux
Messages: 14
pouvoir créer rapidement un nouveau consultant) 
Points: 14
Au niveau de ma vue new.php, j'essayais de mettre <?php echo _root::redirect('mainPrivate::search')?>
au niveau de mon bouton "Retour" ... je n'avais pas percuté qu'on pouvait utiliser redirect dans le
contrôleur (ce qui après coup semble en effet bcp plus logique ^^) 
Donc au niveau du bouton Retour, j'ai mis en lien _root::getLink('mainPrivate::search'), avec la
redirection à la fin de ma méthode ProcesSave
_root::redirect('mainPrivate::consultants',array('consultantsAction'=>'show','consultantsid'=>$oConsult
_root::redirect('mainPrivate::consultants',array('consultantsAction'=>'show','consultantsid'=>$oConsult
ants­>id)); pour afficher la fiche du consultant fraichement créé 
ET CA MARCHE TROP NICKEL !!!!! c'est juste trop beau =) 

J'ai suivi votre tuto pour Guriddo et cela fonctionne ... je pense que lorsque j'avais testé j'avais mal
indiqué les liens des modules intégrables   en tout cas merci ! 

Je ne vous dérange plus et franchement merci pour la réactivité ! 

A bientôt et comptez sur moi pour faire de la pub pour votre framework =)

Répondre avec citation    0   0

19/02/2015, 12h21 #9

imikado 
Rédacteur
Merci beaucoup de ce retour, content de vous avoir aidé à régler votre soucis   

      N'hesitez pas à écrire des billets, tutoriaux ou autre, j'en ferais la promotion à mon tour 

Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/
(hebergé sur developpez.com)
   
Ingénieur développement
Inscrit en: décembre
2006
Messages: 4 453
Points: 16 880
Billets dans le blog: 4

Répondre avec citation    0   0

+ Répondre à la discussion Cette discussion est résolue.
Index du forum Applications Projets Projets hébergés MkFramework
Page de recherche avec pagination/tri des résulats ­ MainPrivate

OFFRES D'EMPLOI IT
Développeur au sein de l'équipe r&d global markets h/f
Société Générale ­ Ile de France ­ Hauts­de­Seine Alternance
Développeur php symfony 2 confirmé H/F
GeoKs ­ Ile de France ­ Levallois­Perret (92300) CDI
Expert front­end #angular2 #reactJS #javascrpitboy H/F
Urban Linker ­ Rhône Alpes ­ Lyon (69000) CDI

Voir plus d'offres   Voir la carte des offres IT   

« Discussion précédente | Discussion suivante »

Discussions similaires

Recherche avec pagination Réponses: 8
Par harkrisz dans le forum Langage Dernier message: 27/03/2013, 14h52

Liste avec dictionnaire, tri des clés et sélection des variables Réponses: 8
Par CandyCH dans le forum Général Python Dernier message: 07/12/2012, 21h56

probleme avec le tri des listes chainee Réponses: 6
Par djinpark1 dans le forum C Dernier message: 25/02/2009, 10h24

Moteur de recherche avec Excel dans des onglets ? Réponses: 1
Par jufabref dans le forum Macros et VBA Excel Dernier message: 04/07/2008, 13h51

Partager

             

Nous contacter  Developpez.com  Haut de page

Contacter le responsable de la rubrique Projets

Nous contacter Participez Hébergement Informations légales


Copyright © 2000­2016 ­ www.developpez.com

Vous aimerez peut-être aussi