Liste déroulante par methode get

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>
A voir également:

5 réponses

Utilisateur anonyme
 
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"­;;

}
?>

0
dutty
 
re giheller ,

Tout d'abord merci pour ta réponse , j'ai essayer de modifier avec ta ligne mais sans plus de résultat. lorsque je valide , il me trouve bien les prénoms correspondant donc ma requête passe bien mais par contre il me remet le premier nom.
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
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
0
dutty
 
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
0
Reivax962 Messages postés 3742 Statut Membre 1 011 > dutty
 
Mmmmh, tente ça alors :

value='{$val['nom_beneficiaire']}'>{$val["nom_beneficiaire"]}</option>\n­­"­;

Il manquait un ] ^^
En fait, les accolades {} permettent, à l'intérieur d'une chaine de caractères "", d'isoler une variable pour que sa valeur soit affichée.
0
Utilisateur anonyme
 
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.
0
dutty
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
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>
0
dutty
 
merci giheller jvais essayer aussi ta méthode .
0