fait voir ton code pour rappel
fait voir ton code pour rappel
Alors voici la requète sql, qui alimente ma liste déroulante :
Voici le javascript :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $sql = " select *, tache_id as id, tache_nom as label "; $sql .= " from k2prjtache LEFT JOIN k2users ON tache_developpeur_assigne = usrid"; $sql .= " order by label";
Puis voici le formulaire html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 function charge_form(objet) { if(objet.value) { var tabvaleur = objet.value; for (var i in tabvaleur) { document.getElementById('tache_description').value = tabvaleur[i]; document.getElementById('tache_etat').value = tabvaleur[i]; document.getElementById('tache_rem').value = tabvaleur[i]; document.getElementById('tache_date').value = tabvaleur[i]; document.getElementById('tache_temps').value = tabvaleur[i]; document.getElementById('tache_developpeur_assigne').value = tabvaleur[i]; } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <table border=0> <tr> <td> <table> <tr><td>Nom de la tache : <td><select size=1 name=tache_nom id=tache_nom onchange="charge_form(this)"> $tache_nom </select></td></tr> <tr><td>Description : <td><textarea name=tache_description id=tache_description value=""> </textarea></td></tr> <tr><td>Etat de la tache : <td><input type=text name=tache_etat id=tache_etat value="$R[tache_etat]"> </td></tr> <tr><td>Commentaire : <td><textarea name=tache_rem id=tache_rem value=""> </textarea></td></tr> <tr><td>Date : <td><input type=text name=tache_date id=tache_date value=""> </td></tr> <tr><td>Temps : <td><input type=text name=tache_temps id=tache_temps value=""> </td></tr> <tr><td>Personne assignée : <td><input type=text name=tache_developpeur_assigne id=tache_developpeur_assigne value=""> </td></tr> <tr><td>Statut : <td>$statut </td></tr> </table> <br /> <br /><br /> <input type=submit value='enregistrer'> </td> </tr> </table> </form>
Le objet.value d'un select retourne la donnée stocké dans le value du option sélectionné et non pas un tableau de valeur !
Donc déjà quand tu fais un "for in" c'est déjà faux car ce n'est pas les bonnes valeurs.
Et pour chaque "i" du "for in", tu vas écraser les valeurs de tous tes input, donc c'est à nouveau faux.
Il faudrait donc récupérer les options du select et afficher leur value ou bien leur text (suffit de faire tabvaleur[i].text).
Dans tous les cas, je ne comprends vraiment pas ce que tu cherches à faire sachant que ta requete ne retourne pas les données dont on a besoin.
De plus tu ne nous donne pas tout le code, ce qui m'interesserait c'est comment tu génères l'affichage de ton select avec ton php.
Un petit conseil, essai déjà d'afficher toutes les données correctement dans ton select avant de faire ton javascript. Il faut savoir marcher avant de savoir courrir
ben pourtant pour faire mon select j'utilise cette requète et ensuite je crée une liste :
et cela m'affiche bien ce que je veux dans ma liste a savoir des noms de taches.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $tache_nom = ConstruireSelect($sql,'selectionner','','');
Si tu veux voici le code du construireSelect :
En fait ce qu'il faut faire c'est récupérer l'id la tache selectionné dans la liste et afficher les renseignements liés à cet id.Je pense que c'est comme cela qu'il faut procéder.Non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function ConstruireSelect($sql,$deflabel,$defval,$curval) { // Construit le code d'un select à partir d'une requété SQL devant renvoyer ID et LABEL en colonnes. // Active l'enregistrement ou ID=$curval $Q=dbiDoBD($sql); $liste=""; if ($deflabel != "") $liste = "<OPTION VALUE='".$defval."'>".$deflabel; while ($R = dbiFetch($Q)) { $R[id]==$curval ? $ACTIVE=" SELECTED" : $ACTIVE=""; $liste .= "<OPTION VALUE='".formConvert($R[id])."'$ACTIVE>".$R[label]; } return $liste; }
Si tu veux faire comme ça...
Il te faut utiliser de l'ajax !
Tu récupères l'id, tu fais une requete ajax qui te retourne les valeurs à afficher dans tes input
hmmmmmm.
Et toi tu ferais comment ?
edit : A j'ai oublié de dire que les value de mes option c'était les id de ce qu'il y a
dans mon select.
Tout dépend de combien tu risques d'avoir de ligne dans ton select. S'il y en a peu, tu peux sérialiser les données dans le value, sinon ajax obligatoire.
Peu pour moi c'est une vingtaine maxi
Ben je pense qu'il y en aura plus de 20. Donc cela veut dire ajax forcément.
Bon j'ai essayé de me mettre à l'ajax mais c'est pas simple.
Voici ce que j'ai déjà :
et l'appel c'est toujours pareil :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 function charge_form(param) { if(document.all) { //Internet Explorer var XhrObj = new ActiveXObject("Microsoft.XMLHTTP") ; } else { //Mozilla var XhrObj = new XMLHttpRequest(); } var content = document.getElementById("tache_description"); var content2 = document.getElementById("tache_temps"); var content3 = document.getElementById("tache_date"); var content4 = document.getElementById("tache_rem"); var content5=document.getElementById("tache_developpeur_assigne"); XhrObj.onreadystatechange = function() { if (XhrObj.readyState == 4 && XhrObj.status == 200) content.value = XhrObj.responseText ; content2.value = XhrObj.responseText ; content3.value = XhrObj.responseText ; content4.value = XhrObj.responseText ; content5.value = XhrObj.responseText ; } XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); XhrObj.send(param); }
Mais grrrrr. C'est toujours pas bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <select size=1 name=tache_nom id=tache_nom " onchange(this)> $tache_nom </select>
Oui je pense que c'est le mieux. Si tu ne connais pas je te conseille de suivre un tuto la dessus il y en a pas mal sur le net
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager