Liste déroulante php

mich8569 Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   -  
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'explique mon problème :
J'ai un formulaire avec des champs de texte et une liste déroulante

J'ai une liste déroulant remplie à l'aide d'une base de donnée et je voudrais que lorsqu'on choisit un element dans la liste, les champs de texte se mettent tout seul a jour en fonction des elements de la base de données ?
Est-ce que vous arrivez a suivre lol?

En fait je voudrais faire ca pour mettre facilement à jour ma base de données a l'aide d'un formulaire et donc de choisir un element dans une liste et les autres champs s'affichent tout seul pour qu'on puisse savoir ce que contient la base de données

Est-ce que c'est possible au moins?
Si oui est-ce que vous savez comment on fait?

Merci d'avance
A voir également:

12 réponses

fabweb
 
Merci Alain pour ta réponse rapide !

Effectivement je cherchais sur le forum quand j'ai reçu ta réponse.
Je me posais la question depuis le début si j'etais obligé de passer par une base de données...ce que je n'ai jamais fait pour l'instant.
Je me disais que je trouverais peut-etre des scripts avec les tableaux en javascript (array) qui pourrait suffire, je n'ai quand même pas deux cents données.
Mais si je dois y passer eh bien je vais me plonger dans les bdd et ce fameux Ajax...

tu me confirmes donc que pour plus de 2 listes déroulantes liées il faut passer par les bases de données?

