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

Signaler
Messages postés
53
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
22 juin 2008
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
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

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
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 />
Messages postés
53
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
22 juin 2008

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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
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 />
Messages postés
53
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
22 juin 2008

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.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
Ben... tu as la réponse... non ?
<hr />


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




<hr />
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
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 />
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
32
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.