Réceptionner la valeur de 4 listes déroulante

Fermé
kurosaki_itchigo Messages postés 1 Date d'inscription mardi 6 mai 2008 Statut Membre Dernière intervention 6 mai 2008 - 6 mai 2008 à 10:24
 korusaki_itchigo - 16 mai 2008 à 20:52
Bonjour,

j'ai trouvé un script JAVASCRIPT, celui-ci fait en sorte que la 4ème liste déroulante dépende de la 3ème qui dépende de la seconde et que celle-ci dépende de la première.

Le problème c' est que je n'arrive pas à réceptionner les valeurs de ces 4 listes :

<form action="reception.php" method="POST">
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
var menu=new CreerMenu(4,"Sélectionnez...","Sélectionnez...","Sélectionnez...","Sélectionnez...","_blank","");
menu.Add(1,"Tutorial","");
	menu.Add(2,"Développement Web","");
		menu.Add(3,"PHP","");
		  menu.Add(4,"Fonction","");
		  menu.Add(4,"Autre","");
      		  
		menu.Add(3,"ASPX","");
		menu.Add(3,"ASP","");
		menu.Add(3,"HTML","");
		menu.Add(3,"XHTML","");
		menu.Add(3,"DHTML","");
		menu.Add(3,"XML","");
		menu.Add(3,"AJAX","");
		menu.Add(3,"CSS","");
		menu.Add(3,"JAVASCRIPT","");
		menu.Add(3,"DHTML","");
		menu.Add(3,"RAILS","");
		menu.Add(3,"APACHE","");
		menu.Add(3,"SQL","");
		menu.Add(3,"FLASH","");

	menu.Add(2,"Programmation","");
		menu.Add(3,"C","");
		menu.Add(3,"C+","");		
		menu.Add(3,"C++","");		
		menu.Add(3,"C#","");		
		menu.Add(3,"Delphi","");		
		menu.Add(3,"Python","");		
		menu.Add(3,"Java","");		
		menu.Add(3,"Visual Basic","");		
		menu.Add(3,"DotNET","");
		menu.Add(3,"DOS","");
		menu.Add(3,"MS-Office","");
		menu.Add(3,"Autre","");
		
	menu.Add(2,"Graphisme","");
		menu.Add(3,"3D","");
		menu.Add(3,"2D","");
		menu.Add(3,"Autre","");
				
	menu.Add(2,"Logiciel","");
		menu.Add(3,"Photoshop CS3","");
		menu.Add(3,"Illustrator CS3","");
		menu.Add(3,"Dreamweaver CS3","");
		
	menu.Add(2,"Serveur","");
				
	menu.Add(2,"Hack - Sécurité","");
		menu.Add(3,"Réseau","");
		menu.Add(3,"System d'exploitation","");
		menu.Add(3,"Logiciel","");
		menu.Add(3,"Site - Serveur","");
		menu.Add(3,"Autre","");
						
	menu.Add(2,"Jeux - Console","");
		menu.Add(3,"PS1","");
		menu.Add(3,"PS2","");
		menu.Add(3,"PS3","");
		menu.Add(3,"PSP","");
		menu.Add(3,"Wii","");
		menu.Add(3,"Xbox","");
		menu.Add(3,"Xbox 360","");
		menu.Add(3,"Game boy","");
		menu.Add(3,"Game boy color","");
		menu.Add(3,"Game boy advence","");
		menu.Add(3,"Game cube","");
		menu.Add(3,"PC","");
		menu.Add(3,"Autre","");
						
	menu.Add(2,"Hébergement - Site - Forum - Blog","");
						
	menu.Add(2,"Autre","");
		
menu.Add(1,"Présentation","");
	menu.Add(2,"Nouvelles Techologies","");
	menu.Add(2,"Site - Forum - Blog","");
	menu.Add(2,"Jeux - Console","");
	menu.Add(2,"Logiciel","");
	menu.Add(2,"Autre","");

menu.Add(1,"Définition","");
	menu.Add(2,"Vocabulaire informatique","");
	menu.Add(2,"Autre vocabulaire","");
		
menu.Add(1,"Presse","");
	menu.Add(2,"Actualité","");
		menu.Add(3,"Informatique","");
		menu.Add(3,"Autre","");

menu.Add(1,"Autre","");

function CreerMenu(profondeur,titre1,titre2,titre3,titre4,target) {
	this.nb=0;this.prof=profondeur;
	this.titre1=titre1; this.titre2=titre2; this.titre3=titre3; this.titre4=titre4; this.target=target
	this.Add=AddObjet;
	this.Aff=AffMenu;
}
function AddObjet(deep,txt,page) {
	var rub = new Object;
	rub.deep=deep;
	rub.txt=txt;
	rub.page=page;
	this[this.nb]=rub;
	this.nb++;
}
function AffMenu() {
	var Z="<FORM name='mf'>";
	Z+="<SELECT size=1 name='list1' onChange='Clic(1)'><OPTION selected>"+this.titre1+"</OPTION>";
	for (var i=0;i<this.nb;i++) {
		if (this[i].deep==1) {
			Z+="<OPTION value='"+i+"'>"+this[i].txt+"</OPTION>"
		}
	}
	Z+="</SELECT>";
	for (var i=2;i<=menu.prof;i++) {
		Z+="<SELECT name='list"+i+"' onChange='Clic("+i+")'><OPTION>"+eval("menu.titre"+i)+"</OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION></SELECT>";
	}
	Z+="</FORM>";
	document.write(Z);
}
function add() {
	var c=new Option("ADD","",true,true);
	document.forms[0].elements["list"].options[0]=c;
}
function Clic(no) {
	var valeur=document.forms["mf"].elements["list"+no].options[ document.forms["mf"].elements["list"+no].selectedIndex].value;
	if ((valeur!="")&&(valeur!=null)&&(no<menu.prof)) {
		var deep=menu[valeur].deep;
		var no2=1;
		for (var noX=(no+1);noX<=menu.prof;noX++) {
			document.forms["mf"].elements["list"+eval(noX)].options.length=0;
			var titre=eval("menu.titre"+noX);
			var c=new Option(titre);
			document.forms["mf"].elements["list"+(noX)].options[0]=c;
			document.forms["mf"].elements["list"+(noX)].selectedIndex=0;
		}
		valeur++;
		for (var i=valeur;i<menu.nb;i++) {
			//alert(i);
			if (menu[i].deep==deep+1) { 
				//alert("no="+no+" texte="+menu[i].txt);
				var c=new Option(menu[i].txt,i);
				document.forms["mf"].elements["list"+(no+1)].options[no2]=c;
				no2++;
			} else { if (menu[i].deep==deep){i=menu.nb;}}
		}
		document.forms["mf"].elements["list"+(no+1)].options.length=no2+1;
		document.forms["mf"].elements["list"+(no+1)].selectedIndex=0;
		Clic(no+1)
		valeur--;
	}
	if ((valeur!="")&&(valeur!=null)) {
		var page=menu[valeur].page;
		if ((page!="")&&(page!=null)) {
			if (menu.target=="self") {window.location=page}
			else if (menu.target=="_blank") {window.open(page,"","menubar,scrollbars,toolbar,status,location")}
			else {parent.frames[menu.target].location.href=page;}
		}
	}
}
// Fonctions destinées à afficher l'arborescence du menu
function space(i) {var Z="";for (var j=0;j<i;j++){Z+="&nbsp;&nbsp;&nbsp;&nbsp;";}return Z}
function Arbo(m) {
	var Z="<BR>";
	for (var i=0;i<m.nb;i++) {
		Z+=space(m[i].deep)+m[i].txt+"&nbsp;&nbsp; <A href='"+m[i].page+"'>"+m[i].page+"</A><BR>"
	}
	document.write(Z);	
}

// Section utile pour la démonstration
</SCRIPT>
</HEAD>
<input type="submit" value="Envoyer">
</form>

<BODY>
<SCRIPT language="JavaScript">
	menu.Aff();
</SCRIPT>
</BODY>


Le fichier de reception : reception.php :

<?php

$liste1 = $_POST["list1"];
$liste2 = $_POST["list2"];
$liste3 = $_POST["list3"];
$liste4 = $_POST["list4"];

echo"$liste1 $liste2 $liste3 $liste4";

?>


le code javascript (à la base) fait une redirection dés le 3ème champs sélectionné...

<!-- saved from url=(0022)http://internet.e-mail -->
<HTML><HEAD><TITLE>Menu arborescent en listes déroulantes</TITLE>
<SCRIPT LANGUAGE="JavaScript">
// Script développé par Tout JavaScript.com - https://www.toutjavascript.com/main/index.php3

