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

Langage PHP Discussion :

Liste deroulante avec champs texte pour choix de recherche


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut Liste deroulante avec champs texte pour choix de recherche
    Bonsoir,

    j'ai donc ajouté une liste déroulante à un champs texte pour que l'utilisateur selectionne une catégorie de recherche.

    Ici la liste deroulante avec les variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <td><select name="choix">
    				<option value="0">-- SELECTIONNEZ --</option>
    				<option value="<?php $nom_colone = ("id"); ?>">Id</option>
    				<option value="<?php $nom_colone = ("Catégorie"); ?>">Catéegorie</option>
    				<option value="<?php $nom_colone = ("Produit"); ?>">Produit</option>
    				<option value="<?php $nom_colone = ("Marque"); ?>">Marque</option>
    			</select></td>
    Ici le $_post pour le choix de la recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		if(isset($_POST['envoyer-recherche-approximative']))
      {
    				$nom = mysql_real_escape_string(htmlspecialchars($_POST['recherche']));
    				$nom_colone = mysql_real_escape_string(htmlspecialchars($_POST['choix']));
     
       				$requete= "SELECT * FROM $nom_table WHERE $nom_colone LIKE '$nom%'";
    Lorsque je demande une recherche, par exemple : xxx, il m'affiche :
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE 'xxx%'' at line 1
    la variable qui est le texte tapé par l'utilisateur dans le champs de recherche, fonctionne.

    Cependant pour le choix de la liste deroulante, la variable ne fonctionne pas.

    Dans la liste deroulante je lui indique bien le choix :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <option value="<?php $nom_colone = ("id"); ?>">Id</option>
    				<option value="<?php $nom_colone = ("Catégorie"); ?>">Catéegorie</option>
    				<option value="<?php $nom_colone = ("Produit"); ?>">Produit</option>
    				<option value="<?php $nom_colone = ("Marque"); ?>">Marque</option>
    Bref je n'arrive pas a comprendre comment relier la liste déroulante et le champs de recherche ?

    Tout 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
    <!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>Recherche dans la table MySql</title>
    <style type="text/css">
    <!--
    .Style1 {color: #FF0000}
    -->
    </style>
    </head>
     
    <body>
     
    <?php  
    /* ------------------ Connexion a la BDD avec login.php ------------------ */
    require ('login.php');
    $connexion = mysql_connect($hote, $login, $pass) or die("Erreur de connexion...") ;
    $req = mysql_select_db($bdd, $connexion) or die("Erreur de connexion...") ;
     
    /* ------------------ Table ------------------ */
    $nom_table = ("alimentaire");
     
     
     
    /* ------------------ A PARTIR D'ICI COMMANDE DU BOUTON : RECHERCHE APPROXIMATIVE ------------------ */
     
    		if(isset($_POST['envoyer-recherche-approximative']))
      {
    				$nom = mysql_real_escape_string(htmlspecialchars($_POST['recherche']));
    				$nom_colone = mysql_real_escape_string(htmlspecialchars($_POST['choix']));
     
       				$requete= "SELECT * FROM $nom_table WHERE $nom_colone LIKE '$nom%'";
     
     
    $resultat = mysql_query($requete) or die(mysql_error());
     
    ?>
    <?php 
    if (mysql_num_rows($resultat) != 0) {
    echo '<div align="center"><font face="arial" size="4" color="red">Résultat de votre recherche selon : '.$nom.'.  <p>Listing ! </p></font></div> '; 
    	  } 
     
    ?>
        <table width="1493" border="1">
          <tr>
            <table width="1751" border="0">
      <tr>
        <th width="100" bgcolor="#999999" scope="col">Id</th>
        <th width="150" bgcolor="#999999" scope="col">Catégorie</th>
        <th width="150" bgcolor="#999999" scope="col">Produit</th>
        <th width="150" bgcolor="#999999" scope="col">Marque</th>
              </tr>
    	<?php
    while($ligne=mysql_fetch_array($resultat)){ 
    ?>
          <tr>
            <th bgcolor="#CCCCCC" scope="row"><?php echo $ligne['id']?></th>
            <td bgcolor="#CCCCCC"><?php echo $ligne['Id']?></td>
            <td bgcolor="#CCCCCC"><?php echo $ligne['Catégorie']?></td>
            <td bgcolor="#CCCCCC"><?php echo $ligne['Produit']?></td>
            <td bgcolor="#CCCCCC"><?php echo $ligne['Marque']?></td>
          </tr>
    	  <?php 
    	  //echo $ligne['id']. $ligne['Nom']."<br/>" ;
    	  } 
    	  }//toute la ligne est comprise dans la boucle while 
    	  ?>
    </table>
     
    	</p>
        <p align="center">Recherche d'un nom dans l'annuaire alimentaire, Veuillez selectionner une catégorie de recherche et indiquer ci-dessous le nom dans le champs pour effectuer une recherche. (<span class="Style1">*</span>) Champs obligatoire.
    <form action="" method='post'>
            </p>
        <table align="center" border="0">
        <tr>
        <td>&nbsp;</td>
        <td><select name="choix">
    				<option value="0">-- SELECTIONNEZ --</option>
    				<option value="<?php $nom_colone = ("id"); ?>">Id</option>
                                                       <option value="<?php $nom_colone = ("Catégorie"); ?>">Catéegorie</option>
    				<option value="<?php $nom_colone = ("Produit"); ?>">Produit</option>
    				<option value="<?php $nom_colone = ("Marque"); ?>">Marque</option>
    			</select></td>
        <td>&nbsp;</td>
         </tr>
        <tr>
          <td>Recherche (<span class="Style1">*</span> )</td>
          <td><input type="text" name="recherche" size="20" maxlength="20" /></td>
          <td><input type="submit" name="envoyer-recherche-approximative" value="Rechercher"></td>
        </tr>
    </table>
     
    <p>&nbsp;</p>
        <p align="center">
    <td><FORM>
    <INPUT TYPE="button" 
    	VALUE="Retour"
    	onClick="history.back()">
    </FORM>
     
    <p>&nbsp;</p>
    </body>
    </html>
    <?php mysql_close(); ?>
    Merci d'avance.
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    re,

    J'ai trouvé

    j'ai mis dans la liste déroulante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <option <?php if($mon_colone == "id") { echo 'selected'; } ?>>Id</option>
    				<option <?php if($mon_colone == "Catégorie") { echo 'selected'; } ?>>Catégorie</option>
    				<option <?php if($mon_colone == "Produit") { echo 'selected'; } ?>>Produit</option>
    				<option <?php if($mon_colone == "Marque") { echo 'selected'; } ?>>Marque</option>
    par contre j'ai séparé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    /* ------------------ Liste déroulante ------------------ */
    $nom_colone = isset($_POST['envoyer-recherche-approximative']) ? $_POST['choix'] : '';
     if ($nom_colone) 
    ?>
    du champs texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    /* ------------------ A PARTIR D'ICI COMMANDE DU BOUTON : RECHERCHE APPROXIMATIVE ------------------ */
     
    		if(isset($_POST['envoyer-recherche-approximative']))
      {
    				$nom = mysql_real_escape_string(htmlspecialchars($_POST['recherche']));
    				//$nom_colone = mysql_real_escape_string(htmlspecialchars($_POST['choix']));
     
       				//$requete= "SELECT * FROM alimentaire WHERE Produit LIKE '$nom%'";
    				$requete= "SELECT * FROM $nom_table WHERE $nom_colone LIKE '$nom%'";
     
     
    $resultat = mysql_query($requete) or die(mysql_error());
    ?>
    Merci julp pour ton tuto. http://julp.developpez.com/php/formulaires/
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <option <?php if($mon_colone == "id") { echo 'selected'; } ?>>Id</option>
    ... etc ...
    Tu n'as pas mis de valeur à tes options, il en faut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <option value="id" <?php if($mon_colone == "id") { echo 'selected'; } ?>>Id</option>
    Mais utiliser un tableau + boucle Php c'est plus pratique.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $options[] = array('value' => 'id', 'texte' => 'Id');
    $options[] = array('value' => 'categorie', 'texte' => 'Catégorie');
    $options[] = array('value' => 'produit', 'texte' => 'Produit');
    $options[] = array('value' => 'marque', 'texte' => 'Marque');
    //
    echo '<select name="choix">';
    foreach ($options as $opt) {
    	$selected = ($mon_colone == $opt['value']) ?  'selected="selected"': '';
    	echo '<option value="'.$opt['value'].'" '.$selected.'>'.$opt['texte'].'</option>';
    }
    echo '</select>';
    La valeur de l'option (choix) renvoyée par le formulaire sera celle de : value
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 412
    Points : 79
    Points
    79
    Par défaut
    bonjour,


    J'ai remplacé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //$nom_colone = isset($_POST['envoyer-recherche-approximative']) ? $_POST['choix'] : ''; // au clique
    $_POST['envoyer-recherche-approximative']; // avec la touche Entrée
    $nom_colone = mysql_real_escape_string(htmlspecialchars($_POST['choix'])); // avec la touche Entrée
     if ($nom_colone)
    par ceci, que je n'ai pas compris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $options[] = array('value' => 'id', 'texte' => 'Id');
    $options[] = array('value' => 'categorie', 'texte' => 'Catégorie');
    $options[] = array('value' => 'produit', 'texte' => 'Produit');
    $options[] = array('value' => 'marque', 'texte' => 'Marque');
    //
    echo '<select name="choix">';
    foreach ($options as $opt) {
    	$selected = ($mon_colone == $opt['value']) ?  'selected="selected"': '';
    	echo '<option value="'.$opt['value'].'" '.$selected.'>'.$opt['texte'].'</option>';
    }
    echo '</select>';
    Car j'ai le message d'erreur
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE 'xx%'' at line 1
    Merci.
    Intel I7 960 | 6 Go Ram | 5 HDD au total 3636 Go | Windows 7 Edition intégral x64 | WampServer 2.0c | Apache 2.2.8 | Php 5.2.6 | MySQL 5.0.51b
    DreamPlug | 512 mo ram | SSD 16 GO | Linux debian 2.6.39.4 | armv5tel | Lamp | PHP 5.3.3-7 | Apache 2.2.16 | Mysql 14.14

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/06/2011, 10h05
  2. formulaire avec champ texte et listes deroulantes liées
    Par tarah01 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/03/2011, 18h26
  3. [SQL] Pb liste deroulante et champ texte lié
    Par laetiheu dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 08/08/2007, 09h26
  4. alimenter liste deroulante avec champs texte
    Par logone dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 26/05/2006, 11h53
  5. liste deroulante avec plusieurs champs
    Par JulienT dans le forum Struts 1
    Réponses: 4
    Dernier message: 20/04/2004, 17h17

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