Listes déroulantes liées

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 : Listes déroulantes liées

Merci

par chaton1930 » 02 juil. 2008, 14:45

ca y est ca marche !!!! un grand merci... (dommage que je sois passé à côté d'une erreur aussi bete !!)

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par guilt92 » 02 juil. 2008, 12:15

Au temps pour moi !

Il ne faut pas clore la balise <option avant d'écrire le selected :
<option value="<?php echo($nom_projet[$i]) ?>"<?php echo ((isset($idr) && $idr == $nom_projet[$i])?" selected=\"selected\"":null) ?>> <?php echo $nom_projet[$i] ?></option> 
devrait mieux fonctionner

par chaton1930 » 02 juil. 2008, 11:55

Merci pour la rapidité de la reponse
J'ai rajouté le echo comme vous me l'avez dit. Maintement lorsque je selectionne par exemple l'item 3 dans ma 1ere liste il affiche toujours l'item 1. A la place de l'item 3 c'est ecrit selected = "selected"Item 3 ... dans la liste deroulante. La j'avoue je vois pas...

par guilt92 » 02 juil. 2008, 11:28

Bonjour,

Le problème vient du paramètre selected="selected" qui n'ai jamais écrit dans ta liste déroulante car il manque le echo :
<option value="<?php echo($nom_projet[$i]) ?>"> <?php ((isset($idr) && $idr == $nom_projet[$i])?" selected=\"selected\"":null) ?> <?php echo $nom_projet[$i] ?></option>
Cette ligne ajoute le paramètre selected="selected" si elle trouve une valeur existante. Il faut écrire le echo avant ce parametre, sinon il ne s'affichera pas :
<option value="<?php echo($nom_projet[$i]) ?>"> <?php echo ((isset($idr) && $idr == $nom_projet[$i])?" selected=\"selected\"":null) ?> <?php echo $nom_projet[$i] ?></option>

Listes déroulantes liées

par chaton1930 » 02 juil. 2008, 11:17

Bonjour,
En faisant quelques recherches suer internet je suis tombé sur "Listes déroulantes liées" qui a été posté dans la rubrique FAQ et tutoriels. C'est tout à fait ce que je cherchais. J'ai choisi la première solution car je développe en php. Mais voila j'ai un petit soucis que je n'arrive malheureusement pas à resoudre malgré plusieurs recherches. Lorsque je sélectionne un item dans ma première liste déroulante c'est toujours le 1er item de la liste qui reste affiché... alors que le bon item est sélectionné car les items de la 2ème liste qui s'affichent sont les bons... En gros c'est un problème d'affichage. Je pense que mon problème est du à "onchange="document.forms['formulaire'].submit();"" mais je vois pas comment y remédier... Ce serait très aimable de votre part d'y jeter un coup d'oeil.

Code : Tout sélectionner

<?php $idr = isset($_POST['nom_projet'])?$_POST['nom_projet']:null; $bdd = mysql_connect('localhost','root','') or die("Erreur de connexion au serveur."); mysql_select_db('gestion',$bdd) or die ("erreur de connexion base"); $sql = 'SELECT DISTINCT nom_projet FROM `sous-projet` ORDER BY nom_projet '; $sql1 = 'UPDATE metrique SET commentaire = "" where 1'; $req1 = mysql_query($sql1) or die ("erreur1"); $req = mysql_query($sql) or die ("erreur2"); $num_ligne = mysql_num_rows($req); while($row = mysql_fetch_array($req) ) { $nom_projet[] = $row['nom_projet']; } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="onglet.css" /> </head> <body> <div class="menu4"> </div> <div class="menu2"> <form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="formulaire"> <STRONG> Sélectionner un projet : </STRONG> <select name="nom_projet" id="nom_projet" onchange="document.forms['formulaire'].submit();"> <?php for($i=0;$i<$num_ligne;$i++){ ?> <option value="<?php echo($nom_projet[$i]) ?>"> <?php ((isset($idr) && $idr == $nom_projet[$i])?" selected=\"selected\"":null) ?> <?php echo $nom_projet[$i] ?></option> <?php } ?> </select> <?php mysql_free_result($req); if(isset($idr) && $idr != -1) { $sql2 = 'SELECT DISTINCT nom_sous_projet FROM `sous-projet` WHERE `nom_projet` = "'. $idr .'"ORDER BY nom_sous_projet'; $req2 = mysql_query($sql2) or die ("erreur3"); $num_ligne2 = mysql_num_rows($req2); //echo $num_ligne2; while($row = mysql_fetch_array($req2) ) { $nom_sous_projet[] = $row['nom_sous_projet']; //echo $nom_sous_projet[0]; //echo $nom_sous_projet[1]; } } ?> <P> <STRONG> Sélectionner un sous projet : </STRONG> <select name="nom_sous_projet" id="nom_sous_projet"> <?php for($j=0;$j<$num_ligne2;$j++){ ?> <option value="<?php echo($nom_sous_projet[$j]) ?>"> <?php echo $nom_sous_projet[$j] ?> </option> <?php }?> </select> <BR> <BR> <BR> </form> <form action="edit_export.php? val = <?php $val ?>" method="get"> <INPUT TYPE=SUBMIT value="Valider" > </INPUT> </form> </div> </body> </html>
Merci aux personnes qui prendront le tps de me repondre