Comment faire une liste déroulante avec deux critères???

Résolu
Signaler
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009
-
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
-
j'ai une table qui s'appelle labo, voilà comment elle se présente en mysql:
Labo(IdentLabo, Nbre_de_postes, Batiment, NumSalle)

je voudrais qu'il m'affiche les salles que j'ai réservé avec la métode distinct, il marche pour un seul critère mais pas deux. voilà mon programme. aider moi svp. merci de m'indiquer comment faire pour afficher le reste de la table dans une autre page.

<html>

<?php
$user="root";
$host="Localhost";
$password="";
$database="gestion_laboratoire";

$connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
$db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
$rq = "SELECT DISTINCT Batiment, NumSalle FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action='traitement.php' method='post'>
<select name='Batiment'>\n";
<select name='NumSalle'>\n";

while ($ligne = mysql_fetch_array($result))
{ extract($ligne);
if ($Batiment<>"")
echo "<option value='$Batiment'>$Batiment\n";
extract($ligne);
if ($NumSalle<>"")
echo "<option value='$NumSalle'>$NumSalle\n";
}
echo "</select>\n";
echo "</form>\n";?>

</html>

21 réponses

Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

RESULTAT

reservationsalle.php
<html>

<?php
$user= "root";
$host="Localhost";
$password="";
$database="gestion_laboratoire";

$connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
$db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
$rq = "SELECT Batiment,NumSalle FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action='traitement.php' method='post'>
<select name='Batiment_Salle'>\n";

while ($ligne = mysql_fetch_array($result))
{
$valeur=$ligne['Batiment'].'/'.$ligne['NumSalle'];
echo "<option value='".$valeur."'>".$valeur."</option>\n";
}
echo "</select>\n";
echo "</form>\n";?>

</html>
----------------------------------------------------------------------------------------------------------------------------------------------------------
traitement.php

<html>

<?php
//Connexion au serveur
if(!$conn= mysql_connect("Localhost","root","")) { echo ("Prob connexion au serveur"); exit();}
//Connexion a la base de données
$db= mysql_select_db("gestion_laboratoire");
if(!$db) { echo ("Problème de connexion à la base"); exit(); }

//structure du tableau
echo "IDENTIFICATION DE LA SALLE

";
echo "

";
echo "";
echo("\");
echo(\"----
Identification de la salle |
Nombre de postes |
Batiment |
Numéro de la salle |\");
$var =explode('/',$_POST['Batiment_Salle']);
//(où Batiment_Salle est le name du select)
$batiment=$var[0];
$salle=$var[1];
$req=\"select * from labo where Batiment='$batiment' and NumSalle='$salle'\";
//( si tu fais ici echo $req; verifie ce qu'il ya dans la chaine)
$result=mysql_query($req, $conn);
//Recupération des résultats
while($lig=mysql_fetch_array($result))
{
echo (\"$lig[0], \");
echo (\"$lig[1], \");
echo (\"$lig[2], \");
echo (\"$lig[3], \");
}//Déconnexion de la base de données
mysql_close($conn);
echo("
");
echo "

";
?>

</html>

Voila maintenant ca s'affiche correctement!!!
Messages postés
34
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
17 janvier 2007

Si tu fais deux requétes myql ca serait plus pratique, parceque deux select imbriqués en (x)html ca existe pas :)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Effectivement, c'est original... ;-)

Il a raison: tu dois faire deux listes, mais non imbriquées.
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

je veux choisir le batiment et la salle afin d'avoir toutes les autres informations
merci de me proposer la solution au programme.
Messages postés
34
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
17 janvier 2007

par exemple ça, en reprenant ton code :
<html>

<?php
$user="root";
$host="Localhost";
$password="";
$database="gestion_laboratoire";

$connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
$db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
$rq = "SELECT DISTINCT Batiment FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action='traitement.php' method='post'>
<select name='Batiment'>\n";

while ($ligne = mysql_fetch_array($result))
{
if ($ligne['Batiment'] <>"")
echo "<option value='
".$ligne['Batiment']."
'>".
$ligne['Batiment']."
\n";
}
echo "</select>\n";

$rq = "SELECT DISTINCT NumSalle FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action='traitement.php' method='post'>
<select name='NumSalle'>\n";

while ($ligne = mysql_fetch_array($result))
{
if ($ligne['NumSalle'] <>"")
echo "<option value='
".$ligne['
NumSalle
']."
'>".
$ligne['
NumSalle
']."
\n";
}
echo "</select>\n";

echo "</form>\n";?>

</html>
Messages postés
34
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
17 janvier 2007

Oups, deux formulaires par contre ça sert à rien, voilà :

<html>

<?php
$user="root";
$host="Localhost";
$password="";
$database="gestion_laboratoire";

$connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
$db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
$rq = "SELECT DISTINCT Batiment FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action='traitement.php' method='post'>
<select name='Batiment'>\n";

while ($ligne = mysql_fetch_array($result))
{
if ($ligne['Batiment'] <>"")
echo "<option value='
".$ligne['Batiment']."
'>".
$ligne['Batiment']."
\n";
}
echo "</select>\n";

$rq = "SELECT DISTINCT NumSalle FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<select name='NumSalle'>\n";

while ($ligne = mysql_fetch_array($result))
{
if ($ligne['NumSalle'] <>"")
echo "<option value='
".$ligne['
NumSalle
']."
'>".
$ligne['
NumSalle
']."
\n";
}
echo "</select>\n";

echo "</form>\n";?>

</html>

Par contre faut savoir si les NumSalle différent en fonction de Batiment, auquel cas faudrait modifier un peu.
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

ben il y a aussi ce probleme là que je viens d'y penser tout a l'heure
comment faire si la salle n'existe pas dans un batiment???
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
pourquoi deux listes ?
$rq = "SELECT Batiment,Numsalle FROM labo ORDER BY Batiment, NumSalle";
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
<html>

<?php
$user= "root";
$host="Localhost";
$password="";
$database="gestion_laboratoire";

$connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
$db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
$rq = "SELECT Batiment,NumSalle FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action= 'traitement.php' method='post'>
<select name= 'Batiment_Salle' >\n";

while ($ligne = mysql_fetch_array($result))
{
$valeur=$ligne['Batiment'].'/'.$ligne['NumSalle'];
echo "<option value='".$valeur." '>".$valeur."</option>\n";
}
echo "</select>\n";

echo "</form>\n";?>

</html>

et dans ton traitement.php
tu fais un explode de $_POST avec ' / ' et tu recuperes les deux valeurs pour construire ta requete
moi je ferais comme ça (mais encore une fois je ne ferais qu'une page en 2 parties
1- affichage selection
2- affichage des données d'apres la selection
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

le programme reconnait bien mais je sais pas trop comment afficher tous les résultats maintenant dans une autre page grace a ces renseignements.
comment y procéder?
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

affichage des données d'apres la selection (traitement.php)

<html>

<?php
//Connexion au serveur
if(!$conn= mysql_connect("Localhost","root","")) { echo ("Prob connexion au serveur"); exit();}
//Connexion a la base de données
$db= mysql_select_db("gestion_laboratoire");
if(!$db) { echo ("Problème de connexion à la base"); exit(); }
$var=explode('/',$_POST[''Batiment_Salle]);
//(où Batiment_Salle est le name du select)
$batiment=$var[0];
$salle=$var[1];
$req="select * form labo where Batiment='$batiment' and NumSalle='$salle'";
$result=mysql_query($req, $conn);
//Recupération des résultats
while($row = mysql_fetch-row($result)){
....

---> Au secours !!!
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
...

$req="select * form labo where Batiment='$batiment' and NumSalle='$salle'";

//( si tu fais ici echo $req; verifie ce qu'il ya dans la chaine)

$result=mysql_query($req, $conn);

//Recupération des résultats

while($lig = mysql_fetch_array($result))

{



echo $lig[0];

echo $lig[1];

echo $lig[2];

echo $lig[3];



}//Déconnexion de la base de données

mysql_close($conn);



?>
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

voila le prog mais toujours le meme probleme au niveau while

<html>

<?php
//Connexion au serveur
if(!$conn= mysql_connect("Localhost","root","")) { echo ("Prob connexion au serveur"); exit();}
//Connexion a la base de données
$db= mysql_select_db("gestion_laboratoire");
if(!$db) { echo ("Problème de connexion à la base"); exit(); }

//structure du tableau
echo "IDENTIFICATION DE LA SALLE";
echo "
";
echo("<table>");
echo("<tr><th>Identification de la salle</th>
<th>Nombre de postes</th>
<th>Batiment</th>
<th>Numéro de la salle</th></tr>");
$var=explode('/',$_POST['Batiment_Salle']);
//(où Batiment_Salle est le name du select)
$batiment=$var[0];
$salle=$var[1];
$req="select * form labo where Batiment='$batiment' and NumSalle='$salle'";
//( si tu fais ici echo $req; verifie ce qu'il ya dans la chaine)
$result=mysql_query($req, $conn);
//Recupération des résultats
while($lig = mysql_fetch_array($result))
{

echo $lig[0];
echo $lig[1];
echo $lig[2];
echo $lig[3];

}//Déconnexion de la base de données
mysql_close($conn);

?>

</html>
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

voila ce qui m'affiche comme résultat

DENTIFICATION DE LA SALLE


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\program files\easyphp1-8\www\site internet\reservation\traitement.php on line 26


Identification de la salle |
Nombre de postes |
Batiment |
Numéro de la salle |
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
$req="select * form labo where Batiment='$batiment' and NumSalle='$salle'";
echo $req;

ça dit quoi ?
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

lol


IDENTIFICATION DE LA SALLE
select * form labo where Batiment='c' and NumSalle='105 '
Identification de la salle |
Nombre de postes |
Batiment |
Numéro de la salle |
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

la première partie c'était ca:

reservationsalle.php
<html>

<?php
$user="root";
$host="Localhost";
$password="";
$database="gestion_laboratoire";

$connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
$db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
$rq = "SELECT Batiment,NumSalle FROM labo ORDER BY Batiment, NumSalle";
$result = mysql_query($rq) or die ("Exécution de la requête impossible");

//création d'un formulaire contenant une liste de sélection
echo "<form action='traitement.php' method='post'>
<select name='Batiment_Salle'>\n";

while ($ligne = mysql_fetch_array($result))
{
$valeur=$ligne['Batiment'].'/'.$ligne['NumSalle'];
echo "<option value='".$valeur." '>".$valeur."</option>\n";
}
echo "</select>\n";
echo "</form>\n";?>

</html>

A partir de cette requete, afficher toutes les informations

traitement.php
<html>

<?php
//Connexion au serveur
if(!$conn= mysql_connect("Localhost","root","")) { echo ("Prob connexion au serveur"); exit();}
//Connexion a la base de données
$db= mysql_select_db("gestion_laboratoire");
if(!$db) { echo ("Problème de connexion à la base"); exit(); }

//structure du tableau
echo "IDENTIFICATION DE LA SALLE";
echo "
";
echo("<table>");
echo("<tr><th>Identification de la salle</th>
<th>Nombre de postes</th>
<th>Batiment</th>
<th>Numéro de la salle</th></tr>");
$var=explode('/',$_POST['Batiment_Salle']);
//(où Batiment_Salle est le name du select)
$batiment=$var[0];
$salle=$var[1];
$req="select * form labo where Batiment='$batiment' and NumSalle='$salle'";
//( si tu fais ici echo $req; verifie ce qu'il ya dans la chaine)
$result=mysql_query($req, $conn);
//Recupération des résultats
while($lig = mysql_fetch_array($result))
{

echo $lig[0];
echo $lig[1];
echo $lig[2];
echo $lig[3];

}//Déconnexion de la base de données
mysql_close($conn);

?>

</html>

mais je ne sais pas pourquoi il ne veut pas marcher et m'indique le problème (voir-ci dessus) avec while
[Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ...]
Messages postés
99
Date d'inscription
vendredi 20 janvier 2006
Statut
Membre
Dernière intervention
8 septembre 2009

erreur trouver, ce n'est pas select * form mais select * FROM
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
select * form labo where Batiment= 'c' and NumSalle= '105 '

il ya un caractere blanc apres 105

echo "<option value ='".$valeur." '>".$valeur."</option>\n";

peut etre à cause de '".$valeur." ' --> supprime l'espace ici


echo "<option value='".$valeur."'>".$valeur."</option>\n";
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
select * form
--> pas mal !!