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 :

Listes déroulantes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut Listes déroulantes
    Bonjour,

    J'ai un problème dans mon code mais je ne vois pas ou.
    Le but étant de faire une recherche avec les éléments que l'on sélectionne dans les 2 listes déroulantes.

    Voici un bout de mon 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
     
    <form method="post">
    <p>
        <select name="profondeur">
    		<option value="">----Profondeur----</option>
            <option value="- de 10 m">- de 10 m</option>
            <option value="de 11 à 49 m">de 11 à 49 m</option>
            <option value="de 50 à 99 m">de 50 à 99 m</option>
            <option value="de 100 à 149 m">de 100 à 149 m</option>
    		<option value="+ de 150 m">+ de 150 m</option>
        </select>
     
    </p>
    <p>
        <select name="distance_cote">
    		<option value="">----- Distance côtes -----</option>
            <option value="- de 10 km" >- de 10 km</option>
    		<option value="de 10 à 20 km" >de 10 à 20 km</option>
    		<option value="de 20 à 40 km" >de 20 à 40 km</option>
    		<option value="de 40 à 50 km" >de 40 à 50 km</option>
    		<option value="+ de 50 km" >+ de 50 km</option>
        </select>
    	<br><br><input type="submit" name="btsave" value="filtre" />
    </p>
    </form>
    <?php
    $conn = mysql_connect("localhost","root","") or die('Connection impossible : ' . mysql_error());
    mysql_select_db("lcv", $conn);
    if(isset($_POST['btsave']))
    {
     
    $sql=mysql_query('SELECT nom,profondeur,distance_cote FROM infos WHERE profondeur='.$_POST['profondeur'].'AND distance_cote='.$_POST['distance_cote']); 
    while($resultat=mysql_fetch_array($sql))
    echo $resultat['nom'].' : '.$resultat['profondeur'].' m'.'</br>'.$resultat['distance_cote'];
    	?>
    	<br>
    	<?php
    	if(isset($_POST['profondeur']))
    		{
    		if($_POST["profondeur"]=='- de 10 m')
    			{
    			$var=mysql_query('select nom,profondeur from infos where profondeur<10');?><ul><?php
    			}
    		if(isset($_POST['distance_cote']))
    			{
    			if($_POST["distance_cote"]=='- de 10 km')
    				{
    				$var=mysql_query('select nom,distance_cote from infos where distance_cote<10');?><ul><?php
     
    				}
     
    //(...)
    			}
    		}
     
    }
    mysql_close();
    ?>
    Merci à ceux qui pourront m'aider.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faudrait que tu remettes de l'ordre dans ton code parce que la il y a des requetes qui se balladent partout

    Tu pourrais faire quelque chose comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (isset($_POST['profondeur'])) {
    switch($_POST['profondeur']) {
    case "-10 m" : $where[] = "profondeur < 10"; break;
    case "de 11 à 49 m" : $where = "profondeur BETWEEN 11 AND 49"; break;
    }
    }
     
    $sql  = "SELECT nom,profondeur,distance_cote FROM infos";
    if (isset($where)) {
    $sql .= "WHERE " . implode(' AND ', $where);
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut
    Juste un conseil, essaie d'éviter les espaces et accents dans les values des option, c'est très moche de faire ça lol.
    Au delà du fait que j'ignore si ça peut générer des soucis, mais bon.

    Donc si tu souhaites "nettoyer" un peu tout ça, tu peux te faire une convention et traiter les valeurs avant la requête, par exemple :

    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
    <form method="post">
    <p>
        <select name="profondeur">
    	<option value="">----Profondeur----</option>
            <option value="10">- de 10 m</option>
            <option value="11_49">de 11 à 49 m</option>
            <option value="50_99">de 50 à 99 m</option>
            <option value="100_149">de 100 à 149 m</option>
    		<option value="150">+ de 150 m</option>
        </select>
     
    </p>
    <p>
        <select name="distance_cote">
    	<option value="">----- Distance côtes -----</option>
            <option value="10" >10</option>
    	<option value="10_20" >de 10 à 20 km</option>
    	<option value="30_40" >de 20 à 40 km</option>
    	<option value="40_50" >de 40 à 50 km</option>
    	<option value="50" >+ de 50 km</option>
        </select>
    	<br><br><input type="submit" name="btsave" value="filtre" />
    </p>
    </form>
    <?php
    $conn = mysql_connect("localhost","root","") or die('Connection impossible : ' . mysql_error());
    mysql_select_db("lcv", $conn);
    if(isset($_POST['btsave']))
    {
     
    if (!empty($_POST['profondeur'])) { 
        //on est dans le cas '10' ou '150'
        if (is_int($_POST['profondeur'])) {
            $lsString = $_POST['profondeur'];
            switch($lsString) {
                case 10:
                $lsQuery = ' < 10 ';
                break;
                case 150:
                $lsQuery = ' > 150 ';
                break;
                default:
                $pos = strpos($lsString,'_');
                $lsValeur1 = substr($lsString,0,$pos);
                $lsValeur2 = substr($lsString,$pos+1,strlen($lsString));
                $lsQuery = ' BETWEEN '.$lsValeur1.' AND '.$lsValeur2.' ';
                break;
            }
        }
    }
     
    (... même principe pour l'autre combo...)
    Et après tu colles le $lsQuery dans ta requête finale, sachant que tu peux laisser un ' WHERE = 1 ' permanent, ce qui fera que tu pourras ajouter uniquement des 'AND' par la suite.

    J'espère avoir pu t'aider

  4. #4
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 10
    Par défaut
    Et est ce que ça marchera si j'ai 30 listes déroulantes?
    Parce que la requète risque de ne pas accepter plusieurs AND?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut
    comment ça la requête ne peut pas accepter plusieurs AND? je ne comprends pas bien ta question :/

Discussions similaires

  1. valeur d'une liste déroulante
    Par leeloo076 dans le forum ASP
    Réponses: 7
    Dernier message: 15/04/2004, 16h11
  2. liste déroulante
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 23/03/2004, 10h35
  3. liste déroulante avec session
    Par leeloo076 dans le forum ASP
    Réponses: 3
    Dernier message: 19/03/2004, 11h01
  4. liste déroulante en ASP vbscript
    Par leeloo076 dans le forum ASP
    Réponses: 9
    Dernier message: 17/03/2004, 16h42
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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