Bonjour,

Je voudrais afficher dans mon formulaire des listes déroulantes imbriquées, tel que lorsqu'un utilisateur sélectionne un pays et ssi ce pays = FRANCE alors affiche la liste des départements de france et selon le département sélectionné afficher la liste des villes associées a ce département. sinon, si le pays est différent de la FRANCE alors n'afficher qu'un zone d'édition ou l'utilisateur inscrira le nom de sa ville.

pour ce faire j'ai créée dans ma BD 3 tables: pays(id_pays, pays), département(id_dep, departement) et ville(id_ville,id_dep, ville )

pour avoir une idée plus concrète voila un site qui a exactement ce que je voudrai obtenir :
http://www.lememo-transport.com/devis/devis-marchandise-particulier.asp?provAO_id=2.13

et voici mon code :
 

<tr>
    <td><b><font color="black" face="Arial, Helvetica, sans-serif">Pays</font></b><font size="+1" face="Arial, Helvetica, sans-serif"><font color="#FF0000">*</font></font></td>
    <td>

<?php
// pays	

$host = '127.0.0.1';

$user = 'root';

$bdd = 'pays_dep_ville_cp';

$passwd = '';


mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
echo '<select style="width: 315px" size="1" name="pays">';

$query = "SELECT pays  FROM pays ORDER BY pays";

$result = mysql_query($query);


while($row = mysql_fetch_array($result)){

echo '<option >'.$row["pays"].'</option>';
}
echo '</select>';

?>
</TD> </tr>

 <tr> 
  <td><b><font color="black" face="Arial, Helvetica, sans-serif">Département </font></b><font size="+1" face="Arial, Helvetica, sans-serif"><font color="#FF0000">*</font></font></td>
 <td>
 
 <?php
//departement
echo '<select style="width: 315px" size="1" name="departement">';

$query = "SELECT id_dep, departement  FROM departement where pays.pays = FRANCE ORDER BY departement";

$result = mysql_query($query);


while($row = mysql_fetch_array($result)){

echo '<option value="'.$row["id_dep"].'">'.$row["departement"].'</option>';
}
echo '</select>';

?>
</TD> </tr>
<tr>
    <td><b><font color="black" face="Arial, Helvetica, sans-serif">Ville</font></b><font size="+1" face="Arial, Helvetica, sans-serif"><font color="#FF0000">*</font></font></td>
    <td>
	
	
	<?php
	// ville
echo '<select style="width: 315px" size="1" name="ville">';

$query = "SELECT ville  FROM ville where id_dep.ville = $row["id_dep"] ORDER BY ville";

$result = mysql_query($query);

while($row = mysql_fetch_array($result)){

echo '<option value="'.$row["id_ville"].'">'.$row["ville"].'</option>';
}
echo '</select>';
?>
  </tr>
  



comme vous pouvez le déduire de mon post, je suis un vrai vrai bleu en développement web surtout dynamique Smiley sweatdrop j'espere que je pourrait trouvez de l'aide sur ce site !!!

Merci
Salut,

Tout d'abord, le code PHP de ta page ne joue pas, ici. Seuls comptent son code HTML et son code Javacript.

Au niveau HTML, c'est simplement :
- un select pour le pays
- un champ texte pour le département
- un champ texte pour la ville

Ensuite en Javascript :
- au chargement de la page, effectue une requête Ajax pour récupérer la liste des départements français. Construis un select à partir de cette liste. Lorsque la France est sélectionnée, remplace le champ texte des départements par ce select.
- lorsque l'utilisateur sélectionne un département, effectue une requête Ajax pour récupérer la liste des villes. Construis un select et affiche-le en remplacement du champ texte de la ville.

Voilà, si tu n'y connais rien en Javascript et en manipulation du DOM, ça risque d'être un peu tendu pour toi, je ne te le cache pas. Mais si tu es motivé pour apprendre, reviens montrer ton code sur ce sujet, on t'aidera à te corriger.
Merci marcv pour tes conseils, je les ai suivi tant bien que mal etant donnée que je n'y connais rien en javascript !!! et aujourd'hui enfin j'ai un peu avancé : j'arrive à afficher la liste des des villes associées a un département.

mais je n'y arrive plus lorsque j'ajoute la liste des pays, car je n'arrive pas a récupérer l'id du pays sélectionné et donc ne peut pas faire de test !!!

Voila mon nouveau code si quelqu'un pouvait m'aider ...

fichier index.php



