IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Restriction d'une requête par menu déroulant [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut Restriction d'une requête par menu déroulant
    Bonjour à tous,

    Meilleur Vœux !

    J'ai un petit problème, voilà j'aimerais effectuer une recherche dans une base de donnée et cette recherche s'effectuerait à l'aide de plusieurs listes déroulante.

    J'ai commencé à coder un petit quelque chose qui fonctionné qu'en je n'avais qu'une seul liste mais depuis que j'en ai rajouté plusieurs les choses se compliquent et cela ne marche plus, car j'autorise le fait que l'on ne puisse sélectionner qu'un seul champ et les autres restent vide...

    voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    <!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></title>
     
    <meta name="robots" content="index, follow" />
    <meta name="revisit-after" content="21 days" />
    <meta name="author" content="" />
    <meta name="copyright" content="" />
    <meta name="rating" content="Global" />
    <meta http-equiv="imagetoolbar" content="no" />
    <meta name="Description" content="" />
    <meta name="Keywords" content="" />
    <meta name="abstract" content="" />
    <link type="text/css" rel="stylesheet" href="css/layout.css" title="default" media="all" />
    </head>
     
    <body id="about">
     
    <div id="main-wrapper">
     
    <div id="logo"><a href="index.html" title="Find a Property home"><span></span></a></div>
    <div id="nav-wrapper">
    <div id="navigation"><ul><li><a href="index.php" title="Accueil" id="home-link">Accueil</a></li><li><a href="about.php" title="plan" id="about-link">Plan du site</a></li><li><a href="/index.html" title="news" id="news-link">Nouvelle news</a></li><li><a href="/offre.php" title="offres" id="products-link">Les offres</a></li><li><a href="/index.html" title="services" id="services-link">Votre service</a></li><li><a href="/index.html" title="contact" id="contact-link" class="last">Contact</a></li></ul></div>
    <div id="nav-right"></div>
    </div>
    <div class="clear"></div>
     
    <div id="content-area">
    <br />
    <div id="content-top"></div>
    <div id="content-main">
      <h2 title="about find a property">Choix des critères de recherche</h2>
    <form action="offre.php" method="post">
     
    <p>
    <!--<input type="text" name="prix"><br />-->
    <b>Prix :</b>
    <select name="prix">
    	<option value="">-</option>
        <option value="5">5 euros</option>
        <option value="10">10 euros</option>
        <option value="25">25 euros</option>
        <option value="35">35 euros</option>
    	<option value="45">45 euros</option>
        <option value="55">55 euros</option>
    </select>
     
    <b> Utilisateur </b>
    <select name="possesseur">
        <option value="">-</option>
        <option value="Corentin">Corentin</option>
        <option value="Florent">Florent</option>
        <option value="Mathieu">Matthieu</option>
    	<option value="Michel">Michel</option>
        <option value="Patrick">Patrick</option>
    	<option value="Sebastien">Sebastien</option>
    </select>
     
    <input type="submit" value="Envoyer" />
    </p>
    </form>
     
    <?php
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("coursphp"); // Sélection de la base coursphp
     
     if(isset($_POST['prix'])) // Verification de l'existance d'un prix
     {
     $prix=$_POST['prix']; }
     else
     {
     $prix=""; 
     }
     if(isset($_POST['possesseur'])) // Vérification de l'existance d'un possesseur
     {
     $possesseur=$_POST['possesseur'];}
     else
     {
     $possesseur="";
     }
     
      if ($prix!="" && $possesseur=""  )
      {
      $reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '$prix'");
      }
    	if ($prix="" && $possesseur!="")
    	{
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE possesseur='$possesseur'");
    	}
    		if( $prix!="" && $possesseur!="")
    		{
    		$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '$prix' AND possesseur='$possesseur'");
    		}
     
    // Requête SQL
    // On fait une boucle pour lister tout ce que contient la table :
    {
    ?>
    Le prix choisi est de : <?php echo $prix;?>euros !<br /><br /> 
    <?php
    }
    while ($donnees = mysql_fetch_array($reponse))
    {
    ?>
      <p>
        <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
        Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à <?php echo $donnees['prix']; ?>   euros !<br />
      <p>
    <?php
    }
    mysql_close(); // Déconnexion de MySQL
    ?>
     <br />
    </div>
    </div>
    </body>
    </html>
    Merci d'avance pour votre aide précieuse.

  2. #2
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Lorsque tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['prix'])) // Verification de l'existance d'un prix
    Tu testes juste si ta variable existe. Tu ne testes pas à savoir si elle est vide ou pas.
    Il faut faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['prix']) && ($_POST['prix'] <> "")) // Verification de l'existance d'un prix
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['possesseur']) && ($_POST['possesseur'] <> "")) // Vérification de l'existance d'un possesseur

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Bonjour,

    Merci Jumano pour ta réponse,j ai effectué les changements dont tu as parlé mais j obtient toujours une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result ressource in C:\wamp\www\offre.php on line 96
    Je suis un peu perdu...

    Merci d avance pour vos réponses !

  4. #4
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Lorsque tu affiches pour la première fois ta page, "$reponse" n'est pas encore définie, puisque tes requêtes s'effectuent que si ton foumulaire a été transmit.
    Il faut donc modifier légèrement ton code PHP et l'incorporé dans un "if" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    if(isset($_POST['prix']) && isset($_POST['possesseur'])) { //Si les deux variables existent
     
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("coursphp"); // Sélection de la base coursphp
     
    	if($_POST['prix'] <> "") { // Si le prix n'est pas vide
     		$prix = $_POST['prix'];
    		} else {
    		$prix = ""; 
     	}
     
     	if($_POST['possesseur'] <> "") { // Si le possesseur n'est pas vide
     		$possesseur = $_POST['possesseur'];
    		} else {
    		$possesseur="";
     	}
    // Requête SQL en fonction des varaibles $prix et $possesseur
      	if ($prix != "" && $possesseur = "") {
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '$prix'");
      	}
     
    	if ($prix = "" && $possesseur != "") {
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE possesseur='$possesseur'");
    	}
     
    	if( $prix != "" && $possesseur != "")		{
    		$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '$prix' AND possesseur='$possesseur'");
    		}
    ?>
    Le prix choisi est de : <?php echo $prix; ?> &euro; !<br />
    <br /> 
    <?php
    // On fait une boucle pour lister le résultat de la requête
    while ($donnees = mysql_fetch_array($reponse))
    {
    ?>
      <p>
        <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
        Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à <?php echo $donnees['prix']; ?> &euro; !<br />
      <p>
    <?php
    }
    } // Ici fermeture du crochet ==> if(isset($_POST['prix']) && isset($_POST['possesseur'])) {
    mysql_close(); // Déconnexion de MySQL
    ?>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Merci pour cette réponse, désolé que ma réponse fut si tardive... examen

    Donc me voilà de nouveau et le soucis et toujours présent même si j'ai bien compris mon erreur précédente je ne voit pas ce qui cloche ?

    voici le code corrigé grâce à l'aide de Jumano :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    <!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></title>
     
    </head>
     
    <body id="about">
     
    <div id="main-wrapper">
     
    <div id="logo"><a href="index.html" title="Find a Property home"><span></span></a></div>
    <div id="nav-wrapper">
    <div id="navigation"><ul><li><a href="index.php" title="Accueil" id="home-link">Accueil</a></li><li><a href="about.php" title="plan" id="about-link">Plan du site</a></li><li><a href="/index.html" title="news" id="news-link">Nouvelle news</a></li><li><a href="/offre.php" title="offres" id="products-link">Les offres</a></li><li><a href="/index.html" title="services" id="services-link">Votre service</a></li><li><a href="/index.html" title="contact" id="contact-link" class="last">Contact</a></li></ul></div>
    <div id="nav-right"></div>
    </div>
    <div class="clear"></div>
     
    <div id="content-area">
    <br />
    <div id="content-top"></div>
    <div id="content-main">
      <h2 title="about find a property">Choix des critères de recherche</h2>
    <form action="offre.php" method="post">
     
    <p>
    <!--<input type="text" name="prix"><br />-->
    <b>Prix :</b>
    <select name="prix">
    	<option value="">-</option>
        <option value="5">5 euros</option>
        <option value="10">10 euros</option>
        <option value="25">25 euros</option>
        <option value="35">35 euros</option>
    	<option value="45">45 euros</option>
        <option value="55">55 euros</option>
    </select>
     
    <b> Utilisateur </b>
    <select name="possesseur">
        <option value="">-</option>
        <option value="Corentin">Corentin</option>
        <option value="Florent">Florent</option>
        <option value="Mathieu">Matthieu</option>
    	<option value="Michel">Michel</option>
        <option value="Patrick">Patrick</option>
    	<option value="Sebastien">Sebastien</option>
    </select>
     
    <input type="submit" value="Envoyer" />
    </p>
    </form>
     
    <?php
    if(isset($_POST['prix']) && isset($_POST['possesseur'])) { //Si les deux variables existent
     
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("coursphp"); // Sélection de la base coursphp
     
    	if($_POST['prix'] <> "") { // Si le prix n'est pas vide
     		$prix = $_POST['prix'];
    		} else {
    		$prix = ""; 
     	}
     
     	if($_POST['possesseur'] <> "") { // Si le possesseur n'est pas vide
     		$possesseur = $_POST['possesseur'];
    		} else {
    		$possesseur="";
     	}
    // Requête SQL en fonction des varaibles $prix et $possesseur
      	if ($prix != "" && $possesseur = "") {
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '$prix'");
      	}
     
    	if ($prix = "" && $possesseur != "") {
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE possesseur='$possesseur'");
    	}
     
    	if( $prix != "" && $possesseur != "")		{
    		$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '$prix' AND possesseur='$possesseur'");
    		}
    {
    ?>
    Le prix choisi est de : <?php echo $prix; ?> &euro; !<br />
    <br /> 
    <?php
    }
    // On fait une boucle pour lister le résultat de la requête
    while ($donnees = mysql_fetch_array($reponse))
    {
    ?>
      <p>
        <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
        Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à <?php echo $donnees['prix']; ?> &euro; !<br />
      <p>
    <?php
    }
    } 
    mysql_close(); // Déconnexion de MySQL
    ?>
     
     
     <br />
    </div>
    </div>
    </body>
    </html>
    PS: j'ai joint cette fois ci la table sur laquelle j'essaye de travailler, de façon a donner une meilleur idée du problème...

    Merci d'avance
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Essaye avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php 
    if(isset($_POST['prix']) && isset($_POST['possesseur'])) { //Si les deux variables existent
     
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("coursphp"); // Sélection de la base coursphp
     
    // Requête SQL en fonction des varaibles $prix et $possesseur
      	if ($_POST['prix'] <> "" && $_POST['possesseur'] == "") {
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '".$_POST['prix']."'");
      	}
     
    	if ($_POST['prix'] == "" && $_POST['possesseur'] <> "") {
    	$reponse = mysql_query("SELECT * FROM jeux_videos WHERE possesseur='".$_POST['possesseur']."'");
    	}
     
    	if(($_POST['prix'] <> "") && ($_POST['possesseur'] <> "")) {
    		$reponse = mysql_query("SELECT * FROM jeux_videos WHERE prix < '".$_POST['prix']."' AND possesseur='".$_POST['possesseur']."'");
    	}
     
    if ($_POST['prix'] <> "" || $_POST['possesseur'] <> "") { 
     
    if ($_POST['prix'] <> "") { ?>
    Le prix choisi est de : <?php echo $_POST['prix']; ?> &euro; !<br />
    <br /> 
    <?php 
    }
    // On fait une boucle pour lister le résultat de la requête
    while ($donnees = mysql_fetch_array($reponse)){
    ?>
    <p>
        <strong>Jeu</strong> : <?php echo $donnees['nom']; ?><br />
        Le possesseur de ce jeu est : <?php echo $donnees['possesseur']; ?>, et il le vend à <?php echo $donnees['prix']; ?> &euro; !<br />
    <p>
    <?php 
    }
    }
    }
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/11/2014, 11h56
  2. requete sur une table rempli par menu déroulant
    Par tony3 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/03/2009, 10h01
  3. executer une requête par liste déroulante
    Par lolo_bob2 dans le forum Access
    Réponses: 2
    Dernier message: 15/05/2006, 11h35
  4. Comment grouper une requête par mois ?
    Par Le Pharaon dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/06/2005, 12h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo