Rechercher : dans
Par :

Liste déroulante php,bd MySQL,pb codification

Dernière réponse le 6 mai 2009 à 10:00:16 Ludi, le 15 sep 2008 à 10:54:02 
 Signaler ce message aux modérateurs

Bonjour,
Je débute en php et j'essaye de faire une petite page Web pour un service de mon entreprise.
Je dois faire 4 listes déroulantes dynamiques imbriquées avec possibilité d'ajouter un nouvel élément sans passer par une autre page.
J'y vais pas par pas, et pour l'instant j'en suis juste à faire 2 listes imbriquées. Cela fonctionne mais seulement si le champs qui filtre la seconde liste est en format numérique. Mon problème est que des codifications internes existent déjà (numérique + caractère) et je voudrais les récupérer. Si je ne peux pas les utiliser, je vais devoir créer 4 tables de correspondance, alors que sans ce pb, cela ne serait pas nécessaire.

Si quelqu'un a déjà eu ce pb?
Merci

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « liste déroulante php,bd MySQL,pb codification » dans :
Listes déroulantes simples avec Excel VoirDans votre tableau, vous souhaitez insérer un texte ou une valeur choisi dans une liste (déroulante). vous créez votre liste, ligne aprés ligne, sur votre feuille en cours ou sur une autre feuille du classeur en cours. vous la nommez : INSERTION...

1

gaerebut, le 15 sep 2008 à 12:50:33

Salut,

j'ai déjà fais faut des listes déroulante dynamique mais qu'entends-tu par imbriquées l'une dans l'autre ?

Tu peux pas donner le code aussi parce que c'est pas très clair ^^

A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

2

Ludi, le 15 sep 2008 à 14:24:38

Tout d'abord, merci beaucoup pour ta réponse.

Tu as raison, je ne suis pas très claire dans ce que je dis. En fait, je crois que le mot "imbriqué" est de trop, je veux faire des listes dépendantes du choix dans d'autres listes.

Les listes déroulantes cherchent les données dans la table "analyses".
- Numéro analyse
- Date analyse
- Identifiant analyste
- Code affaire: code alphanumérique + libellé
- localisation: adresse (sans CP ni ville)
- Code de l'analyse: code alphanumérique
- Type: code alphanumérique.

L'utilisateur doit sélectionner une affaire dans une liste déroulante, puis sélectionner une localisation parmi une liste filtrée en fonction de l'affaire choisie, puis choisir le code de l'analyse parmi une liste filtrée en fonction de l'affaire et de la localisation choisie, puis choisir un type parmi une liste filtrée en fonction de l'affaire, de la localisation et du code d'analyse choisis. Enfin, s'il fait une analyse sur de nouveaux éléments, il doit pouvoir l'ajouter en l'inscrivant dans une simple boîte de saisie.

Voici mon code, je me suis insiprée d'un code trouvé sur un tutoriel. Et il fonctionne seulement si mon champs "affaire" est en format numérique.

---------------------------------------------------------------------------------------------------------

<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");

/* On récupère si elle existe la valeur de l'affaire envoyée par le formulaire */
$idr = isset($_POST['affaire'])?$_POST['affaire']:null;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
</head>


<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">

<?php
if(isset($_POST['ok']) && isset($_POST['localisation']) && $_POST['localisation'] != "")
{
$affaire_selectionnee = $_POST['affaire'];
$localisation_selectionnee = $_POST['localisation'];
?>
<p>Vous avez sélectionné la localisation <?php echo($localisation_selectionnee); ?> dans l'affaire <?php echo($affaire_selectionnee); ?></p>
<?php
}
?>
<h3>Trouver une localisation </h3>
<?php
/* On établit la connexion à MySQL avec mysql_pconnect() plutôt qu'avec mysql_connect()
* car on aura besoin de la connexion un peu plus loin dans le script */
$connexion = mysql_pconnect('localhost', 'root', '');
if($connexion != false)
{
$choixbase = mysql_select_db('essai', $connexion);
$sql1 = "SELECT distinct `affaire`".
" FROM `analyses`".
" ORDER BY `affaire`";
$rech_affaires = mysql_query($sql1);
$affaire = array();
/* On active un compteur pour les affaires */
$nb_affaires = 0;
if($rech_affaires != false)
{
while($ligne = mysql_fetch_assoc($rech_affaires))
{
array_push($affaire, $ligne['affaire']);

/* On incrémente le compteur */
$nb_affaires++;
}
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chglocalisation">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une affaire</legend>
<select name="affaire" id="affaire" onchange="document.forms['chglocalisation'].submit();">
<option value="-1">- - - Choisissez une affaire - - -</option>
<?php
for($i = 0; $i < $nb_affaires; $i++)
{
?>
<option value="<?php echo($affaire[$i]); ?>"
<?php echo((isset($idr) && $idr == $affaire[$i])?" selected=\"selected\"":null); ?>>
<?php echo($affaire[$i]); ?></option>

<?php
}
?>
</select>
<?php
mysql_free_result($rech_affaires);
/* On commence par vérifier si on a envoyé une affaire et le cas échéant s'il est différent de -1 */

if(isset($idr) && $idr != -1)
{
/* Création de la requête pour avoir les localisations de cette affaire */
$sql2 = "SELECT distinct `localisation`".
" FROM `analyses`".
" WHERE `affaire` = ". $idr ."".
" ORDER BY `localisation`;";
if($connexion != false)
{
$rech_localisation = mysql_query($sql2, $connexion);
/* Un petit compteur pour les localisations */
$nb_localisation = 0;
/* On crée un tableau pour les localisations */
$localisation = array();
/* On va mettre les localisations dans le tableau */
while($ligne_localisation = mysql_fetch_assoc($rech_localisation))
{
array_push($localisation, $ligne_localisation['localisation']);
$nb_localisation++;
}
/* Maintenant on peut construire la liste déroulante */
?>
<select name="localisation" id="localisation">
<?php
for($d = 0; $d<$nb_localisation; $d++)
{
?>
<option value="<?php echo($localisation[$d]); ?>"
<?php echo((isset($localisation_selectionnee) && $localisation_selectionnee == $localisation[$d])?" selected=\"selected\"":null); ?>>
<?php echo($localisation[$d]." (". $localisation[$d] .")"); ?></option>
<?php
}
?>
</select>
<?php
}
/* Un petit coup de balai */
mysql_free_result($rech_localisation);
}
?>
<br /><input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
/* Terminé, on ferme la connexion */
mysql_close($connexion);
}
else
{
/* Si on arrive là, c'est pas bon signe, il faut vérifier les
* paramètres de connexion, mot de passe, serveur pas démarré etc... */
?>
<p>Un incident s'est produit lors de la connexion à la base de données, veuiillez essayer à nouveau ultérieurement.</p>
<?php
}
?>
</body>
</html>
---------------------------------------------------------------------------------------------

Répondre à Ludi

3

Ludi, le 16 sep 2008 à 11:08:08

Une gentille personne m'a trouvé la solution sur un autre site.
Pour ceux qui auraient le même problème, il manquait simplement des simples cotes!

$sql2 = "SELECT distinct `localisation`".
" FROM `analyses`".
" WHERE `affaire` = '". $idr ."' ".
" ORDER BY `localisation`;";

Moralité: comment perdre des heures bêtement... oubliez des cotes!
Bon développement!

Répondre à Ludi

4

gaerebut, le 16 sep 2008 à 11:18:28

Haaa ouai ... juste ça ok moi j'essayé de comprendre le principe en fait ! lol

Mais j'aurai peut-être dû voir ton code plutôt j'aurai peut-être vu :p

Tu peux aussi faire ça plutôt :

Remplace ça :

$sql2 = "SELECT distinct `localisation`".
" FROM `analyses`".
" WHERE `affaire` = ". $idr ."".
" ORDER BY `localisation`;"; 


PAR SA :

$sql2 = "SELECT distinct `localisation` FROM `analyses` WHERE `affaire` = '".$idr."' ORDER BY `localisation`";


A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

5

Ludi, le 16 sep 2008 à 15:33:45

Merci gaerebut!

J'ai modifié, ça fonctionne bien sûr sans problème.
Et en plus, c'est plus compréhensible!
Encore merci!
Je pense qu'on se recroisera dans ce forum car je vais me relancer dans la construction de ma page WEB, et je pense donc croiser de nouvelles difficultés!
à +

Répondre à Ludi

6

gaerebut, le 16 sep 2008 à 20:18:46

Ok no problème!

ben bien sûr que ça fonctionne qu'est-ce que tu crois ! MDR (je blague)

heu ben ouai sûrement tu aura d'autre problème !

Envoie moi des message privé si tu veux de mon aide, je te répondrais dans la minute ^^

A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

7

gaerebut, le 17 sep 2008 à 02:47:32

Je précise que quand je dis que je te répondrai dans la minute, c'est si tu m'envoie ça entre 9h du matin et 17h ! Puis de 20h à 00h00 je fais quelque pause entre 2 oui oui je suis un humain malgrès tout ;)

A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

8

Ludi, le 17 sep 2008 à 10:32:43

Bonjour Gaerebut!
Es-tu sûr d'être humain? Tu ne t'arrêtes jamais!!! Quels horaires!

Alors effectivement j'ai dejà des problèmes...
2 listes déroulantes dynamiques c'est bien, mais il m'en faut 1 troisième... J'ai cherché mais je bloque, je ne sais pas comment faire les boucles, ni quoi faire de mon form... Je suis paumée pour être honnête! lol ça dépasse mon petit niveau!

Peux-tu me donner un coup de pouce?

Répondre à Ludi

9

gaerebut, le 17 sep 2008 à 11:38:17

Ok !

D'abord désolé j'ai 1 heure de retard! ^^

J'ai oublié de suivre ce post avec les mails ...

Donc bon ... comme je te disais au début, je comprend pas ce que tu veux faire ! LOL

T'aurai pas une capture d'écran des liste imbriqué pour voir ?STP

Merci

A+

gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

11

Ludi, le 17 sep 2008 à 21:48:19

Bonjour messieurs!

Pour Gaerebut:
Merci pour ta réponse, et désolée pour ma réponse tardive! Pendant 2 jours, je ne peux pas beaucoup aller sur le net.
Malheurement, je ne peux pas t'envoyer de capture d'écran car tout est sur mon pc du travail.
Je le fais dès demain matin première heure (sachant que je ne suis pas une lève-tôt... lol).
En attendant, voici néanmoins le principe:
l'utilisateur saisit une AFFAIRE dans une liste déroulante d'"AFFAIRES".
S'affiche alors une liste déroulante des LOCALISATIONS, filtrée en fonction de l'AFFAIRE sélectionnée
l'utilisateur saisit une LOCALISATION dans la liste déroulante des LOCALISATIONS
S'affiche alors une liste déroulante du champs INFO3, filtrée en fonction de l'AFFAIRE et de la LOCALISATION sélectionnés.
l'utilisateur saisit une INFO3 dans la liste déroulante des INFO3.

Voili voilou. Et donc mon script fonctionne pour les listes déroulantes sur AFFAIRE et LOCALISATION. Mais je n'arrive pas à ajouter la liste sur INFO3.

A demain


Pour Nico:
Bonjour Nico, merci pour ta réponse, mais je ne comprends pas trop l'objectif. Je ne vois pas en quoi ce site répond à mon problème, en + il est bourré de fautes d'orthographes! lol
S'ils ne sont pas doués en orthographe, pour les scripts, j'ai des doutes!
à +

Répondre à Ludi

12

papymucho, le 17 sep 2008 à 22:06:29

Bonsoir,

Alors j'essai de comprendre un peu... Mais... en passant par un "mysql_pconnect()"
Un mysql_close ne ferme pas la connection à ta BDD, si ?

Et enfin, tu ne pourrais pas résoudre ton problème avec des requêtes ajax?

Répondre à papymucho

13

Ludi, le 17 sep 2008 à 22:16:15

Bonsoir Papymucho.

Pour le mysql_pconnect() et mysql_close, je ne sais pas. Si tu me le dis, c'est que c'est vrai!

Malheureusement, je ne connais pas Ajax. (je ne suis pas développeur informatique) J'essaye de faire cette page Web pour donner un coup de main, alors j'aimerais rester dans un langage que je connais.

Répondre à Ludi

14

papymucho, le 17 sep 2008 à 22:22:49

Ajax n'est pas un langage, en fait c'est du javascript... Disons que c'est juste une méthode, qui permet d'actualiser certains éléments de ta page, sans avoir à recharger entièrement ta page... Pratique donc pour des listes déroulantes dynamique qui se remplissent en fonction du choix fait dans une autre liste.

Ce n'est pas bien compliqué, je peux t'expliquer vite fait si tu le souhaites! J'ai appris ça y'a pas longtemps, j'en profite :D

Répondre à papymucho

15

gaerebut, le 17 sep 2008 à 22:23:50

Trop tard, je suis en train de poster un post ou je donne un code explicatif complet ! ^^

J'ai fini dans 5 min :p

Pris de vitesse !

A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

16

Ludi, le 17 sep 2008 à 22:24:44

Effectivement, cela répond à ma problématique.
Si ce n'est pas trop compliqué pour une débutante, je suis partante!

Répondre à Ludi

17

Ludi, le 17 sep 2008 à 22:27:36

Les deux solutions sont intéressantes.
Peut-être y en a t-il une que j'arriverais plus facilement à appréhender.

Répondre à Ludi

18

gaerebut, le 17 sep 2008 à 22:28:15

Maybe, tu verra, au meilleur ^^

A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1:  ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

19

gaerebut, le 17 sep 2008 à 22:45:20

Salut,

heu oui ce que dis papymucho est très juste et plus intuitif!
C'est plus pratique de faire ça en ajax !

Alors, on se jète à l'eau ! ^^

Je te donne le code necessaire pour le faire en ajax !
Ceci est un code minimal !

Requiert :

index.html ou .php ==> Page contenant les listes déroulantes
ajax.js ==> Code/fonctions javascript qui permet d'établir un lien entre le client et le serveur et évite de raffraichir la page
ajax.php ==> Fichier php exécuter côté serveur et envoyant le résultat sur la page HTML sans rafraichissement

Contenu de la page index.html :

<html>
   <head>
      <script type="text/javascript" src="ajax.js"></script>
   </head>
   <body onload="Ajax(0, 'ajax', 'affaires', 0)">
       <select id="affaires" onchange="Ajax(this.value, 'ajax', 'localisations', 0)"></select>
       <select id="localisations" onchange="Ajax(this.value, 'ajax', 'info3', document.getElementById('affaires').value)"></select>  
       <select id="info3"></select>
   </body>
</html>


Contenu de la page ajax.js :

function Ajax(str, page, result, champ)//str est la chaine envoyé, page est la page php appellé (sans l'extension), result est l'id de l'élément ou sera afficher le résultat renvoyé par le serveur et str2 est une deuxième chaine d'envoyé
{ 
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Votre navigateur ne supporte pas le HTTP Request")
		return
	}
	var url="./inc/"+page+".php"
	url=url+"?q="+str+"&p="+str2
	url=url+"&sid="+Math.random()
	xmlHttp.onreadystatechange=getStateChanged(result);
	xmlHttp.open("GET",url,true)
	xmlHttp.send(null)
	
}

function getStateChanged(result)
{
	if (typeof(result) === 'string')
	{
		result = document.getElementById(result);
	}
	return function() 
	{
		if (xmlHttp.readyState==4)
		{
			result.innerHTML = xmlHttp.responseText;
		}
	}
}


function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		//Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}


Contenu de la page ajax.php :

//Bon ben ici c'est ta page php, j'ai pas grand chose à mettre puisque c'est en quelque sorte ton code a quelques modifications près !
mysql_connect("localhost", "root" , "");
mysql_select_db("BASE");

$q = $_GET["q"];//Premiere chaine reçu
$p = $_GET["p"];//Deuxième chaine reçu (=0 si il y a qu'une chaine, dans le cas on est juste sur la première liste déroulante !)

if(!$q && !$p)// Si $p ET $q valent 0, c'est qu'on initialise la première select box
{
//CODE PHP MYSQL A INSERER
//ALLER DANS LA BASE DE DONNEES POUR VOIR TOUTES LES AFFAIRES ET LES AFFICHER VIA UNE BOUCLE while($tableau = mysql_fetch_array($requete)){}
//A CHAQUE TOUR DE BOUCLE ON DOIT CREER UNE ENTREE DANS LE SELECT DONC ONT METTRE UN TRUC DE CE GENRE :
// while($tableau = mysql_fetch_array($requete)){?><option><?php echo $tableau['affaire']; ?></option><?php} 
//ICI, $tableau['affaire'] CONTIENT L'AFFAIRE ET AFFICHERA TOUTES LES AFFAIRES DE TA BASES GRACE A TA REQUETE 
}
else if($q && !isset($p))//SI ON RECOIT QU'UNE SEUL VARIABLE, C'EST QUE L'ON A CHOISIS UNE AFFAIRE
{
//COMME POUR LA CONDITION PRECEDENTE, ON CONSTRUIT LE SELECT DE LA MEME MANIERE SAUF QUE LA REQUETE AURA UNE CONDITION, IL FAUDRA DIRE UN TRUC DU GENRE, AFFICHER TOUTES LES LOCALISATIONS QUI APPARTIENNENT A L'AFFAIRE $q
}
else if($q && $p)
{
//DERNIER SOLUTION, ON RECOIT $p ET $q DONC ONT VIENT DE CHOISIR LA LOCALISATION ET ON VEUT AFFICHER LES INFO3 EN FONCTION DE $p ET DE $q.
//TOUJOURS LE MEME PRINCIPE MAIS LA REQUETE DEVRA ICI COMPORTER 2 CONDITIONS $q = CONDITION CHOISIE ET $p = AFFAIRE CHOISIE
}
else
{
echo "ERREUR !";
}
mysql_close();
?>


Bon voila comme promis ce fameux code, j'espère que ça sera clair ! ^^

J'ai essayé de commenter au max ce que tu aura besoin de comprendre ! SI tu veux des explications sur le fichier JS ou HTML, demande moi ! :)

En espérant t'avoir aidé :)

A+

Gaerebut Il y a 2 règles d'or pour réussir dans la vie :
-Règle 1: ne jamais dire tout ce que l'on sait...
-Règle 2: ...

Répondre à gaerebut

20

papymucho, le 17 sep 2008 à 22:49:32

J'attendais de voir la soluce de Gaerebut, mais je vais donc te laisser celle-ci également.
Mon code ne fonctionne qu'avec la librairie jquery pour javascript : http://jquery.com/ pour le télécharger.
C'est une librairie très puissante, qui permet entre autre de nombreuses animations, tel que le drag and drop etc... très simple à coder.... Mais elle facilite également les requêtes ajax. Si tu souhaites te documenter : http://jquery.developpeur-web2.com/documentation.php

Bon commençons...

Entre ton </header> et ton <body> tu insères : <script type="text/javascript" src="jquery.js"></script>
Et dans le dossier de ton site, tu copies/colles le fichier jquery.js.....

Ensuite passons au code:

je te donne un exemple, de 2 menus déroulants que j'ai créé récemment....
L'un tapes dans la table équipement.... Et récupère le type de matériel.... L'autre tape dans la table model.... Et récupère le modèle, en fonction du choix fait dans le 1er menu déroulant

fichier : _inc_select_equipment.php

<select id='select_equipment' name='select_equipment' onchange="show_form(this)">
	<option value='void'>Choose an equipment</option>
	<?php
		include("_inc_connexion.php");
		
		$query = "SELECT id_equipment, equipment FROM T_equipment ORDER BY equipment ASC";
		$rq = mysql_query($query) or die(mysql_error());
		
		while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
		{
			$id_equipment = $row["id_equipment"];
			$equipment = $row["equipment"];
			
			echo "<option value='$id_equipment'>$equipment</option>";
		}
		mysql_close();
	?>
</select>


fichier : _inc_select_model.php

<select id='select_model' name='select_model'>
	<option value='void'>Choose a model</option>
	<?php
		include("_inc_connexion.php");
		
		$var=$_POST['var'];		
		
		$query = "SELECT id_model, model FROM T_model WHERE id_equipment='$var' ORDER BY model ASC";
		$rq = mysql_query($query) or die(mysql_error());
		while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
		{
			$id_model = $row["id_model"];
			$model = $row["model"];
			
			echo "<option value='$id_model'>$model</option>";
		}	
		mysql_close();
	?>
</select>



et enfin le fichier javascript:

function show_form(id_form)
{		
    get_url(id_form.value);
}


function get_url(test)
{
	var selected = document.getElementById("select_equipment").options[document.getElementById("select_equipment").selectedIndex].value;
	
	$.ajax
	(
		{
			type: "POST",
			url: "_inc_select_model.php",
			data: "var="+test,
			success: 
			function(msg)
			{
				$("#tr_test").append("<td class='title'><b>Model :</b></td><td>"+ msg +"</td>");
				if(selected=="void") $("#tr_test").hide();
				else $("#tr_test").show();
			}
		}
	);
}




et le formulaire :

					<tr>
						<td class='title'><b>Equipment :</b></td><td><?php include('_inc_select_equipment.php')?></td>
					</tr>
					<tr id='tr_test'>
					</tr>


Y'a une tite fonction en plus, qui cache le 2ème menu déroulant tant que l'utilisateur n'a pas fait un choix dans le 1er menu déroulant.....

Répondre à papymucho

66

lundam, le 1 déc 2008 à 11:22:19

Bonjour papymucho

je me suis inspiré de votre code mai j'ai un problème, aucune erreur d'exécution, mais juste que la deuxième liste ne s'affiche pas et donc ne me permet pas un choix lorsque la première est renseigné.

J'ai une première liste contenu dans une base de donnée concernant des catégories d'annuaire

Le premier fichier _inc_select_catannu.php

<select id="select_catannu" name="select_catannu" OnChange="show_form(this)">
<option value="void">Catégorie</option>
<?php
include("connect.php");
		$query = "SELECT id_catannu , catannu FROM wmi_categorie ORDER BY wmi_categorie . id_catannu ASC LIMIT 0, 100 ";
		$rq = mysql_query($query) or die(mysql_error());
		while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
		{
			$id_cat = $row["id_catannu"];
			$categorie = $row["catannu"];
			echo "<option value='$id_cat'>$categorie</option>";
		}
include("disconnect.php");
?>
</select>


puis un deuxième fichier pour la seconde liste (sous catégorie de l'annuaire)
Chaque catégorie donne accés à une liste de sous catégorie

_inc_select_souscatannu.php

<select id="select_souscat" name="select_souscat">
<option value="void">Sous catégorie</option>
<?php
include("connect.php");
		$var=$_POST['var'];
		$query = "SELECT id_souscatannu , catannu , sous_catannu FROM wmi_souscategorie WHERE catannu='$var' ORDER BY sous_catannu ASC LIMIT 0, 300 ";
		$rq = mysql_query($query) or die(mysql_error());
		while ($row=mysql_fetch_array($rq, MYSQL_ASSOC))
		{
			$id_souscat = $row["catannu"];
			$souscat = $row["sous_catannu"];
			
			echo ("<option value='$id_souscat'>$souscat</option>");
		}
include("disconnect.php");
?>
</select>


le code javascript inséré dans le <head> de ma page formulaire d'où je fait appel aux deux fichiers .php

et enfin l'extrait de mon code html du fichier formulaire avec extention .php où
j'ai inséré : <script type="text/javascript" src="jquery.js"></script> entre </head> et <body>


......
....
..
function show_form(id_form)
{		
    get_url(id_form.value);
}
function get_url(test)
{
	var selected = document.getElementById("select_catannu").options[document.getElementById("select_catannu").selectedIndex].value;
	
	$.ajax
	(
		{
			type: "POST",
			url: "_inc_select_souscatannu.php",
			data: "var="+test,
			success: 
			function(msg)
			{
				$("#tr_test").append("<td class='title'><b>Sous catégorie</b></td><td>"+ msg +"</td>");
				if(selected=="void") $("#tr_test").hide();
				else $("#tr_test").show();
			}
		}
	);
}
</script></head>
<script type="text/javascript" src="jquery.js"></script>
<body><form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
  <div align="center"></div>
<p align="center">
<table width="500" border="0" align="center">
<p align="center">
</p><tr>
      <td><font face="Verdana" size="2">Nom</font></td>
      <td><input name="champ1" type="text"></td>
    </tr><tr>
      <td><font face="Verdana" size="2">Prénom</font></td>
      <td><input name="champ2" type="text"></td>
    </tr><tr>
      <td><font face="Verdana" size="2">Titre du site</font></td>
      <td><input name="champ3" type="text"> (50 caractères maximum)</td>
    </tr><tr>
      <td><font face="Verdana" size="2">URL du site</font></td>
      <td><input name="champ4" type="text"> (http:// obligatoire)</td>
    </tr><tr>
      <td><font face="Verdana" size="2">Catégorie</font></td>
      <td><?php include('_inc_select_catannu.php')?></td>
   </tr><tr id='tr_test'>
   </tr><tr>
      <td width><font face="Verdana" size="2">Votre Email</font></td>
      <td width><input name="zone_email" type="text"></td>
    </tr><tr>
      <td valign="top"><font face="Verdana" size="2">Description (255 caractères maximum)</font></td>
      <td><textarea name="zone_texte" cols="40" rows="10"></textarea></td>
    </tr><tr>
      <td valign="top">
        <input name="nbre_champs_texte" type="hidden" id="nbre_champs_texte" value="4">
        <input name="nbre_zone_listecat" type="hidden" id="nbre_zone_listecat" value="1">
        <input name="nbre_zone_listecat" type="hidden" id="nbre_zone_listesouscate" value="1">
        <input name="nbre_zones_texte" type="hidden" value="1">
	<input name="nbre_zone_email" type="hidden" value="1">
	<input name="titre_champ1" type="hidden" value="Nom">
	<input name="titre_champ2" type="hidden" value="Prénom">
	<input name="titre_champ3" type="hidden" value="Titre du site (50 caractères maximum)">
	<input name="titre_champ4" type="hidden" value="URL du site">
	<input name="categorie_url" type="hidden" value="Catégorie">
	<input name="souscate_url" type="hidden" value="Sous catégorie">
	<input name="titre_email" type="hidden" value="Votre Email">
	<input name="titre_zone" type="hidden" value="Description (255 caractères maximum)"></td>
      <td><div align="center">
<input type="reset" name="Reset" value="Effacer">          
<input type="submit" name="envoi" value="Envoyer">
        </div></td>
    </tr>
  </table>
  <div align="center"></div>
</form></body></html>



Ceci n'est qu'un extrait du code car il est assé long, j'ai des scripts de différentes vérifications et autres. L'ensemble du formulaire fonctionne correctement à l'exéption de la deuxième liste déroulante qui ne s'affiche pas aprés sélection dans la première.

Pourriez vous si possible m'aider à vérifier ce code, car aprés plusieurs essai infructueux, je ne voi pas le problème, il est vrai que je ne suis pas dévelopeur, mais je me débrouille et là j'en perd mon latin....

Merci

Répondre à lundam
Collection CommentÇaMarche.net