<html>
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script type="text/javascript">
	/**
	 * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
	 */
	function sendData(param, page)
	{
		if(document.all)
		{
			//Internet Explorer
			var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ;
		}//fin if
		else
		{
		    //Mozilla
			var XhrObj = new XMLHttpRequest();
		}//fin else

		//définition de l'endroit d'affichage:
		var content = document.getElementById("contenu");
		
		XhrObj.open("POST", page);

		//Ok pour la page cible
		XhrObj.onreadystatechange = function()
		{
			if (XhrObj.readyState == 4 && XhrObj.status == 200)
				content.innerHTML = XhrObj.responseText ;
		}

		XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		XhrObj.send(param);
	}//fin fonction SendData

    </script>
</head>
<body>

<?php
   // Paramètres de la Connexion à la base MYSQL
   $user="root";
   $host="localhost";
   $password="";
   $database="pays_departement_ville";
   $i=0; // variable de test
   $j=0; // variable pour garder la valeur du premier enregistrement departement pour l'affichage
   $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
    
   mysql_select_db($database,$connexion);
   
    // Séléction de tous les enregistrements de la table pays	


   // Séléction de tous les enregistrements de la table pays
   $rq="Select * from pays ;";
   $result= mysql_query ($rq) or die ("Select impossible");
   echo "<form method='POST' action='valid.php'>";?>   <select style="width: 315px" size="1" name="pays" OnChange="sendData('id='+this.value,'index.php')" onKeyUp="sendData('id='+this.value,'index.php')">
 
 <?php  
   while ($dt=mysql_fetch_row($result))
   {
    // Remplir la liste déroulante des catégorie	
	echo "<option value=".($dt[0]).">".($dt[1])."</option>";
    if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
   }
     
   ?>    
   </select><br><br>
   
   <div id="contenu">
   <?php 
  echo '<select style="width: 315px" size="1" name="departement">';
$rq="Select * from departement  where 84 = $_POST['id']" ;
$result= mysql_query ($rq) or die ("Select impossible");
$i=0;
	if (mysql_num_rows($result)>0)
	{
		 echo "<form method='POST' action='valid.php'>";?>   <select style="width: 315px" size="1" name="departement" OnChange="sendData('id='+this.value,'ville.php')" onKeyUp="sendData('id='+this.value,'ville.php')">
		 
		 <?php  
		   while ($dt=mysql_fetch_row($result))
		   {
			// Remplir la liste déroulante des departements 	
			echo "<option value=".($dt[0]).">".($dt[1])."</option>";
				if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
		   }
			 
		?>    
		</select><br><br>
		   
		<div id="contenu">

		  <!-- // affichage des villes appartenant au departement.-->
		  <select style='width: 315px'  size='1' name='ville'>";
		   <option value="">Sélectionnez votre ville</option>";
		   <?php 
			$rq="Select * ville where id_dept=".$j." order by ville;";
			$result= mysql_query ($rq) or die ("Select impossible");
			
			// $i = initialise le variable i
			$i=0;

			while ($dt=mysql_fetch_row($result))
			{ 
			 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
			}    
			echo "</select>";
   	
	}
	else
	{
	  ?>
	  
	  <input name="ville" type="text" size="48" maxlength="48">	
	  
	  
	  <?php
	}
	echo "<option value=''> Selectionnez votre pays </option>";
    while ($dt=mysql_fetch_row($result))
    { 	
	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
    }  

	echo "</select>"; 
}

?>
  
   </div>
</form>
</body>
</html>
    


fichier ville.php

<?php
header('Content-type: text') ; // on déclare ce qui va être afficher
 
// test des POST emis
if(isset($_POST['id']) && !empty($_POST['id']) )
{
   $user="root";
   $host="localhost";
   $password="";
   $database="pays_departement_ville";
   $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");   
   mysql_select_db($database,$connexion);
    $rq="Select * from ville where id_dept=".$_POST['id']." order by ville;";
    $result= mysql_query ($rq) or die ("Select impossible");
     // $i = initialise le variable i
    $i=0;
	if (mysql_num_rows($result)>0)
	{
	  echo "<select style='width: 315px' size='1' name='ville'>";
	}
	else
	{
	  echo utf8_encode("Pas de ville disponible");	
	}
	echo "<option value=''> Selectionnez votre ville </option>";
    while ($dt=mysql_fetch_row($result))
    { 	
	 echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
    }    
	echo "</select>";
}

?>


 



Merci
zara, comme je t'ai dit dans ma dernière réponse, le code PHP ne sert à rien ici. Cela fait juste plus de code pour nous à lire et à décrypter. Pour nous faciliter le travail, édite ton message précédent et donne le code HTML tel que le reçoit le navigateur, c'est à dire sans instructions PHP.