Liste déroulante et onChange

[Résolu]
Signaler
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017
-
Messages postés
16
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
25 mai 2005
-
Bonjour à tous,

J'ai dans le même formulaire un Select reprenant les données d'une BD ainsi que plusieurs Input Type Texte. Je souhaite que lorsque je sélectionne dans la liste (Select) l'un des éléments, toutes les données lui correspondant s'affichent dans les Input respectifs.

Quelqu'un peut-il m'aider ?

Merci


David

6 réponses

Messages postés
16
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
25 mai 2005

Salut,



J'ai en tête une solution qui n'est pas trés "joli", elle consiste à
charger au démarage de la page dans un tableau en javascript les
données de ta BD, et une fois que tu changes le select, tu appeles une
fonction javascript qui va chercher dans ton tableau si il y a une
correpondance et renvoie la/les valeurs dans les champs input
corespondants.

Voilà pour la théorie, si tu veux un exemple pratique dis le moi.
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017

Merci pour ta réponse. Oui, en effet, je souhaite un exemple pratique. Peux-tu me l'envoyer


David
Messages postés
16
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
25 mai 2005

La requête vers la bd est en ASP car c'est ce que j'avais utilisé.

Normalement ca marche...

Bonne chance



<html>

<head>

<title>Document sans titre</title>

</head>

<script language="javascript" type="text/javascript">

// creation du tableau carac

carac=new Array;

<%

dbPath = Server.MapPath("mabase")

Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" _

& " DBQ=" & dbPath

k=0

// remplissage du tableau

SQL_filtre="SELECT * FROM matable"

Set RS = server.createobject("ADODB.Recordset")

RS.Open SQL_filtre,Conn , 3, 3

while not RS.eof

// Creation de la 2° dimension du tableau et remplissage

Response.Write("carac["& k &"]= new Array(5);")

Response.Write("carac["& k &"][0]=" & RS("champ0") & ";")

Response.Write("carac["& k &"][1]='" & RS("champ1") & "';")

Response.Write("carac["& k &"][2]='" & RS("champ2") & "';")

k=k+1

RS.MOVENEXT

wend

RS.close %>

k=<%response.write(k)%>

k=k-1;



function miseajour() {

for (i=0;i<=k;i++) {

if (document.form.case0.options[document.form.login.selectedIndex].value==carac[k][0]) {

document.form.case1.value=carac[k][1]

document.form.case2.value=carac[k][2]

//suite du traitement

}

}

</script>







<form method="post" name="form">

<%

' Construction de la liste déroulante

SQL="SELECT * FROM matable"

Set RS = server.createobject("ADODB.Recordset")

RS.Open SQL,Conn , 3, 3

%>

<select name="case0" onChange="miseajour()"> <!-- Validation sur changement -->

<option>Choississez</option>

<% while not RS1.eof %>

<option
value=<%=RS("champ0")%>><%=RS("champ0")%></option>

<% RS1.MOVENEXT

wend

RS1.close %>

</select>





</form>





</html>
Messages postés
16
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
25 mai 2005

J'ai posté le code un peu rapidement y'a juste une confusion vers la fin du code, il faut remplacer tous les RS1 par RS
Messages postés
153
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
6 janvier 2017

Merci encore, mais je crains que cela ne fonctionne car je travaille avec PHP. Peux-tu me confirmer que ça peut fonctionner ?

Meilleures salutations.


David
Messages postés
16
Date d'inscription
mardi 8 juin 2004
Statut
Membre
Dernière intervention
25 mai 2005

Ca fonctionne à condition que tu modifie le code asp en php, mais pour cela malheureusement je ne pourrai pas t'aider. Va éventuellement voir sur le site asp-php.net, ils font la correspondance ASP -> Php.
Bonne chance