FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » liste deroulante depandante avec php
 

liste deroulante depandante avec php

Il y a 265 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : liste deroulante depandante avec php
 
Plus d'informations

Bonjour,
 
Pour mon site, je veux créer un formulaire avec 2 listes déroulantes sur lesquelles.
si on selectionne une valeur dans la premiere liste (onChange),
je veux que la deuxieme liste soit remplie automatiquement partir d'une table mySQL.  
 
par exemple si je selectionne FRANCE dans la liste1 (qui contient les pays), je veux que la liste2 (qui contient les villes) m'affiche les grandes villes de FRANCE (qui sont generalement dans une table myql).
j'ai pu remplir la liste des pays et non celle des villes (avec php bien sur)
si quelqu'un peut me donner un coup de main.
merci.

Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

Si tu fais ça en php, c'est peut-être pas très judicieux, vu qu'il faudra recharger ta page à chaque clic dans le premier menu pour afficher la liste dans le 2e... Mais c'est possible. Par ex : tu link ta valeur de la première liste (France par ex) dans une variable GET et après tu fais une boucle avec condition en php pour dire que si GET existe alors il faut lister toutes les valeurs en dépendant depuis ta table mysql (par ex, il faudra 2 champ par ville : un avec le nom de la ville et un avec le nom du pays). Essaie d'écrire un début de code et on t'aidera à le finir si tu n'y arrives pas ;)
 
Oriente plutôt vers du javascript pour le faire. Mais dans ce cas je ne peux pas t'aider, je ne connais pas assez le javascript :/


---------------
.: La Pipicy Team :love: :.
Profil : Pointeur
Plus d'informations

c'est possible sans recharger la page avec ajax...


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Plus d'informations

merci pour tout marsien!
ça me touche beaucoup du fait d'essayer.
je vais tout de meme te presenter ma bd avant de vous envoyer le code.
tpays(idpays*,pays); tville(idpays*,idville*,ville);
j'éspere que tu pourras me donner un coup de main, l'essentiel pour moi que ça puisse marcher.
 
 
<form method="post" name="fvn"><br>
  Pays  
  <select name="pays" size="1" id="pays" onChange="">
  <option value="%" selected>Indifferente</option>  
  <?php  
mysql_connect("localhost","root" );  
mysql_select_db("autocom" );
$requet = "SELECT * FROM pays";
if($resultat=mysql_query($requet))
 {
 while($ligne= mysql_fetch_row($resultat))
  {
  $idpays=$ligne[0];  
  $pays=$ligne[1];
  echo '<option value="',$idpays,'">',$pays,'</option>';
  }
 }
 else
 {
 echo "erreur de la requete";
 }
 mysql_close();
?>
</select><br><br><br>
Ville
  <select name="ville" size="1" id="ville">
  <option value="%" selected></option>
        </select><br>  
    <input name="submit" type="submit" value="Envoyer">
  <br>
</form>
 
 

Profil : Pointeur
Plus d'informations

balise [code] [:bordel]


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

Voilà un exemple de ce qui pourrait être fait en php. Je laisse le soin à ceux qui connaisse l'ajax (javellisant ou non :o ) de proposé une solution en tirant parti.
 
Je t'ai commenté le code ci-dessous pour que tu t'y retrouves. Il n'y a rien de très compliqué, mais si il y a un truc qui te parait obscur, n'hésite pas demander :)
 

Code :
  1. <form method="post" name="fvn" action="test2menuderoulants.php"> <!-- on recharge la page avec le nouveau paramètre induit par la validation d'une option dans le premier menu déroulant, c'est-à-dire la sélection d'un pays -->
  2.         <br>
  3.             Pays 
  4.             <select type="checkbox" name="pays" size="1" id="pays" onChange="">
  5.                 <option value="">Indifferente</option>
  6. <?php 
  7.     mysql_connect("localhost","root","" ); 
  8.     mysql_select_db("autocom" );
  9.     $requet = 'SELECT * FROM pays ORDER BY pays'; // on classe par ordre aphabétique les pays
  10.     if($resultat=mysql_query($requet))
  11.     {
  12.         while($ligne= mysql_fetch_row($resultat))
  13.         {
  14.             $idpays=$ligne[0]; 
  15.             $pays=$ligne[1];
  16.             echo '<option value="' . $idpays . '">' . $pays . '</option>';
  17.         }
  18.     }
  19.     else
  20.     {
  21.         echo "erreur de la requete";
  22.     }
  23. ?>
  24.             </select>
  25.             <input name="submit" type="submit" value="Envoyer"> <!-- peut être remplacer par un javascript onChange... -->
  26.             <br><br>
  27.         </form>
  28.         <br>
  29.         <form method="post" name="fvn" action="test2menuderoulants.php"><!--comme pour le premier menu déroulant, on peut recharger la page en appliquant le nouveau paramètre, c'est-à-dire le choix de la ville -->
  30.         <br>
  31.             Ville
  32.             <select name="ville" size="1" id="ville">
  33.                 <option value="%" selected></option>
  34. <?php
  35.     if(isset($_POST['pays'])) // on vérifie qu'un pays à bien été sélectionné
  36.     {
  37.         $requet = 'SELECT * FROM ville WHERE idpays=' . $_POST['pays'] . ' ORDER BY ville'; // on choisit dans la table ville les villes dont le pays correspond à la variable POST, c'est-à-dire à celui qui avait été sélectionné dans le 1er menu déroulant et on les classe par ordre alphabétique
  38.         if($resultat=mysql_query($requet))
  39.         {
  40.             while($ligne= mysql_fetch_row($resultat))
  41.             {
  42.                 $idpays=$ligne[0]; 
  43.                 $idville=$ligne[1];
  44.                 $ville=$ligne[2];
  45.                 echo '<option value="' . $idville . '">' . $ville . '</option>';
  46.             }
  47.         }
  48.         else
  49.         {
  50.             echo "erreur de la requete";
  51.         }
  52.     }
  53.     mysql_close();
  54. ?>
  55.             </select>
  56.             <input name="submit" type="submit" value="Envoyer">
  57.         </form>


 
En espérant que c'est ce que tu souhaitais  :hello:


---------------
.: La Pipicy Team :love: :.
G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

marsien -> Tu ne verifie pas la validité du contenu de ta variable $_POST['pays'] avant de l'inserer dans ton SQL ? :o


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

C'est vrai, mais vu le principe du script, je ne le jugeais pas nécessaire. Ce sont des listes déroulantes fermées dont le contenu est issu de bases sql a priori sans erreurs...
 
:)


---------------
.: La Pipicy Team :love: :.
G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Y'a moyen de faire (subir dans le cas présent) du SQL injection avec ce genre de 'détails' :o
 
Enfin c'est un peu HS ;)


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
zeb
Profil : Modérateur libre
Plus d'informations

> a priori sans erreurs  :lol:
 
Voila 99.9% des bugs, des trous de sécurités et autres mauvaises surprises dans notre domaine :D Je crois que je n'ai pas laissé assez de % pour la malveillance :ange:

Je me la pête
Profil : /!\ Docteur - PDG
Plus d'informations

Vous avez parfaitement raison :jap:
 
Charge au demandeur d'améliorer et sécuriser ce script en tenant compte de vos conseils. ;)


---------------
.: La Pipicy Team :love: :.

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » liste deroulante depandante avec php
 

Annonces Google
Publicité
Les ressources relatives