OVH Cloud OVH Cloud

Les listes deroulantes

7 réponses
Avatar
maxx
Salut,

Je cr=E9e un tableau html dans lequel chaque ligne comporte un select et
deux zone textes. Lorsque je selectionne dans la liste un numero,
automatiquement le nom et le prenom s'affiche distinctement dans les
deux zones textes.
Je realise cette operation =E0 l'aide d'une fonction Javascript.
La fonction la voila:

<script type=3D"text/javascript" language=3D"javascript">
<!--
function fctSelectChange( strlicence )
{
window.location.href =3D "tabremplir.php?numlicence=3D" + strlicence;
}
-->
</script>

ensuite dans le code html :
(=2E..)
<td width=3D'20%' bgcolor=3D'#AAAAAA' align=3D'center'><b><font
color=3D'#FFFFFF' size=3D'2'><select name=3D"numlicence"
onChange=3D"fctSelectChange(this.options[this.selectedIndex].value)">
<option value=3D"Selectionner"> Selectionner</option>
(=2E..)
Et
(=2E..)
<td width=3D'20%' bgcolor=3D'#AAAAAA' align=3D'center'><b><font
color=3D'#FFFFFF' size=3D'2'>
<input type=3D"text" name=3D"nom_patineur" size=3D"20" maxlength=3D"40"
value=3D"<?php echo $sql->getnom($_GET["lettre"]);?>"/></font></b></td>
(=2E..)

La methode fonctionne tr=E8s bien, mais lorsque je mets une deuxieme
ligne dans mon tableau html, les valeurs se confondent (les selections
dans chaque liste deroulante ne sont pas differenci=E9s).
Quelle methode pour rendre chaque liste d=E9roulante independant?

Merci.

7 réponses

Avatar
ASM
maxx wrote:
Salut,

Je crée un tableau html dans lequel chaque ligne comporte un select et
deux zone textes. Lorsque je selectionne dans la liste un numero,
automatiquement le nom et le prenom s'affiche distinctement dans les
deux zones textes.
Je realise cette operation à l'aide d'une fonction Javascript.
La fonction la voila:

<script type="text/javascript" language="javascript">
<!--
function fctSelectChange( strlicence )
{
window.location.href = "tabremplir.php?numlicence=" + strlicence;
}
-->
</script>

<select name="numlicence"
onChange="fctSelectChange(this.options[this.selectedIndex].value)">
<option value="Selectionner"> Selectionner</option>
(...)
<input type="text" name="nom_patineur" size="20" maxlength="40"
value="<?php echo $sql->getnom($_GET["lettre"]);?>"/>

lorsque je mets une deuxieme
ligne dans mon tableau html,


Quelle 2ième ligne ?

les valeurs se confondent (les selections
dans chaque liste deroulante ne sont pas differenciés).
Quelle methode pour rendre chaque liste déroulante independant?


Manifestement c'est de l'entier ressort du php
puisque le onchange du select lance une page php ...
et que les champs sont remplis par le php.

Il n'y a aucun besoin de javascript pour ce faire !
Pour ne pas se mélanger les pinceaux,
suffit d'avoir des noms différents
pour chaque liste et chaque champ de texte

<form name="form1" action="tatabremplir.php" method="get">
<p>Licence : <select name="numlicence">
<option ...
.../...
</select>
<input type="submit" value="OK" />
<input type="text" name="nom_patineur" size="20" maxlength="40"
value="<?php echo $sql->getnom($_GET["lettre"]);?>"/>



--
Stephane Moriaux et son [moins] vieux Mac

Avatar
maxx
En fait, je suis obligé d'utiliser du javascript.Sur chaque ligne du
tableau j'ai une liste deroulante. Chaque liste est independante et met
un jour les champs (sur la meme ligne) dès que l'on selectionne une
valeure dans la liste. C'est après que je fais un boutton submit afib
d'envoyer les données.
Sur le script actuel, les listes se melange les pinceaux en mettant à
jour tous les champs. Le javascript me sert donc à dynamiser mon
tableau et pas un envoyé les deonnées.
Avatar
ASM
maxx wrote:
En fait, je suis obligé d'utiliser du javascript.Sur chaque ligne du
tableau j'ai une liste deroulante. Chaque liste est independante et met
un jour les champs (sur la meme ligne) dès que l'on selectionne une
valeure dans la liste. C'est après que je fais un boutton submit afib
d'envoyer les données.
Sur le script actuel, les listes se melange les pinceaux en mettant à
jour tous les champs. Le javascript me sert donc à dynamiser mon
tableau et pas un envoyé les deonnées.

Ha ! voilà qui est mieux :-)

(ce n'est pas ce que j'avais vu dans le code)

