cla85
Messages postés15Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention10 novembre 2010
-
18 févr. 2010 à 17:12
cla85
Messages postés15Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention10 novembre 2010
-
24 févr. 2010 à 16:01
Bonjour,
Voici une petite question :
J'ai une table rubrique qui contient les champs "code_rubrique", "libelle_rubrique" et "code_pere_rubrique".
certaine rubrique sont sur 2 niveaux et d'autres sur 3 : je m'explique : certaines catégories ont une sous-catégorie intermédiaire alors que d'autres non. J'ai par exemple la catégorie "audio" qui possède les sous-catégories "prise de son" ou "mixage" contenant elle-même des rubriques telles que "consoles analogiques ou "haut-parleurs" alors que d'autres catégories comme "événementiel" contient directement les rubriques "tribunes" ou "chapiteaux".
J'ai donc deux select, le premier pour la catégories et le deuxième pour les sous-catégories et rubriques ou les rubriques le cas échéant.
Ce que qui s'affiche dans le deuxième dépend de ce que je sélectionne dans le premier bien évidemment.
Jusque là tout va bien, pour celles possédant 2 niveaux. Pour ceux avec 3 niveaux je voudrais afficher les sous-catégories sous forme de optgroup dans mon select mais que pour ceux-là.
Voilà où j'en suis dans mon code php appelé par la fonction javascript elle-même appelée par l'évènement onChange de mon premier select :
<?php
include("../config/main.php");//j'inclus le fichier de connexion
//Ici : premier cas ou la catégorie ne fait pas partie des catégories à 3 niveaux : ça fonctionne
if ($_POST["niveau1"]!="S" && $_POST["niveau1"]!="A" && $_POST["niveau1"]!="L" && $_POST["niveau1"]!="SE"){
$query="SELECT * FROM rubrique WHERE code_pere_rubrique = '".$_POST["niveau1"]."'";
$result=mysql_query("SET NAMES, 'utf8'");
$result=@mysql_query($query);
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
while($r = mysql_fetch_array($result))
{
echo 's.options[s.options.length] = new Option("'.stripslashes(utf8_encode($r["libelle_rubrique"])).'","'.$r["code_rubrique"].'");';
}
//Ici : deuxième cas ou la catégorie fait partie des 4 catégories qui posent pb
}else{
$query="SELECT * FROM rubrique WHERE code_pere_rubrique = '".$_POST["niveau1"]."'";
$result=mysql_query("SET NAMES, 'utf8'");
$result=@mysql_query($query);
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
echo 'objSelect = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
while ($r = mysql_fetch_array($result)){
echo 'optGroup[s.options.length] = document.createElement("optgroup")';
echo 'optGroup.label[s.options.length] = "'.stripslashes(utf8_encode($r["libelle_rubrique"])).'"';
$sql5=mysql_query("SELECT * FROM rubrique WHERE code_pere_rubrique='".$r['code_rubrique']."'");
$result5=mysql_query("SET NAMES, 'utf8'");
$result5=@mysql_query($sql5);
while ($r5=mysql_fetch_array($result5)){
echo 'objOption[s.options.length]=document.createElement("option")';
echo 'objOption[s.options.length].innerHTML = "'.stripslashes(utf8_encode($r5["libelle_rubrique"])).'"';
echo 'objOption[s.options.length].value = "'.$r5["code_rubrique"].'" ';
echo 'optGroup.appendChild(objOption[s.options.length])';
}
echo 'objSelect.appendChild(optGroup[s.options.length])';
}
}
?>
En fait j'ai essayé d'adapter ce que j'ai trouver pour l'<option> au <optgroup> mais apparemment ça plaît pas et je n'ai rien trouver sur le net qui puisse correspondre.
Je ne pense pas être loin du but mais c'est ça le plus frustrant.