1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2009
    Messages : 20
    Points : 23
    Points
    23

    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 : 21
Taille : 50,2 Ko

  2. #2
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 4 801
    Points : 18 536
    Points
    18 536
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2009
    Messages : 20
    Points : 23
    Points
    23

    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
    Ingénieur développement
    Inscrit en
    décembre 2006
    Messages
    4 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2006
    Messages : 4 801
    Points : 18 536
    Points
    18 536
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    décembre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2009
    Messages : 20
    Points : 23
    Points
    23

    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