Bonjour,
Je souhaite obtenir une grille d'affichage avec une liste déroulante de sélection sur une colonne de la ligne, soit sur mon projet de test quelque chose qui ressemble à :
Quand on change de catégorie, seuls les films de la catégorie doivent s'afficher.
Sur le changement de catégorie la première fois cela fonctionne, mais plus ensuite.
Voici les extraits du code que j'utilise :
main.php
template2.php
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 <?php class module_film extends abstract_module{ public function before(){ $this->oLayout=new _layout('template2'); } public function _index(){ //on considere que la page par defaut est la page de listage $this->_list(); } public function _list(){ $tFilm=model_film::getInstance()->findAll(); $oView=new _view('film::list'); $oView->tFilm=$tFilm; $tabcat = model_categorie::getInstance()->getSelect(); array_unshift($tabcat, '*** Choisir une catégorie ***'); $oView->tCategorie = $tabcat; $oView->tJoinmodel_categorie=$oView->tCategorie; $this->oLayout->add('main',$oView); } public function _showajax() { $id = (isset($_GET['id'])) ? $_GET['id'] : '0'; $tFilm = model_film::getInstance()->findByCategorie($id); $oView = new _view('film::list'); $oView->tFilm=$tFilm; $tabcat = model_categorie::getInstance()->getSelect(); array_unshift($tabcat, '*** Choisir une catégorie ***'); $oView->tCategorie = $tabcat; $oView->tJoinmodel_categorie=$oView->tCategorie; echo $oView->show(); exit; }
Je pense que le problème vient du fait que la liste déroulante est regénérée à chaque appel Ajax.
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 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>mkfilms</title> <link rel="stylesheet" type="text/css" href="css/main.css" media="screen" /> <script src="js/main.js" type="text/javascript"></script> <script src="js/jquery.min.js" type="text/javascript"></script> <link rel="alternate" type="application/rss+xml" title="RSS" href="<?php echo _root::getLink('article::newsrss') ?>"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script type="text/javascript"> $(document).ready(function() { $('.select').on('change', function() { var value = $(this).val(); $.ajax({ url: 'index.php?:nav=film::showajax&id=' + value + '', success: function(response) { interprete(response); } }); }); function interprete(response) { $(".content").html(response); } }); </script> </head> <body> <div class="main"> <div class="menu"><?php echo $this->load('menu') ?></div> <div class="content"> <?php echo $this->load('main') ?> </div> </div> </body> </html>
Je ne vois pas comment recréer simplement le code du tableau seul. Pouvez-vous m'éclairer ?
Merci
Dominique
Partager