IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

Recherche avancée Ajax + datatable


Sujet :

MkFramework

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 23
    Points : 26
    Points
    26
    Par défaut Recherche avancée Ajax + datatable
    Bonjour,

    J'ai besoin d'afficher sur une même page un datable selon les critères de recherche.
    C'est à dire quand l'utilisateur arrive sur sa page, on lui présente des liste déroulantes
    liées et en fonction des critères choisies dans les listes, on affiche dans un datatable le résultat
    sur une même page.
    J'aimerais savoir si vous pourrez m'aider à trouver une solution.

    Merci d'avance.

    Voici en pièce image une illustration de ce que j'aimerais.
    Nom : Recherche.JPG
Affichages : 326
Taille : 50,2 Ko

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Vous avez deux solutions:

    VOus faites un formulaire en haut, et à chaque modification du menu déroulant, via un onChange (dans le champ input select) vous rechargez la page

    Ainsi, votre appel datatable change en fonction de ce nouveau parametre

    ou, dans le menu deroulant, au onCHange, vous appelez uen fonction javascript qui va changer l'adresse json qui alimente datable
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    Merci pour votre réponse, mais j'ai du mal à récupérer dans ma liste json les valeurs de la liste déroulante pour faire le filtre: je fais un _root::getParam de mes variables, mais ça n'a pas l'air de fonctionner.
    Voici le code de mon controleur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    public function _list()
        {
            $oTable = new module_datatables;
            $oTable->enableSearchEachColumn();		
            $oTable->setId('myTableId');    
            $tJoinmodel_table1 = array();
            $tJoinmodel_table2 = array();
     
            if (_root::getParam('idGroup')) {
                //recuperation de la liste 1 pour remplir la liste deroulante
                $tJoinmodel_table1 = model_table1::getInstance()->getSelectByGroupId(_root::getParam('idGroup'));
                if (_root::getParam('param2')) {
                    ////recuperation de la liste 2 pour remplir la liste deroulante
                    $tJoinmodel_table2 = model_table2::getInstance()->getSelectByParam2Id(_root::getParam('param2'));
                }
            }
     
            $oView = new _view('mycontroler::list');
     
            $oView->tJoinmodel_table1 = $tJoinmodel_table1;
            $oView->tJoinmodel_table2 = $tJoinmodel_table2;
     
            $oPluginXsrf = new plugin_xsrf();
            $oView->token = $oPluginXsrf->getToken();
     
            $oTable->setJsonLink('mycontroler::listJson');
            $oTable->setListLimit(array(10, 20));
     
            $oTable->setDefaultSort('desc');
     
            $oTable->setDefaultSortField('colonne1');
     
            $oTable->addColumn('COLUMN1', 'colonne1');
            $oTable->addColumn('COLUMN2', 'colonne2');
            $oTable->addColumn('COLUMN3', 'colonne1');
     
            $oView->datatable = $oTable->build();
            $this->oLayout->add('main', $oView);
     
        }
     
    	 public function _listJson()
        {
    		if (_root::getParam('param1')) {
    			//récupération du paramètre 1
    		}
    		if(_root::getParam('param2')){
    			//récupération du param2
    		}
     
            $oJson = module_datatables::getJson();
            $oJson->setSortFieldAllowed(array('colonne1'));
            $oJson->addColumn('colonne1');
            $oJson->addColumn('colonne2');
            $oJson->addColumn('colonne3');
     
     
            if ($oJson->hasFilter()) {
                $count = model_mymodel::getInstance()->findTotalFiltered($oJson->getListFilter());
                $oJson->setTotal($count);
                $tData = model_mymodel::getInstance()->findListFilteredAndLimitOrderBy($oJson->getListFilter(), $oJson->getStart(), $oJson->getLimit(), $oJson->getSortField(), $oJson->getSortSide());
            } else {
                $count = model_mymodel::getInstance()->findTotal();
                $oJson->setTotal($count);
                $tData = model_mymodel::getInstance()->findListLimitOrderBy($oJson->getStart(), $oJson->getLimit(), $oJson->getSortField(), $oJson->getSortSide());
            }
            $oJson->setData($tData);
            $oJson->show();
        }

  4. #4
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Vous pouvez essayez avec ce module datatable

    Vous avez ici une nouvelle methode pour envoyer les parametre à la page json qui retournera les resultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $oTable->setJsonLink('mycontroler::listJson');
    $oTable->setJsonParameter(array('param1'=>1,'param2'=>2) );
    Fichiers attachés Fichiers attachés
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    Merci ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Recherche avancée] que les resolus
    Par ould dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 10
    Dernier message: 13/09/2005, 20h43
  2. [Composite] Gestion d'une recherche avancée
    Par Loctar dans le forum Design Patterns
    Réponses: 12
    Dernier message: 23/06/2005, 18h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo