Page 1 sur 1

requête à partir de 2 listes déroulantes

Posté : 04 avr. 2006, 18:26
par lebreton22
Bonjour
Je vous explique mon pb : j'ai créé 2 listes déroulantes en javascript : la première charge les items de la seconde en fonction des choix de liste1
Je voudrais maintenant utiliser les deux listes pour créer une requête mysql soit quelque chose du genre :

Code : Tout sélectionner

select * from matable where champ1= 'valeur champ 2'
Champ1 est le choix de liste 1 et champ 2 celui de liste 2.
Est-ce que quelqu'un aurait une idée ?

Posté : 04 avr. 2006, 21:55
par Cyrano
Une idée pour faire quelle partie au juste : ta question est très vague. La première chose à faire consiste à récupérer les choix du formulaire et ensuite à les insérer dans ta requête. Donc comment récupères-tu tes informations ?

Posté : 04 avr. 2006, 22:51
par lebreton22
Voilà bien la question : "comment récupérer les données issues des deux listes. .. ce qui me permettra ensuite de faire la requête.
Ci-dessous le code qui fonctionne d'une liste à l'autre. En résumé, il me faudrait:
1) récupérer dans la liste "rubrique" la valeur saisie comme nom de champ
2) dans la liste "page", j'ai la valeur à passer dans la requête.

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1"> <TITLE>Recherche stagiaires</TITLE> <SCRIPT language="JavaScript"> <!-- function Choix(form) { i = form.Rubrique.selectedIndex; if (i == 0) { for (i=0;i<4;i++) { form.Page.options[i].text=""; } return; } form.Page.selectedIndex = 0; switch (i) { case 1 : var txt = new Array ('Groupe 1','Groupe 1 A','Groupe 1 B','Groupe 2','Groupe 2 A','Groupe 2 B','Groupe Bilingues'); break; case 2 : var txt = new Array ('Arts Visuels','Musique','EPS','Langue','Breton','',''); break; case 3 : var txt = new Array ('Sciences et Technologie','Histoire-Géographie','','','','',''); break; case 4 : var txt = new Array ('Arts Visuels','Musique','Langue','','','',''); break; case 5 : var txt = new Array ('Anglais','Espagnol','','','','',''); break; case 6 : var txt = new Array ('MLD 1','MLD 2','MLD 3','','','',''); break; case 7 : var txt = new Array ('SAP','APR','','','','',''); break; } form.Page.options[0].text="--- Choisissez une page ---"; for (i=0;i<7;i++) { form.Page.options[i+1].text=txt[i]; } } // --> </SCRIPT> </HEAD> <BODY BGCOLOR="purple" MARGINHEIGHT="0" MARGINWIDTH="0"> <div align="center"> <table border="0" cellspacing="0" cellpadding="10" width="780" bgcolor="#EBC896" align=""> <tr> <td height="120"> <p align="center"><strong>S&eacute;lection des stagiaires</strong></p> <form> <table> <tr> <th>Formations</th> <th>Groupes</th> </tr> <tr> <td><select name="Rubrique" onChange='Choix(this.form)'> <option>--- Choisissez une rubrique ---</option> <option>Enseignements</option> <option>Dominante</option> <option>Complément 1</option> <option>Compléments 2 et 3</option> <option>Langue</option> <option>MLD</option> <option>Analyses de Pratiques</option> </select></td> <td><select name="Page"> <option>--- Choisissez une page ---</option> <option></option> <option></option> <option></option> <option></option> <option></option> <option></option> <option></option> </select></td> </tr> </table> </form> <h2 align="center">&nbsp; </h2></td> </tr> </table> </div> </BODY> </HTML>
Avec tous mes remerciements pour vos idées.

Posté : 04 avr. 2006, 23:04
par Cyrano
Il faut que dans un premier temps il y ait adans la balise form deux attributs:
  1. action="" : la valeur doit être l'url relative (ou absolue) de la page de traitement;
  2. method="" : post ou get selon qu'on transmet les variables via l'url (get) ou non (post)
Il manque également le bouton submit.
Si la page de traitement est en PHP, on récupèrera alors les données selon la valeur ed l'attribut method soit dans $_GET soit dans $_POST
Ces deux variables sont des "super-globales" et sont des tableaux associatifs dont les index sont les valeurs des attributs "name" des champs du formulaire. Donc on récupèrera par exemple $_POST['Rubrique'] et $_POST['Page'] qu'on pourra transférer dès réception dans des variables normales :
<?php
$rubrique = isset($_POST['Rubrique']) ? $_POST['Rubrique'] : "";
$page     = isset($_POST['Page'])     ? $_POST['Page']     : "";
//... suite du code
?>
Il suffira donc ensuite tout simplement d'insérer ces variables dans la requête SQL.

Posté : 04 avr. 2006, 23:29
par lebreton22
C'est fait mais maintenant j'ai ceci :
Parse error: parse error, unexpected T_VARIABLE in /var/www/free.fr/b/b/ecole.hoche22/traitement.php on line 10

ligne incriminée :
$rubrique = isset($_POST['Rubrique']) ? $_POST['Rubrique'] : "";

Posté : 05 avr. 2006, 08:50
par Cyrano
Vérifie donc s'il ne manquerait pas un ";" à la fin de l'instruction précédente :-k

Posté : 05 avr. 2006, 09:10
par Invité
Il ne manque rien, de ce côté c'est ok

Posté : 05 avr. 2006, 09:14
par Cyrano
Montre donc les 10 premières lignes de code, j,ai un doute...

Posté : 05 avr. 2006, 09:20
par lebreton22
J'ai voulu vérifier les variables dans une page que voici
<!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 titre</title>
</head>

<body>
<? php
$rubrique = isset($_POST['Rubrique']) ? $_POST['Rubrique'] : "";
$page = isset($_POST['Page']) ? $_POST['Page'] : "";
echo $_POST['Rubrique'];
echo $_POST['Page'];

//... suite du code
?>
</body>
</html>

Posté : 05 avr. 2006, 09:21
par Cyrano
On écrit "<?php" et non "<? php"

Posté : 05 avr. 2006, 09:22
par lebreton22
Pour ce qui est de la page principale :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

	<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
	<TITLE>Recherche stagiaires</TITLE>
<SCRIPT language="JavaScript">
<!--
function Choix(form) {
i = form.Rubrique.selectedIndex;
if (i == 0) {
  for (i=0;i<4;i++) {
    form.Page.options[i].text="";
    }
  return;
  }
form.Page.selectedIndex = 0;
switch (i) {
case 1 : var txt = new Array ('Groupe 1','Groupe 1 A','Groupe 1 B','Groupe 2','Groupe 2 A','Groupe 2 B','Groupe Bilingues'); break;
case 2 : var txt = new Array ('Arts Visuels','Musique','EPS','Langue','Breton','',''); break;
case 3 : var txt = new Array ('Sciences et Technologie','Histoire-Géographie','','','','',''); break;
case 4 : var txt = new Array ('Arts Visuels','Musique','Langue','','','',''); break;
case 5 : var txt = new Array ('Anglais','Espagnol','','','','',''); break;
case 6 : var txt = new Array ('MLD 1','MLD 2','MLD 3','','','',''); break;
case 7 : var txt = new Array ('SAP','APR','','','','',''); break;
}
form.Page.options[0].text="--- Choisissez une page ---";
for (i=0;i<7;i++) {
  form.Page.options[i+1].text=txt[i];
  }
} 
// -->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="purple" MARGINHEIGHT="0" MARGINWIDTH="0">
<div align="center">
  <table border="0" cellspacing="0" cellpadding="10" width="780" bgcolor="#EBC896" align="">
    <tr> 
      <td height="120"> <p align="center"><strong>S&eacute;lection des stagiaires</strong></p>
        <form action="traitement.php" method="post">
          <table>
            <tr> 
              <th>Formations</th>
              <th>Groupes</th>
            </tr>
            <tr> 
              <td><select name="Rubrique" onChange='Choix(this.form)'>
                  <option>--- Choisissez une rubrique ---</option>
                  <option>Enseignements</option>
                  <option>Dominante</option>
                  <option>Complément 1</option>
                  <option>Compléments 2 et 3</option>
                  <option>Langue</option>
                  <option>MLD</option>
                  <option>Analyses de Pratiques</option>
                </select></td>
              <td><select name="Page">
                  <option>--- Choisissez une page ---</option>
                  <option></option>
                  <option></option>
                  <option></option>
                  <option></option>
                  <option></option>
                  <option></option>
                  <option></option>
                </select></td>
            </tr>
          </table>
          <input type="submit" name="Submit" value="Envoyer">
        </form>
        <h2 align="center">&nbsp; </h2></td>
    </tr>
  </table>
</div>

</BODY>
</HTML>