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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Liste déroulante construite en fonction d'une liste déroulan

par béka » 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>

par albat » 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>

Liste déroulante construite en fonction d'une liste déroulan

par béka » 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.