var menu=new CreerMenu(3," **** 1 - Choisir un thème **** "," **** 2 - Choisir un sujet **** "," **** 3 - Choisir un site **** ","titre 4","_blank");
// CreerMenu(Nb de listes, titre1, titre2, titre3, target)
// Nb listes=4 maxi
// Les 4 titres sont obligatoires (meme si Nb_liste<4)
// target=nom de la frame ou "self" si c'est la fenetre elle meme, "_blank" pour une nouvelle
// Pour ajouter les liens dans les listes, utiliser menu.Add
// Menu.Add(numéro de la liste, texte, page à charger)
menu.Add(1,"Internet","");
	menu.Add(2,"Création de sites","");
		menu.Add(3,"Tout JavaScript.com","https://www.toutjavascript.com/main/index.php3");
		menu.Add(3,"All HTML","http://www.allhtml.com");
		menu.Add(3,"Praktica","https://www.praktica.com/");
	menu.Add(2,"Graphismes","");
		menu.Add(3,"ZoneGifs","http://www.zonegifs.com");
		menu.Add(3,"GoGraph","https://www.gograph.com/");
	menu.Add(2,"Hébergement","");
		menu.Add(3,"Free.fr","https://www.free.fr/freebox/index.html");
		menu.Add(3,"Multimania","http://www.multimania.fr");
		menu.Add(3,"Chez","http://www.chez.com");

menu.Add(1,"Matériel","");
	menu.Add(2,"Documentation","");
		menu.Add(3,"Hardware.fr","https://www.hardware.fr/");
		menu.Add(3,"Choix PC","http://www.choixpc.com");
		menu.Add(3,"VTR Hardware","http://www.vtr-hardware.com");
	menu.Add(2,"Enchères","");
		menu.Add(3,"IBazar","http://www.ibazar.fr");
		menu.Add(3,"Aucland","http://www.aucland.fr");
	menu.Add(2,"Fabricants","");
		menu.Add(3,"Intel","https://www.intel.fr/content/www/fr/fr/homepage.html");
		menu.Add(3,"AMD","http://www.amd.com");
		menu.Add(3,"Macintosh","https://www.apple.com/fr/");


function CreerMenu(profondeur,titre1,titre2,titre3,titre4,target) {
	this.nb=0;this.prof=profondeur;
	this.titre1=titre1; this.titre2=titre2; this.titre3=titre3; this.titre4=titre4; this.target=target
	this.Add=AddObjet;
	this.Aff=AffMenu;
}
function AddObjet(deep,txt,page) {
	var rub = new Object;
	rub.deep=deep;
	rub.txt=txt;
	rub.page=page;
	this[this.nb]=rub;
	this.nb++;
}
function AffMenu() {
	var Z="<FORM name='mf'>";
	Z+="<SELECT size=1 name='list1' onChange='Clic(1)'><OPTION selected>"+this.titre1+"</OPTION>";
	for (var i=0;i<this.nb;i++) {
		if (this[i].deep==1) {
			Z+="<OPTION value='"+i+"'>"+this[i].txt+"</OPTION>"
		}
	}
	Z+="</SELECT>";
	for (var i=2;i<=menu.prof;i++) {
		Z+="<SELECT name='list"+i+"' onChange='Clic("+i+")'><OPTION>"+eval("menu.titre"+i)+"</OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION><OPTION></OPTION></SELECT>";
	}
	Z+="</FORM>";
	document.write(Z);
}
function add() {
	var c=new Option("ADD","",true,true);
	document.forms[0].elements["list"].options[0]=c;
}
function Clic(no) {
	var valeur=document.forms["mf"].elements["list"+no].options[ document.forms["mf"].elements["list"+no].selectedIndex].value;
	if ((valeur!="")&&(valeur!=null)&&(no<menu.prof)) {
		var deep=menu[valeur].deep;
		var no2=1;
		for (var noX=(no+1);noX<=menu.prof;noX++) {
			document.forms["mf"].elements["list"+eval(noX)].options.length=0;
			var titre=eval("menu.titre"+noX);
			var c=new Option(titre);
			document.forms["mf"].elements["list"+(noX)].options[0]=c;
			document.forms["mf"].elements["list"+(noX)].selectedIndex=0;
		}
		valeur++;
		for (var i=valeur;i<menu.nb;i++) {
			//alert(i);
			if (menu[i].deep==deep+1) { 
				//alert("no="+no+" texte="+menu[i].txt);
				var c=new Option(menu[i].txt,i);
				document.forms["mf"].elements["list"+(no+1)].options[no2]=c;
				no2++;
			} else { if (menu[i].deep==deep){i=menu.nb;}}
		}
		document.forms["mf"].elements["list"+(no+1)].options.length=no2+1;
		document.forms["mf"].elements["list"+(no+1)].selectedIndex=0;
		Clic(no+1)
		valeur--;
	}
	if ((valeur!="")&&(valeur!=null)) {
		var page=menu[valeur].page;
		if ((page!="")&&(page!=null)) {
			if (menu.target=="self") {window.location=page}
			else if (menu.target=="_blank") {window.open(page,"","menubar,scrollbars,toolbar,status,location")}
			else {parent.frames[menu.target].location.href=page;}
		}
	}
}
// Fonctions destinées à afficher l'arborescence du menu
function space(i) {var Z="";for (var j=0;j<i;j++){Z+="&nbsp;&nbsp;&nbsp;&nbsp;";}return Z}
function Arbo(m) {
	var Z="<BR>";
	for (var i=0;i<m.nb;i++) {
		Z+=space(m[i].deep)+m[i].txt+"&nbsp;&nbsp; <A href='"+m[i].page+"'>"+m[i].page+"</A><BR>"
	}
	document.write(Z);	
}
// Section utile pour la démonstration

