[RESOLU] Liste déroulante construite en fonction d'une liste déroulan

Mammouth du PHP | 536 Messages

17 nov. 2008, 13:31

Bonjour,

je vous explique mon problème.

Je voudrais en fait afficher une liste déroulante dont le contenu serait fonction d'une liste déroulant se trouvant juste avant.

Pour cela j'utilise la fonction load() de la librairie jquery de cette manière :
<select name="clients" class="input_texte" onchange=" $('#projet_client').load('choix_projet.php', {id: document.form.clients.value} );"><!--,  function() { alert(document.form.clients.value); } -->
<option value="0">--- Choisir dans la liste ---</option>
	<?
	$select_client = mysql_query("SELECT * FROM contacts WHERE type = '3' ORDER BY nom") or die(mysql_error());
	while($tab_client = mysql_fetch_array($select_client)){
		if($contact == $tab_client['id']){ $selected = 'selected'; } else { $selected = ''; }
		echo "<option value='".$tab_client['id']."' ".$selected.">".$tab_client['nom']."</option>";													
	}
	?>
	</select>
Ensuite plus loin dans mon code j'ai ceci (la deuxième liste déroulante où je souhaiterais afficher les projets liés au client sélectionné dans la liste ci-dessus)
<select name="projet_client" class="input_texte">
	<option value="0">--- Choisir dans la liste ---</option>
</select>
Avec la fonction load() j'appelle donc le fichier choix_projet.php dans lequel j'ai ceci :
<?
include ("../utile/connexion.php");
include ("../utile/parametres.php");

if(isset($_POST['id']) and ($_POST['id'] != 'undefined' or $_POST['id'] != '') ) {
        $query = mysql_query("SELECT * FROM projets WHERE id_contact = '".$_POST['id']."'") or die(mysql_error());
        if(mysql_num_rows($query) > 0) {
			echo "<select name='projet_client' class='input_texte'>";
			echo "<option value='0'>--- Choisir dans la liste ---</option>";
            while ($result = mysql_fetch_array($query)) {
				echo "<option value='".$result['id']."'>".$result['intitule']."</option>";
			}
			echo "</select>";
        }
		else {
            echo 'Aucun projet pour ce client';
        }
}
?>
Donc tout se passe bien, ma deuxième liste déroulante s'affiche correctement et est bien fonction de la première liste déroulante.
Seulement à la fin quand je valide mon formulaire complet, aucune valeur (même si j'en choisi une) n'est passé en POST comme si cette deuxième liste déroulante n'était pas créée. Alors que ds mon code source (via firebug) elle apparait bien.

Comment résoudre ce problème ?

Merci.
Modifié en dernier par béka le 17 nov. 2008, 15:02, modifié 1 fois.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

17 nov. 2008, 14:34

:!: Ne pas confondre menu déroulant et liste déroulante. :non:

Cela n'a rien à voir et pourtant, on voit cette erreur à tout bout de champ ! :evil:

- menus déroulants : menus des applicatifs (Fichier, Édition, Affichage, etc.)
- listes déroulantes : listes générées par la balise <select>

Mammouth du PHP | 536 Messages

17 nov. 2008, 15:03

J'ai fait les modifications. Effectivement, le terme menu déroulant ici n'est pas approprié.
Mais existe-t-il alors une solution pour mon problème ?

EDIT : le problème est résolu, il venait de mes balises form (<form> et </form>) que mon navigateur jugeait ma placées. Je les ai alors mises après <body> et avant </body>
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!