Pour le select multiple, je ne pense pas que ça concerne mon probleme : un choix dans une liste en provoque un autre dans une autre qui en provoque un autre dans une troisieme. Pour résumer mon objectif : on choisit un jour, on choisit le matin ou l'aprem de ce jour et l'activité de cette demi-journée correspondante. Evidemment ça serait trop simple que tous les matins aient les memes activités tous les jours.... :-(

Merci en tout cas !
fab
1
bacchuss Messages postés 1162 Date d'inscription   Statut Membre Dernière intervention   190
 
salut
oui, c'est possible
lors de la sélection d'un élément dans ta liste, un evenement est déclenché.
De mémoire, cet evenement est "onchange" pour le javascript.
A cet evenement, tu crees une fonction qui te permet de recuperer par une requete les lignes dont tu as besoin en passant comme condition a ta requete l'element selectionne dans ta liste...

et voila, tu n'as pmlus qu'a remplir tes champs dans ta page.
0
mich8569 Messages postés 68 Date d'inscription   Statut Membre Dernière intervention   39
 
La fonction onChange c'est une fonction javascript ou php?
0
bacchuss Messages postés 1162 Date d'inscription   Statut Membre Dernière intervention   190
 
onchange c'est javascript
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
onChange = javascript et fais appel à une fonction php qui s'occupe de renvoyer l'élément à mettre à jour dans ton text (via une requete sql).
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
En gros tu dois faire une fonction javascript qui doit permettre de changer la valeur du champ de texte. La valeur qui sera mise sera "calculée" par une petite fonction php ou autre qui fait une requete sur la base en fonction de ce qui a été selectionné. Cette fonction retourne le résultat trouvé dans la base, dans la fonction javascript qui alors met à jours la valeur du champ texte.
Ta fonction javascript est appellé dans ton formulaire via la syntaxe suivante :

<SELECT NAME.... onChange=\"javascript::mafonctionjavascript();\" ...>
0

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

Posez votre question
benoitXV Messages postés 227 Date d'inscription   Statut Membre Dernière intervention   17
 
bonjour,

je suis novice et je voudrais utilisé un cet évenement pour mettre a jour ma page.

Mais je n'ai aucune idée de la syntaxe:

-pour detecter l'evenement
-ecrire une fonction javascript associé

Auriez vous un petit exemple svp?


merci d'avance
0
i_lham
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
<script language="javascript">
<!--fonction qui remplisse le deuxieme combobox-->
var listeprojet = Array();
listeprojet[0] = Array("Application", "App_1");
listeprojet[1] = Array("Application", "App_1");
listeprojet[2] = Array("Site Web", "Site web 1");
listeprojet[3] = Array("Site Web", "site web 2");
listeprojet[4] = Array("Conception", "Concep 1");
listeprojet[5] = Array("Conception", "Concep 2");
listeprojet[6] = Array("Conception", "Concep 3");
listeprojet[7] = Array("Conception", "Concep 4");

function fillCombo(){
var combo = document.getElementById('select');
var selected_value = combo.value;
combo_2 = document.getElementById('projet');
//effacer les elements dans le combo 2
combo_2.options.length = 1;

//remplir le combo 2 avec les nouveaux elements
for(var i=0,j=1;i<listeprojet.length;i++){
if(listeprojet[i][0] == selected_value){
element = new Option(listeprojet[i][1], listeprojet[i][1]);
combo_2.options[j] = element;
j++;
}
}

}
</script>
</head>

<body>
<form name="frm" method="post" action="">
<table>
<tr>
<td>Type projet</td>
<td><select name="select" id="select" onchange="javascript:fillCombo()">
<option value="">--Type Projet--</option>
<option value="Application">Application</option>
<option value="Site Web">Site Web</option>
<option value="Conception">Conception</option>
</select></td>
</tr>
<tr>
<td>Type projet</td>
<td><select name="select" id="projet">
<option value="">--Choisir un projet--</option>
</select></td>
</tr>
</table>
</form>
</body>
</html>
0
benoitXV Messages postés 227 Date d'inscription   Statut Membre Dernière intervention   17
 
moi j'ai utiliser la syntaxe suivante en php

echo 'document.getElementById("ma_liste").options['.$k.'].className = "mon_style";';


Merci
0
fabweb
 
Merci i_lham, ça m'est tres utile ton code, mais j'aurai un problème supplémentaire : comment faire si on veut faire une troisieme liste déroulante dont les options dépendent de la deuxième combo box? J'ai essayé d'adapter ton code mais je ne suis pas très doué en javascript hélas...
Donc par exemple si Site web1 entraine 3 choix possibles dans la liste suivante.
C'est peut-etre simple mais je sèche lamentablement.

Une question subsidiaire : je récupère le résultat de ton code avec un script php, OK, mais y a t-il un moyen de récupérer l'ensemble des choix plutot que juste le dernier? "site web - site web2" plutot que juste "site web2" ?
Sinon je peux contourner le probleme mais si quelqu'un sait faire je suis preneur :)

fab
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
il faut utiliser AJAX, fais une recherche sur ce site "listes déroulantes liées"

j'ai déjà aidé à ce sujet


si tu veux récupérer plusieurs choix d'une liste il faut mettre ta liste en multiple

par contre le on change ne doit pas marcher (à tester ?)
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
le principe des listes déroulantes liees:

le choix dans le 1 (ex departements) provoque l'affichage de la 2 (ex les villes du département)
le choix dans la 2 (une ville) provoque l'affichage de la 3 (les musées ?)

tout dépend de la taille des différentes listes

si pas trop importantes tu peux faire des array javascript mais si évolution dans le temps c'est un peu lourd

si plus important le mieux c'est la BDD et AJAX

le principe de AJAX

sur le onChange lsite1 on appelle la fonction AJAX/javascript

cette dernière vient lire le choix liste1 et appelle un script php sur le serveur en lui passant ce choix en argument

le script php va lire dans la BDD ce qu'il faut afficher dans la liste2 en fonction du choix liste1
la réponse de php reçu par AJAX (liste2) est affichée dans la page et tout ceci en "arrère plan" donc sans recharger la page

idem pour liste2 ==> liste3

peut être connais tu www.siteduzero.com pour lecture BDD et affichage dans une page
0
fabweb
 
Explication limpide, merci, je serai moins bete à la fin de la journée en ce qui concerne Ajax :)
Ca a l'air bien puissant et pratique ce truc. J'ai cru comprendre qu'en ajoutant de librairies tu pouvais même faire du drag and drop, etc...

J'ai eu une initiation aux bdd il y a quelques années, donc je m'y remettrais assez vite si j'y suis obligé, surtout que mon problème n'est pas bien compliqué je pense. Et oui je connais ce site :)

J'ai eu une idée également en cherchant à simplifier mes requetes : je vais essayer d'inverser la demande, partir de l'activité recherchée et en déduire les sessions correspondantes dans la semaine: ça ne me ferait que deux listes et ça je sais faire :) peut-etre moins élégant et plus lourd mais si ça marche, plus rapide vu que mon script est déja fait.

Pour les select multiple j'ai peut-etre lu un peu vite ta réponse : en fait c'est quand on veut récupérer les infos des 2 listes que tu me parlais de cet attribut je pense. Je vais approfondir ça, parce que je dois récupérer l'activité et la session choisie...

Merci Alain!

fab
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
une liste en select multiple permet a l'utilisateur de sélectionner plusieurs options dans UNE liste

je ne pense pas que ce soit cela que tu recherches
0