menus déroulants avec base de données

Eléphant du PHP | 98 Messages

19 mai 2005, 15:21

Bonjour all,
je veux faire trois menus déroulants dynamiques remplis avec une base de données, selon le choix du premier, le deuxième menu change et selon le choix du 2è, le 3è menu change... enfin voilà
je voudrais avoir une idée du fonctionnement et si ça sera qu'en Javascript ou ??
enfin voilà si vous avez des exemples ou des liens pour moi, ça serait cool!
merci :lol:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 mai 2005, 15:32

tu te connectes à la base de données
tu récupères tes données avec une requête SQL
tu boucles sur les résultats en remplissant la liste déroulante (tu écris le HTML dynamiquement)

pas besoin du javascript

edit : en fait tu as besoin du javascript si tu veux recharger la page (et donc leslistes déroulantes) dès que l'utilisateur fait un choix. Mais attention, si l'utilisateur à désactivé le Javascript, ta navigation est pourrie...

des liens : www.phpdebutant.org
dans la colonne de droite tu as tous les tutos de base correspondant aux diverses étapes pour créer tes listes
Modifié en dernier par ouckileou le 19 mai 2005, 15:35, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 mai 2005, 15:34

Ca marchera pour le remplissage, mais pour que le contenu de la 2nd change avec la valeur sélectionnée de la 1ere etc... il va surement falloir utiliser du javascript (onChange)

EDIT : excuse, j'ai posté pendant que tu éditais
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 98 Messages

19 mai 2005, 15:38

vous auriez pas par hasard des bouts de codes ? parce que j'y connais pas grand chose ne JS :/

edit:merci pour le lien

Eléphant du PHP | 98 Messages

19 mai 2005, 15:44

le problème c'est qu'il faut que j'utilise JS, vu qu'il faut que les listes changent selon le choix de l'utilisateur...

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

19 mai 2005, 15:44

moi à ta place j'essaierai déjà de remplir ma liste déroulante avec ma base de données
parceque de ce que tu veux faire, si tu ne connais pas le PHP, c'est ça le plus dur, le plus long surtout

pour le javascript, tu auras une ligne à mettre à la fin c'est tout qui sera qqchose comme :

Code : Tout sélectionner

onChange="document.form.submit()";
à mettre dans la balise <select>

donc va voir les tutos de phpdebutant sur la connexion à la base, la récupération de données et quand tu auras une belle liste déroulante remplie dynamiquement, alors tu pourras te mettre au javascript

le Javascript ce n'est qu'un petit plus dans une page HTML

Mammouth du PHP | 19672 Messages

19 mai 2005, 15:46

à défaut de bouts de code, voici un lien que j'ai déjà indiqué plusieurs fois à travers ce forum, ce serait bien d'utiliser la recherche. Voir ICI
L'idée, c'est de mettre les valeurs appelées à changer dans un tableau JavaScript et au changement dans la première zone, les autres sont adaptées.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 98 Messages

19 mai 2005, 15:52

ouckileou, pour la partie PHP il n'y a pas de problèmes en fait, c'est juste le changement des listes qui pose pb.

pour ce qui concerne les tableaux en JS, je viens de voir un exemple d'un double menu déroulant dynamique, et je comprend à peu près le truc mais le problème c'est qu'ils ne sont pas remplis par des tables et du coup j'suis un peu perdu :p
merci pour le lien Cyrano, je vais y jeter un oeil.

Eléphant du PHP | 98 Messages

20 mai 2005, 11:26

rebonjour,
help :oops:
j'ai regardé pas mal de sites mais je n'ai pas trouvé ce que je veux faire :( en effet je n'ai pas trouvé d'exemples avec des listes déroulantes alimentées par une base de données :/
j'ai essayé de regardé un peu le code JS mais je ne vois pas comment remplir un tableau avec des données venant d'une base de données... ça se trouve c'est pas faisable :p

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

20 mai 2005, 12:44

tu remplis pas directement ton tableau JS avec ta base de données, c'est en fait le PHP qui va écrire ton code JS correspondant
// récupération des données, exemple un nom et un prénom
<html>
<head>
<script language="Javascript">
var tabNoms[];
var tabPrenoms[];
<?php
$i=0;
while (list($nom,$prenom) = mysql_fetch_row($resultat)) {
   echo "tabNoms[$i] = \"$nom\"";
   echo "tabPrenoms[$i] = \"$prenom\"";
   $i++;
}
?>
</script>
</head>
voilà avec ça tu va écrire le code Javascript dans la page, et le navigateur pourra interpréter ce code et tu en feras ce que tu voudras

Eléphant du PHP | 98 Messages

20 mai 2005, 12:48

wow coool
je teste ça et je te dis :lol:
mercii

Eléphant du PHP | 98 Messages

20 mai 2005, 14:55

j'suis un peu perdu là j'ai mes listes :
<select name="menu1"> 
  <option>liste act</option> 
<? 
$sqlb = "SELECT act_nom FROM activite ORDER BY act_nom ASC";
$r_sqlb=mysql_query("$sqlb") or die("Invalid query : ".mysql_error());
$num=mysql_num_rows($r_sqlb); 
for($i=0;$i<$num;$i++){ 
  $act =  mysql_result($r_sqlb,$i,'act_nom'); 
  echo"<option>$act</option>"; 
} 
?>
</select>

<select name="menu2"> 
  <option>liste type</option> 
<? 
$sqla = "SELECT t_nom FROM type ORDER BY t_nom ASC";
$r_sqla=mysql_query("$sqla") or die("Invalid query : ".mysql_error());
$num=mysql_num_rows($r_sqla); 
for($i=0;$i<$num;$i++){ 
  $type =  mysql_result($r_sqla,$i,'t_nom'); 
  echo"<option>$type</option>"; 
} 
?>
</select>
à vrai dire, je sais vraiment pas quoi en faire là :(