Select et input....
Résolu
sangoh
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
7 réponses
Bonjour,
Je ne vois pas de input qui a pour name "nom", je vois bien un input "libelle". Si c'est de celui là dont tu parles, c'est normal car la variable $ligne['libelle'] n'est pas accessible en-dehors de la boucle while, de plus, ton extract() ne sert à rien, ou plutôt il fait double usage.
D'autre part, si tu cherches à tester une variable vide, c'est plus compréhensible et logique d'utiliser l'opérateur de comparaison != (différent de) ou bien d'utiliser empty(), mais chacun sa manière de programmer, du moment que toi tu arrives à relire ton code...
Je ne vois pas de input qui a pour name "nom", je vois bien un input "libelle". Si c'est de celui là dont tu parles, c'est normal car la variable $ligne['libelle'] n'est pas accessible en-dehors de la boucle while, de plus, ton extract() ne sert à rien, ou plutôt il fait double usage.
D'autre part, si tu cherches à tester une variable vide, c'est plus compréhensible et logique d'utiliser l'opérateur de comparaison != (différent de) ou bien d'utiliser empty(), mais chacun sa manière de programmer, du moment que toi tu arrives à relire ton code...
quelques erreurs complémentaire a ce que signale _construct
/* boucle de lecture de la table*/ while ($ligne = mysql_fetch_array($result)) { if ($ligne['uf'] != "") echo "<option value ='$ligne[uf]'>$ligne[uf]</option>\n"; //la il te manquait la fermeture </option> } echo"</select>\n</td></tr>"; //la erreur de frappe tu avait selct ?> <tr> <td>Libellé :</td> <!-- ligne ci dessous tu ne peux pas utiliser $ligne [...] en dehors de ta boucle while en fait ce que tu recupères ici c'est la derniere valeur de la boucle while et je ne pense que que ce soit ce que tu cherches a faire --> <td> <input type="text" name="libelle" value=<?php echo"$ligne[libelle]";?>></td> </tr>
<?php include ("includes/connect.inc.php"); $connexion = mysql_connect ($host,$user,$password) or die ("Connexion au serveur impossible"); $db=mysql_select_db($database,$connexion) or die ("selection de la base de données impossible"); $sql = " SELECT uf, libelle from service order by uf"; $result = mysql_query($sql) or die ("Impossible d'executer la requete"); /*creation du formulaire contenant la liste de selection */ echo "<tr><td>Uf du services : </td>"; echo "<td><select name='services'>\n "; /* boucle de lecture de la table*/ while ($ligne = mysql_fetch_array($result)) { if ($ligne['uf']!="") echo "<option value ='$ligne[uf]'>$ligne[uf] $ligne[libelle]</option>\n"; } echo"</select>\n</td></tr>"; ?> <tr> <td>Libellé :</td> <td> <input type="text" name="libelle" value=<?php echo"$ligne[libelle]";?>></td> </tr>
bon j'ai rectifié mes erreurs (enfin je crois !)
et donc si j'ai bien tout compris : les valeurs récupérer dans par ma boucle restent dans la boucle et donc je ne peux pas les par exemple récupéré cette valeur si je veux par exemple que mon <input> corresponde à mon select ?(je suis pas sur d'avoir était clair la !)
juste pour info dans la requête exécutée plus haut je récupère ma clé primaire ( ici "uf") et le champs "libelle" qui lui est associé !.
j'ai modifié mon select afin de récupérer l'uf et le libelle.
maintenant ce que je veux savoir c'est qu'une fois que j'ai ces valeurs lorsque j'en choisis une et bien d'une part dans le select je veux l'uf et dans le input le libelle associé a cet uf !
donc dois je mettre dans ma boucle mon input ?
je crois comprendre ce que tu veux:
qd on selection un service uf dans le select ça affiche dans l'input la valeur de libelle correspondante.
il faut passer par du javascript pour réaliser ça, car le choix dans le select va déclencher l'affichage correspondant
je dois m'absenter je te fais un bout de code plus tard
qd on selection un service uf dans le select ça affiche dans l'input la valeur de libelle correspondante.
il faut passer par du javascript pour réaliser ça, car le choix dans le select va déclencher l'affichage correspondant
je dois m'absenter je te fais un bout de code plus tard
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voilà j'espère ne pas avoir fait de fautes de frappe:
<head> <script type="text/javascript"> //initialisation de l'array JS var tab_services= new Array(); //fonction qui affiche la valeur correspondante dans l'input function affiche_input(){ //on lit ce qui a été selectionné dans la liste var service=document.getElementById('services').value; if(service != "-1"){ //si ce n'est pas la première ligne "choisissez" //on modifie la value de l'input avec la valeur correspondante au service selectionné lue dans l'array document.getElementById('libelle').value = tab_services[+'"'+service+'"']; } } </script> </head> <?php include ("includes/connect.inc.php"); $connexion = mysql_connect ($host,$user,$password) or die ("Connexion au serveur impossible"); $db=mysql_select_db($database,$connexion) or die ("selection de la base de données impossible"); $sql = " SELECT uf, libelle from service order by uf"; $result = mysql_query($sql) or die ("Impossible d'executer la requete"); /*creation du formulaire contenant la liste de selection */ echo '<tr><td>Uf du services : </td>'; echo '<td><select name="services" id="services" onchange="affiche_input();">\n '; echo '<option value=-1>-- Choisissez --</option>'; //cette ligne c'est pour qu'il y ait un changement dans tout les cas sinon si selection ligne 1 ça ne fait pas le onchange /* boucle de lecture de la table*/ while ($ligne = mysql_fetch_array($result)) { if ($ligne['uf']!="") echo '<option value ="'.$ligne['uf'].'">'.$ligne['uf'].' </option>\n'; //la on va charger l'array initialisé plus haut, c'est un array dont les index sont alphanum (correspondant aux services) et les valeurs = les libellés correspondants ?> <script type="text/javascript"> var tab_services["<?php echo $ligne['uf']; ?>"] = "<?php echo $ligne['libelle']; ?>"; </script> <?php } //fin boucle while echo"</select>\n</td></tr>"; ?> <tr> <td>Libellé :</td> <td> <input type="text" name="libelle" id="libelle" value=""></td> </tr>
j'ai eu un peu plus de temps pour tester, deux petites rectifs:
dans la fonction JS:
et dans la boucle while
dans la fonction JS:
if(service != "-1"){ //si ce n'est pas la première ligne "choisissez" //on modifie la value de l'input avec la valeur correspondante au service selectionné lue dans l'array document.getElementById('libelle').value = tab_services[service]; //cette ligne modifiée, plus le else rajoute }else{ document.getElementById('libelle').value = ""; //si la première ligne "choisissez" on vide l'input }
et dans la boucle while
<script type="text/javascript"> tab_services["<?php echo $ligne['uf']; ?>"] = "<?php echo $ligne['libelle']; ?>"; //supprimer var </script>