</SCRIPT>
</HEAD>

<BODY bgcolor="#FFFFFF" text="#FFFFFF" alink="#000066" link="#000066" vlink="#000066" >
<FONT FACE="Arial" SIZE='-1' COLOR="#000099">

<CENTER><BIG>Menu arborescent par listes déroulantes </BIG></CENTER>
<BR>

<SCRIPT language="JavaScript">
	menu.Aff();
</SCRIPT>


Ce menu permet de placer énormément de liens en occupant un espace très limité sur la page.<BR>
Le principe est d'afficher dans les listes une sélection de plus en plus fine selon les choix faits dans les listes en amont.<BR>
Il est possible de définir jusqu'à 4 niveaux de listes.<BR>
Vous pouvez utiliser ce menu avec ou sans frames.<BR>
<BR>
Pour information, voici l'arborescence du menu complet :<BR>
<SCRIPT language="JavaScript">
	// A supprimer : permet d'afficher sous forme de texte la liste complète des liens du menu
	Arbo(menu);
</SCRIPT>

<BR>
</FONT></BODY></HTML>

24 réponses

kurosaki_ichigo
15 mai 2008 à 10:19
Et le résultat est :

undefined : undefined : undefined : undefined

Qu'est-ce qui fait que la valeur soit : undefined

Merci
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 10:56
Bjr

C'est bizarre .... moi ca fonctionne même en ligne

La preuve :

http://www.nobodysperfect.freesurf.fr/select4/


Tu utilises quelle version de php ?

Pour le savoir exécute ce petit script

<?php
phpinfo();
?>
0
kurosaki_ichigo
15 mai 2008 à 17:04
Quand je vais sur : http://www.nobodysperfect.freesurf.fr/select4/recu.php

y a : undefined : undefined : undefined : undefined

Sa vien de moi donc ?
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
15 mai 2008 à 18:02
Bizarement sur IE j'obtiens : : : : mais pas undefined !!!

j'ai modifié le code comme suis :
//-->> RÉCEPTION DES CHAMPS
$categorie1 = isset($_POST['list0']) ? $_POST['list0'] : "[non défini]" ;
$categorie2 = isset($_POST['list1']) ? $_POST['list1'] : "[non défini]" ;
$categorie3 = isset($_POST['list2']) ? $_POST['list2'] : "[non défini]" ;
$categorie4 = isset($_POST['list3']) ? $_POST['list3'] : "[non défini]";

maintenant je vois bien [non défini] héhé


Cependant la page recu.php est censée être appelée depuis la page
http://www.nobodysperfect.freesurf.fr/select4/index.html

et pas directement

Si tu appelles directement recu.php alors effectivement il n'y a aucune variable passée dans $_POST[]
0
korusaki_itchigo
16 mai 2008 à 14:35
Ha! j'ai testé sous ie sa marche parfaitement mais sous firefox non pourquoi ?

Merci...
0
korusaki_itchigo
16 mai 2008 à 14:38
Oui je sais que je ne doit pas appelé directement recu.php mais c à cause du navigateur...
0