Formulaire avec menus deroulants

Résolu/Fermé
cerco - 15 oct. 2007 à 22:54
 cerco - 24 oct. 2007 à 00:44
Bonjour,
j'ai un petit formulaire avec deux champs : filieres et matieres
les deux champs sont des menus deroulants:
filieres contient: banque et infogestion
matieres contient: compta, maths fine, algo et uml
j'aimerai savoir comment puis je faire pour que, à chaque filiere corresponde des matieres speciques. c'est à dire que:
sur le menu filiere si je selectionne banque automatiquement sur le menu matieres je n'aurai plus que compta et maths fine. si je selectionne par contre infogestion, alors sur le menu matieres je ne doix avoir que algo et uml.
quelqu'un peut me donner des astuces pour le faire ? un exemple de code pour plus d'eclaircissement ne sera pas mal. car suis pas trop fort en PHP
merci d'avance pour toute contribution

5 réponses

Salut,

Si ton fichier s'appelle formulaire.php

tu fais;

<?php
//initialisation des tableaux
$array_filiere=array('banque','infogestion');
$array_banque=array('compta', 'maths' fine);
$array_infogestion=array('algo',' uml ');

if(isset($_POST['filiere'])){
      $filiere=$_POST['filiere'];
}else{$filiere="";
}
?>

<form name="formulaire1" method="post" action="formulaire.php">
    <select name="filiere" onClick=submit();>
<?php
        foreach ($array_filiere as $value){
?>
            <option value="<?php  echo $value; ?>" <?php if($filiere==$value){echo "slected";}><?php  echo $value; ?> </option>
<?php
       }
?>
  </select>
<br>

<?php
// si on a selectionne dans la premiere liste on va afficher la deuxieme
if(isset($_POST['filiere'])){
// on determine quel array en fonction du choix
  switch ($filiere){
     case "banque":
         $array2=$array_banque;
    break;
   case "infogestion":
         $array2=$array_infogestion;
    break;
}
// on affiche la liste 
?>
   <select name="matieres">
<?php
        foreach ($array2 as $value){
?>
            <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php
       }
?>
  </select>

<?php
}
?>
</form>


Voila a qqs erreur de frappe pres, je n'ai pas d'editeur php sous la main et en plus je galere avec un clavier qwerty !

Le principe est que au choix dans la liste 1 (onClick=submit) on envoie le formulaire et en fonction du choix on affiche le contenu d'un array ou l'autre dans la deuxieme liste

Si tu changes de nom de fichier penses a changer action="........"

Dans la premiere liste <option ......... le if($filiere==$value) echo 'selected' sert a garder le choix au reafichage du formulaire.

Tu peux rajouter d'autres array bien sur

@lain
0
Resalut,

comme ceci ca devrait mieux fonctionner:

<?php
//initialisation des tableaux
$array_filiere=array('banque','infogestion');
$array_banque=array('compta', 'maths' fine);
$array_infogestion=array('algo',' uml ');

if(isset($_POST['filiere'])){
      $filiere=$_POST['filiere'];
}else{$filiere="";
}
?>

<form name="formulaire1" method="post" action="formulaire.php">
    <select name="filiere" onChange=submit();>
         <option value="-1">-- Choisissez --</option>
<?php
        foreach ($array_filiere as $value){
?>
            <option value="<?php  echo $value; ?>" <?php if($filiere==$value){echo "slected";}><?php  echo $value; ?> </option>
<?php
       }
?>
  </select>
<br>

<?php
// si on a selectionne dans la premiere liste on va afficher la deuxieme
if(isset($_POST['filiere'])){
$filiere=$_POST['filiere'];
  if($filiere=="-1"){
echo "<br><font color='red'>Veuillez selectionner une filiere !</font>";
}else{
// on determine quel array en fonction du choix
  switch ($filiere){
     case "banque":
         $array2=$array_banque;
    break;
   case "infogestion":
         $array2=$array_infogestion;
    break;
}
// on affiche la liste 
?>
   <select name="matieres">
         <option value="-1">-- Choisissez --</option>
<?php
        foreach ($array2 as $value){
?>
            <option value="<?php  echo $value; ?>" ><?php  echo $value; ?> </option>
<?php
       }
?>
  </select>

<?php
}
}
?>
</form>





Avec onChange ca irra mieux !

Si tes listes ont plus d'items tu modifies les $array_.......


@lain
0
salut alain et merci pour ton code. je te signale que ton code marche bien. seulement y'a un petit problème, en fait mon formulaire ne contient pas juste ces deux champs, il y'a d'autres champs aussi à remplir(nom, prenom,...), alors je me rend compte qu'avec ton code le submit est remplacé par la selection d'une filiere. or dans le formulaire il y'a un bouton "envoyer" qui permet de valider le formulaire aprè remplissage de tous les champs. du coup je ne sais plus ce que je dois mettre au niveau de action=".....", afin de recuperer touts ces infos.
y'a t-il un moyen de regler cela?
encore merci d'avance
0
Salut,

tu laisses action= comme c'est



if(isset($_POST['filiere'])){
$filiere=$_POST['filiere'];
}else{$filiere="";
}
if(isset($_POST['nom'])){
$nom=$_POST['nom'];
}else{$nom="";
}
if(isset($_POST[pre'nom'])){
$prenom=$_POST['prenom'];
}else{$prenom="";
}

etc....


dans les autres input tu mets:


<input type="text" name="nom" value="<?php echo $nom; ?>">
<input
<input name="prenom" value="<?php echo $prenom; ?>">

etc... ainsi lorsque le formulaire sera poste par le submit de la liste on ne les perdra pas

tu mets qd même un bouton submit dans ton formulaire

<input type="submit" name="envoyer" value="Soumettre">


et dans ton fichier formulaire.php:
tu rajoutes une condition
if($_POST['envoyer']=="Soumettre"){ // attention adaptes en fonction de ce que tu mets dans ton bouton comme value
// tes instructions de traitement des valeurs du formulaire

}
0

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

Posez votre question
salut Alain42, tout d'abord je suis desolé pour ma reponse si tardive.
en fait c'est juste pour t'informer que ton code marche nickel. je t'en remercie beaucoup.
bien des choses à toi
A+
0