requête à partir de 2 listes déroulantes

Eléphanteau du PHP | 16 Messages

04 avr. 2006, 18:26

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 ?

Mammouth du PHP | 19672 Messages

04 avr. 2006, 21:55

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 16 Messages

04 avr. 2006, 22:51

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.

Mammouth du PHP | 19672 Messages

04 avr. 2006, 23:04

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 16 Messages

04 avr. 2006, 23:29

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'] : "";

Mammouth du PHP | 19672 Messages

05 avr. 2006, 08:50

Vérifie donc s'il ne manquerait pas un ";" à la fin de l'instruction précédente :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

05 avr. 2006, 09:10

Il ne manque rien, de ce côté c'est ok

Mammouth du PHP | 19672 Messages

05 avr. 2006, 09:14

Montre donc les 10 premières lignes de code, j,ai un doute...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 16 Messages

05 avr. 2006, 09:20

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>

Mammouth du PHP | 19672 Messages

05 avr. 2006, 09:21

On écrit "<?php" et non "<? php"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 16 Messages

05 avr. 2006, 09:22

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>