Listes déroulantes liées avec champs d'une MEME table

cs_vir76 Messages postés 53 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 22 juin 2008 - 4 févr. 2007 à 16:48
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 5 févr. 2007 à 23:45
Bonjour tout le monde,

Je désèspère car je n'arrive toujours pas à lier mes 2 listes déroulantes comportant des champs de la même table.

Donc, j'ai un select comportant le champ "nom_destinataire" et un autre select avec le champ "service_centre_destinataire". Quand je sélectionne une personne, son service par défaut doit apparaît. Comment faire?

Merci d'avance.

7 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
4 févr. 2007 à 17:03
Bonjour,

    quand tu causes "table", c'est bien d'une base de données coté serveur dont on parle ?

    si oui : tu as généré un select avec le champ "nom_destinataire"
            dans le text de l'option, mets le "service_centre_destinataire"
            dans le value.
        quand on utilise select.options[index].text, 

select.options[index].value
           est disponible
        à moins que tu ne veuilles à tout prix un 2ème select ? mais pourquoi ?

    si non : tu peux nous en dire plus ?
   


<hr />



Cordialement            Bul         [mon Site]     [M'écrire]  




<hr />
0
cs_vir76 Messages postés 53 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 22 juin 2008
4 févr. 2007 à 17:36
j'ai une table destinataire avec num_destinataire, nom_destinataire et service_centre_destinataire sous Mysql.

donc, ensuite, j'ai un formulaire dans lequel je dois choisir un destinataire (donc un select) et associé dans un autre select son service.

Est ce que tu peux me donner un exemple de code suite à tes propos?

 "si oui : tu as généré un select avec le champ "nom_destinataire"
            dans le text de l'option, mets le "service_centre_destinataire"
            dans le value.
        quand on utilise select.options[index].text,  select.options[index].value
           est disponible"

de plus, une seule personne appartient à un seul service.

Merci de ton aide.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 févr. 2007 à 05:43
si tu avais donné au moins le php pour générer l'option...
mais bon... disons par exemple :

dans le select

    <select ... size= 3

                     onchange="alert(this[selectedIndex].text)+' / '+
this[selectedIndex].value)
;"... >
et en php, pour créer une option :

    echo '<option value ='. $service .'>'.$nom.'</option>';




<hr />



Cordialement                Bul             [mon Site]         [=Bul M'écrire]  




<hr />
0
cs_vir76 Messages postés 53 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 22 juin 2008
5 févr. 2007 à 09:35
Voici les détails : c'est une table faite sous Mysql nommée Destinataire comportant num_destinataire, nom_destinataire et service_centre_destinataire.

Ensuite, j'ai un formulaire en php dans lequel j'ai mis deux listes déroulantes :

 
Destinataire : <select><? 
$user= "root"; 
$host="localhost"; 
$password=""; 
$database="reception"; 
$connexion=mysql_connect($host,$user, $password) 
or die ("Connexion au serveur impossible"); 
$db=mysql_select_db($database,$connexion) 
or die ("Sélection de la base impossible"); 
$SQL = "SELECT nom_destinataire from destinataire ORDER BY nom_destinataire ASC"; 
$res = mysql_query($SQL); 
while($val=mysql_fetch_array($res)) { 
echo "<option>".$val["NOM_DESTINATAIRE"]."</option>\n"; 
}?></select>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[ajoutdest.htm (Ajouter un destinataire)] 

 
 Service ou Centre Destinataire  : <select><? 
$user ="root"; 
$host="localhost"; 
$password=""; 
$database="reception"; 
$connexion=mysql_connect($host,$user, $password) 
or die ("Connexion au serveur impossible"); 
$db=mysql_select_db($database,$connexion) 
or die ("Sélection de la base impossible"); 
$SQL = "SELECT service_centre_destinataire from destinataire ORDER BY service_centre_destinataire ASC"; 
$res = mysql_query($SQL); 
while($val=mysql_fetch_array($res)) { 
echo "<option>".$val["SERVICE_CENTRE_DESTINATAIRE"]."</option>\n"; 
}?></select> 


Je voudrais que dès qu'on choisit le destinataire, le service de cette personne s'affiche automatiquement.

Merci de ton aide.
0

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

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 févr. 2007 à 10:15
Ben... tu as la réponse... non ?
<hr />


Cordialement                Bul             [mon Site]         [M'écrire]  




<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
5 févr. 2007 à 10:56
mais si tu veux 2 select, et quand on clique dans l'un ça selectionne dans l'autre :<select...onchange" l'autre select .selectedIndexthis.selectedIndex;"... >
<hr />


Cordialement                    Bul                 [mon Site]             [M'écrire]     




<hr />
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
5 févr. 2007 à 23:45
Salut,

Il y a trois solutions, que je vois.
1) Serveur tu rappelles ta page avec  la valeur de ton destinataire sélectionner
et ta page reviens avec la liste de nom de service avec la valeur selected sur le bon enregistrement.

Si tu changes le nom du service et tu appuyes sur update, je pense que c'est le but de la manoeuvre tu appelles la même page avec des paramètres différents dans le get ou le post.

Inconvient, beaucoup de trafic réseau, recalcul de la page et companie pour mettre a jour un select.

2) Tu ajoutes dynamiquement du javascript dans la paage avec un tableau
associative
tab['nom']='valueservice'
...
Et sur le onchange
tu recuperes l'index ou la value (c'est comme tu veux le gérer
et que tu sélectionner la valeur associer dans la deuxieme liste
avec le selectedIndex

après un un peu de javascript.

Avantage : pas de rechargement de la page.

Inconvénient : Connaître un peu le javascript.

3) Faire de l'AJAX c'est à la mode, et internet l'explique comment ca marche.
Incovénient : javascript
Il faut trouver une bonne bibliotheque et comprendre le  principe.
Complexité de maintenance, mais moindre que si c'est en pur javascript, ca dépend que comment c'est fait dans ton cas, il y a pas de grosse différences je pense.
Avantage : Le traitement est déporté sur le serveur, exemple ici faire une requête qui correspond au nom selectionné.
Trafic réseau minime.
 
0
Rejoignez-nous