Je vais supposer que tu n'as qu'un seul formulaire sur ta page.
(et que tu sais éviter l'emploi de tables pour ta présentation)

<script type="text/javascript">
function slct(sel) {
// récup option choisi
var i = sel.selectedIndex;
// récup du nom du select qui sera du genre : sel_001
selnom = sel.name;
// le champ visé aura un nom du genre : chp_001
// determinage de ce nom de champ à partir de celui du select
var chp = selnom.substring(selnom.indexOf('_'),selnom.length);
chp = 'champ' + chp; // remplacer 'champ' si on veut ot' chose
// si on selectionne le titre du select (son 1er option)
if(i==0) alert('Faites un autre choix dans la liste');
// sinon on verse dans le champ la valeur de l'option choisi
else document.forms[0].elements[chp].value = sel[i].value;
// puis, on remet le select à la case départ
// sel.selectedIndex = 0;
// non ! ce n'était pas une bonne idée,
// le php en a certainement besoin
}
</script>

<form action="mon.php">
<p>Nom : <select name="selecteur_001" onchange="slct(this);">
<option selected="selected">Choisir un Nom</option>
<option value="Dupont Antoine">Dupont</option>
<option value="Durant Henri">Durant H</option>
<option value="Durant Beatrice">Durant B</option>
</select>
<input type="text" name="champ_001">
<p>Licence : <select name="selecteur_002" onchange="slct(this);">
<option selected="selected">Choisir une License</option>
<option value="30123.12.f">01</option>
<option value="1245.ij2.f">02</option>
<option value="45845.lfg.f">03</option>
</select>
<input type="text" name="champ_002">
... / ...
<p>Truc : <select name="selecteur_021" onchange="slct(this);">
<option selected="selected">Choisir un truc</option>
<option value=" ...
<opt ...
</select>
<input type="text" name="champ_021">
... / ...
<p><input type="submit" value="Envoi">
</form>

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
maxx
Re,

Super merci, c'est exactement ça! Je l'ai pas encore essayé avec des
requêtes SQL, mais ça devrait poser aucun problème
interopérabilité.

++
Avatar
ASM
maxx wrote:
Re,

Super merci, c'est exactement ça! Je l'ai pas encore essayé avec des
requêtes SQL, mais ça devrait poser aucun problème
interopérabilité.


pour les requetes sql :
tu vas certainement nommer tes selects et inputs avec des nom barbares
du genre : $[nom]
Va-ce fonctionner avec mon truc qui repère un champ par un nom finissant
par un numéro ? (le même numéro que celui du select correspondant)

Normalement pour ton php, seuls les selects devraient t'interresser.
Ce qui est inscrit dans le champ texte n'est que pour le confort du visiteur
(la même chose sera renvoyée par le select)

Le php n'est pas ma tasse de thè :-(

--
Stephane Moriaux et son [moins] vieux Mac

Avatar
maxx
Malheureusement ça ne fonctionne pas pas avec le php (je fais un
select dans une base de données avec la valeur recupere dans la liste
déroulante) :-(
Il serait pas possible de retourné la ou les valeurs de
"document.forms[0].elements[chp].value = sel[i].value;" par
l'intermediaire d'un "window.location.href" afin de recuperer la
donnée avec un GET dans php?
J'ai vue sur le net qu'on pouvait envoyer grâce à cette fonction
(exemple : window.location.href =
"ma_page?selecteurxxx=valeur&selecteurxxx=valeur etc...). Est ce
possible avec ce code de pouvoir le faire?
Avatar
ASM
maxx wrote:
Malheureusement ça ne fonctionne pas pas avec le php (je fais un
select dans une base de données avec la valeur recupere dans la liste
déroulante) :-(
Il serait pas possible de retourné la ou les valeurs de
"document.forms[0].elements[chp].value = sel[i].value;" par
l'intermediaire d'un "window.location.href" afin de recuperer la
donnée avec un GET dans php?


ben ... et le submit à quoi sert-ce ?

réponse :
à envoyer la page stipulée dans l'action du form et,
automatiquement, tous les éléments du form suivront

J'ai vue sur le net qu'on pouvait envoyer grâce à cette fonction
(exemple : window.location.href > "ma_page?selecteurxxx=valeur&selecteurxxx=valeur etc...). Est ce
possible avec ce code de pouvoir le faire?


et donc, dans l'exo, l'action envoie

mon.php?select_001=Dupont%20Henri&champ_001=Dupont%20Henri&select_002457.fdt.f&champ_002457.fdt.f

tu as donc tes infos (en double(*) : select + champ)

Le php est tt à fait capable de les récupérer,
exactement de la même manière qu'avec ton window.open()


(*) le selecteur et le champ de même rang renvoient la même info
d'où mon interrogation quant à la nécessité de ces champs associés ?

--
Stephane Moriaux et son [moins] vieux Mac