begin process at 2012 05 29 01:55:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

Framework

 > 

Ajax

 > 

Ajout de optgroup dans select en ajax


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ajout de optgroup dans select en ajax

jeudi 18 février 2010 à 17:12:05 | Ajout de optgroup dans select en ajax

cla85


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 :

Code PHP :
<?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.

Merci de vos réponses


mercredi 24 février 2010 à 16:01:12 | Re : Ajout de optgroup dans select en ajax

cla85

Je n'ai pas eu de réponse, mais j'ai trouvé par moi même ! Je la met, ça peut aider certains :

Code PHP :
<?php
include("../config/main.php");

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($query);
	echo 'document.getElementById("niveau_2").innerHTML=null;';
	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"])).'");';

}else{
	$query="SELECT * FROM rubrique WHERE code_pere_rubrique = '".$_POST["niveau1"]."'";
	$result=mysql_query("SET NAMES, 'utf8'");
	$result=@mysql_query($query);
	echo 'document.getElementById("niveau_2").innerHTML=null;';
	echo 'var theSel = document.getElementById("niveau_2");';
	echo 'theSel.options.length = 0;';
	while ($r = mysql_fetch_array($result)){
		echo 'var optGrp = document.createElement("optgroup");';
		echo 'optGrp.label="'.stripslashes(utf8_encode($r["libelle_rubrique"])).'";';
		$sql5="SELECT * FROM rubrique WHERE code_pere_rubrique='".$r['code_rubrique']."'";
		$result5 = mysql_query ($sql5) or die ('Erreur : '.mysql_error());
		while ($r5 = mysql_fetch_array($result5)){
			echo 'var item = new Option();';
			echo 'optGrp.appendChild(item);';
			echo 'item.value = "'.$r5["code_rubrique"].'";';
			echo 'item.text = "'.stripslashes(utf8_encode($r5["libelle_rubrique"])).'";';	

		}
	echo 'theSel.appendChild(optGrp);';
	}
}
?>





Cette discussion est classée dans : code, select, rubrique, rubriques, catégories


Répondre à ce message

Sujets en rapport avec ce message

Problème de récupération de valeures AJAX [ par fogof ] Bonjour, J'ai un petit soucis, j'ai une fonction pour effectuer une requète en AJAX : [code=js]function recup_libelle_rubriques(id_rubrique_recherch Trier des SELECT [ par whombat ] Bonjour à tous, J'avais un problème : disposant de plusieurs sur la même page, je souhaitais que celui qui était choisi, utilisé par le visiteur, r selectionné un élément dans mon select [ par KaiHo ] Bonjour Je me trouve face à un souci qui me semblait simple à résoudre, mais je sèche. En fait, j'ai un élément "select" d'un formulaire qui doit se Ajouter un champs a un select [ par michaelminelli1 ] Bonjour, J'ai dans une page html un champs select : [code=html] Toto [/code] Je cherche a faire en sorte que en appuyant sur l'image un champs j Select multiple récupèration des options [ par bruno9173 ] Bonsoir, Je débute en javascript et je bloque depuis une journée sur la récupération dans une variable de l'ensemble des valeurs même non sélectionné Function changerimage. [ par userrrqi115 ] Hello, Voilà j'explore la création de page web depuis peu. Et là j'arrive sur un os : J'ai dans une page (html) un SELECT (id="Sel") et une image des onchange sur un select [ par Metabolicman ] Bonjour,  Je suis en train de développer un intranet et au niveau de ma gestion des droits j'ai un petit problème. J'affiche la liste de tous mes memb [AJAX] Lier deux listes déroulantes [ par beegeezzz ] Salut les développeurs,J'aimerais créer une page avec 4 listes déroulantes liées.J'ai une première liste déroulante qui s'alimente correctement, je ne Génération des champs select et input dynamique / Listes liées [ par daris ] Bonjour;J'essaie de générer deux(2) listes liées et aussi des input dynamiquement avec ajax et javascript mais dure dure...Mon code ne marche pas norm Problème de compatibilié avec Netsape [ par thebigbang ] bonjour à vous, j'ai ce code js qui tourne bien sous IE, mais sous netscape ce ne marche pas du tout.L'argument select représente un select sur la pag


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales