bonjour,
voila j'ai alimenter une liste deroulante avec des categorie et ses ous_categorie dont voici le code:
ce code fonctionne nikel.
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 <?php $serveur = "localhost"; $admin = "root"; $mdp = ""; $base = "idealeparut"; $connexion = mysql_connect($serveur, $admin, $mdp); mysql_select_db($base, $connexion); // On récupère tous les articles, triés par catégorie, titre, référence. $req = 'SELECT c.nom_categorie,s.nom_sous_categorie FROM categorie_annonce as c, sous_categorie_annonce as s where s.num_categorie=c.id_categorie '; $res = mysql_query($req) or exit('Erreur: '.mysql_error()); $num_categorie = null; echo('<select name="categorie">'); while ($donnees = mysql_fetch_assoc($res)) { // Si on change de catégorie, on l'affiche dans le <select>. if ($donnees['nom_categorie'] !== $num_categorie) { $num_categorie = $donnees['nom_categorie']; echo('<optgroup label="'.$num_categorie.'">'); } //On ajoute "logiquement" notre <option>. echo('<option value="'.$donnees['num_categorie'].'">'.$donnees['nom_sous_categorie'].'</option>'); } echo('</select>'); ?>
mais je veut que quand on choisi une sous-catégorie de cette liste sa sous-sous-catégorie apparait dans une liste déroulante en dessous.
voila ce que j ai trouver:
page index.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
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 <?php $db = array( 'server' => 'localhost', 'user' => 'root', 'passwd' => '', 'name' => 'idealeparut' ); $mysqli = new mysqli($db['server'], $db['user'], $db['passwd'], $db['name']); if (0 !== mysqli_connect_errno()) { exit('Could not connect to database: ' . mysqli_connect_error()); } // categorie initiales $sql = 'SELECT c.nom_categorie,s.nom_sous_categorie FROM categorie_annonce as c, sous_categorie_annonce as s where s.num_categorie=c.id_categorie'; ?> <script type="text/javascript" src="categorie.js"></script> <form action="submit.php" method="post" id="form"> <p>Sélectionnez une categorie: <select name="categorie" id="categorie" onchange="updateDepartements(this.value)"> <?php if (FALSE !== ($res = $mysqli->query($sql)or exit('Erreur: '.mysql_error()))) { $num_categorie = null; echo('<select name="categorie">'); while ($donnees = mysql_fetch_assoc($res)) { // Si on change de catégorie, on l'affiche dans le <select>. if ($donnees['nom_categorie'] !== $num_categorie) { $num_categorie = $donnees['nom_categorie']; echo('<optgroup label="'.$num_categorie.'">'); } //On ajoute "logiquement" notre <option>. printf('<option value="%s">%s</option>', $row['num_categorie'], $row['nom_sous_categorie']); } $res->close(); } ?> </select> </p> <p>Sélectionnez une sous_categorie: <select name="categorie" id="categorie" onchange="updatesousCategorie(this.value)"> <?php if (FALSE !== ($res = $mysqli->query($sql))) { while ($row = $res->fetch_assoc()) { printf('<option value="%s">%s</option>', $row['id_categorie'], $row['nom_categorie']); } $res->close(); } ?> <p>Sélectionnez une sous-categorie: <select name="sous_categorie" id="sous_categorie"></select> </p> <p><input type="submit" value="Soumettre" /> </form>
page categorie.js:
rpc.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
37
38
39
40
41
42
43
44
45
46
47 var ajax; try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { if (typeof XMLHttpRequest!='undefined') { ajax = new XMLHttpRequest(); } } } function updatesousCategorie(categorie) { ajax.open('get', 'rpc.php?categorie=' + categorie); ajax.onreadystatechange = handleResponse; ajax.send(null); } function handleResponse() { if(ajax.readyState == 4) { var data = ajax.responseXML.getElementsByTagName('sous_categorie'); document.getElementById('sous_categorie').innerHTML = ''; for(var i=0;i<data.length;i++) { var option = document.createElement('option'); option.setAttribute('value',data[i].getAttribute("id")); option.appendChild(document.createTextNode(data[i].firstChild.nodeValue)); document.getElementById('sous_categorie').appendChild(option); } } } function initForm() { document.getElementById('categorie').selectedIndex = 0; updatesousCategorie(document.getElementById('categorie').value); } if (window.addEventListener) { window.addEventListener("load", initForm, false); } else if (window.attachEvent){ window.attachEvent("onload", initForm); }
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 <?php if (TRUE === isset($_GET['categorie'])) { $categorie = intval($_GET['categorie']); } else { exit; } require './config.inc.php'; $mysqli = new mysqli($db['server'], $db['root'], $db['passwd'], $db['name']); if (0 !== mysqli_connect_errno()) { exit('Could not connect to database: ' . mysqli_connect_error()); } header('Content-Type: text/xml; charset=UTF-8'); $dom = new DOMDocument('1.0', 'utf-8'); $message = $dom->createElement('message'); $message = $dom->appendChild($message); $sql = 'SELECT ref_sous_sous_categorie,libelle_sous_categorie ' . 'FROM sous_sous_categorie ' . 'WHERE num_sous_categorie=' . $categorie; if (FALSE !== ($res = $mysqli->query($sql))) { while ($row = $res->fetch_assoc()) { $souscategorie = $dom->createElement('souscategorie', utf8_encode($row['libelle_sous_catgeorie'])); $souscategorie = $message->appendChild($souscategorie); $souscategorie->setAttribute('id', $row['ref_sous_sous_categorie']); } $res->close(); } echo $dom->saveXML(); ?>
Partager