Liste déroulante par methode get
dutty
-
dutty -
dutty -
Bonjour à tous,
Ce ne sera pas long du moins je pense .. je vous explique mon problème.
Souahitant une methode simple pour actualiser une liste déroulante apres selection sur une premiere j'ai lu sur un forum qu'tiliser la methode du get pouvait etre une bonne alternative quand on a pas le temps de se mettre au java.
Donc en fait j'ai deux listes 'nom' et "prénom"
Lorsque je choisis un nom et que je click sur valider , les prénoms correspondant s'affiche mais la case "nom" me remet le premier nom de l'alphabet . Je vous illustre mon probleme par un exemple.
J'ai 3 nom :adel , bordel ,cervelle (oui je sais )
admettons que pour bordel j'ai deux prenoms .
Je click sur bordel je valide la il m'affiche les deux prenoms mais en nom il m'a remis adel (le premier).
Comment puis je faire pour éviter ceci d'autant qu'une fois ces deux champs fini je souhaiter les rebalancer sur une autre page par post ce coup ci.
Je vous mail le code merci de votre attention.
<html>
<p align="center"><font color="#0000FF" size="5"> Enregistrement</font>
<body bgcolor="#BBEBC4">
<HR>
<BR>
<?php
mysql_connect("localhost", "root", "")or die ("erreur de connexion");
mysql_select_db("test")or die ("erreur de connexion à la base");
?>
<table>
<form name="nom">
<TR><TD>
Nom : <SELECT NAME='nom' size='0,20' method="get">
<?php
$sql = "SELECT distinct * FROM t_beneficiaire ORDER BY nom_beneficiaire" ;
$res= mysql_query($sql);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["nom_beneficiaire"]."</option>\n";
}
?>
<input type="submit" value="Valider" />
<form name="prenom">
<TR><TD>
Prénom : <SELECT NAME='prenom' size='0,20' selected='choisir le prénom'>
<?php
$sql = "SELECT prenom_beneficiaire FROM t_beneficiaire where nom_beneficiaire='".$_GET[nom]."'" ;
$res= mysql_query($sql);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["prenom_beneficiaire"]."</option>\n";
}
?>
</table>
</SELECT>
</form>
</table>
Ce ne sera pas long du moins je pense .. je vous explique mon problème.
Souahitant une methode simple pour actualiser une liste déroulante apres selection sur une premiere j'ai lu sur un forum qu'tiliser la methode du get pouvait etre une bonne alternative quand on a pas le temps de se mettre au java.
Donc en fait j'ai deux listes 'nom' et "prénom"
Lorsque je choisis un nom et que je click sur valider , les prénoms correspondant s'affiche mais la case "nom" me remet le premier nom de l'alphabet . Je vous illustre mon probleme par un exemple.
J'ai 3 nom :adel , bordel ,cervelle (oui je sais )
admettons que pour bordel j'ai deux prenoms .
Je click sur bordel je valide la il m'affiche les deux prenoms mais en nom il m'a remis adel (le premier).
Comment puis je faire pour éviter ceci d'autant qu'une fois ces deux champs fini je souhaiter les rebalancer sur une autre page par post ce coup ci.
Je vous mail le code merci de votre attention.
<html>
<p align="center"><font color="#0000FF" size="5"> Enregistrement</font>
<body bgcolor="#BBEBC4">
<HR>
<BR>
<?php
mysql_connect("localhost", "root", "")or die ("erreur de connexion");
mysql_select_db("test")or die ("erreur de connexion à la base");
?>
<table>
<form name="nom">
<TR><TD>
Nom : <SELECT NAME='nom' size='0,20' method="get">
<?php
$sql = "SELECT distinct * FROM t_beneficiaire ORDER BY nom_beneficiaire" ;
$res= mysql_query($sql);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["nom_beneficiaire"]."</option>\n";
}
?>
<input type="submit" value="Valider" />
<form name="prenom">
<TR><TD>
Prénom : <SELECT NAME='prenom' size='0,20' selected='choisir le prénom'>
<?php
$sql = "SELECT prenom_beneficiaire FROM t_beneficiaire where nom_beneficiaire='".$_GET[nom]."'" ;
$res= mysql_query($sql);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["prenom_beneficiaire"]."</option>\n";
}
?>
</table>
</SELECT>
</form>
</table>
Configuration: Windows XP Firefox 2.0.0.12
5 réponses
-
Bonjour,
essaies un truc dans ce genre :
<form name="nom">
<TR><TD>
Nom : <SELECT NAME='nom' size='0,20' method="get">
<?php
$sql = "SELECT distinct * FROM t_beneficiaire ORDER BY nom_beneficiaire" ;
$res= mysql_query($sql);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["nom_beneficiaire"];
if ($_GET[nom]==$val["nom_beneficiaire"]) echo 'selected';
echo "</option>\n";;
}
?>
-
Bonjour,
Alors, pour commencer, ton code html est très bizarre :
- deux </table> pour un seul <table>
- des balises différentes de <tr> directement sous <table>
- des <option> sans value
- des cellules de tableau non fermées
- des <p> non fermés
- un <p> en dehors de <body> !
et d'autres choses mais qui, à côté de ces 6 premières, font figure de détails ;)
Ensuite, si tu ne demandes pas à ta page de préselectionner le nom qui vient d'être choisi, il n'y a aucune raison pour qu'elle le fasse.
Ce qui donne, au final :<html> <body bgcolor="#BBEBC4"> <p align="center"><font color="#0000FF" size="5"> Enregistrement</font></p> <HR> <BR> <?php mysql_connect("localhost", "root", "")or die ("erreur de connexion"); mysql_select_db("test")or die ("erreur de connexion à la base"); ?> <table> <tr> <td> <form name="nom" method="GET"> Nom : <select name='nom' size='0,20'> <?php $sql = "SELECT distinct * FROM t_beneficiaire ORDER BY nom_beneficiaire" ; $res= mysql_query($sql); while($val=mysql_fetch_array($res)) { if (isset($_GET['nom']) && $val['nom_beneficiaire'] == $_GET['nom']) $selected = " selected='selected' "; else $selected = ""; echo "<option $selected value='{$val['nom_beneficiaire'}'>{$val["nom_beneficiaire"]}</option>\n"; } ?> </select> <input type="submit" value="Valider" /> </form> </td> </tr> <tr> <td> <form name="prenom" method="GET"> Prénom : <select name='prenom' size='0,20'> <?php if (isset($_GET['nom'])) { $sql = "SELECT prenom_beneficiaire FROM t_beneficiaire where nom_beneficiaire='{$_GET['nom']}'"; $res= mysql_query($sql); while ($val=mysql_fetch_array($res)) { echo "<option value='{$val['prenom_beneficiaire']}'>{$val["prenom_beneficiaire"]}</option>\n"; } } ?> </select> </form> </td> </tr> </table> [...] </body> </html>Cela te convient-il ?
Xavier-
Merci xavier de ton investissement ,effectivement beaucoup beaucoup d'erreur de code je me doute bien mais je part un peu dans tous les sens a cause du manque de connaissance dans le domaine et comme a l'affichage les buggs n'apparraissent pas je ne m'en souciais guère.
J'ai modifier mon code par le tiens une ligne pose probleme , celle ci
value='{$val['nom_beneficiaire'}'>{$val["nom_beneficiaire"]}</option>\n";
ne la comprenant pas trop j'ai du mal a la debugger pour te dire si oui ou non cela affiche bien ce que j'aimerais .
Merci
-
-
alors il faut modifier certian nom car le name du formulaire correspond aussi au nom de la variable passée en get....et donc tester si le contenu de la variable get correspond à ce que l'on affiche pour faire echo selected.
-
re ,
ok pour les accolades mais toujours en erreur ..
Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in F:\php\index.php on line 29 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
voilà un code qui fonctionne dans une application;
$rs_codevb est le tableau des valeurs
$nb_codevb contient le nbre de valeur
à adapter
<select name="codvba">
<?php
for ($j=0;$j<$Nb_codevb;$j++){
?>
<option <?php
if ($Rs_codevb[$j]['CODEVBA'] == $tp05[codvba]) echo ' selected ';
?>
value="<?php echo $Rs_codevb[$j]['CODEVBA']; ?>">
<?php echo $Rs_codevb[$j]['CODEVBA']; ?></option>
<?php } ?>
</select>