Académique Documents
Professionnel Documents
Culture Documents
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
+ 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 :
Estce 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'atil 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 : estil 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
> Fautil 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'atil 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 : estil 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
> Fautil 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'atil 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 fautil 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 fautil 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 celleci
Quel base de donnée utilisezvous ? 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 HautsdeSeine Alternance
Développeur php symfony 2 confirmé H/F
GeoKs Ile de France LevalloisPerret (92300) CDI
Expert frontend #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
Contacter le responsable de la rubrique Projets