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 :

[SQL] aide pour construire une requête


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Points : 56
    Points
    56
    Par défaut [SQL] aide pour construire une requête
    slt,
    voila j'ai un moteur de recherche immobilier auquel j'ai affecté une liste déroulante permettant de selectionner le prix d'un bien, donc une liste déroulante a laquelle j'ai affecté un minimum et une autre à laquelle j'ai affecté un maximum.
    J'ai créé une table bien a laquelle j'ai affecté une ligne correspondant au prix.
    A chaque bien j'ai donc rentré le prix et je souhaiterai donc connaitre la syntaxe permettant de faire correspondre mon choix compris entre un minimum et un maximum et le prix rentré dans la base.
    voila 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
    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
     
    <td>
    <select name="MIN" class="titrerecherche" style="width:95">
    <option value="0" SELECTED>No Min</option>
     <option value="1">100,000</option>
    <option value="2">125,000</option>
    <option value="3">150,000</option>
    <option value="4">175,000</option>
    <option value="5">200,000</option>
    <option value="6">225,000</option>
    <option value="7">250,000</option>
    <option value="8">275,000</option>
    <option value="9">300,000</option>
    <option value="10">325,000</option>
    ...
    ...
    ...
    <option value="41">2,000,000</option>
    </select>
    </td>
     
    <td>
    <select name="MIN" class="titrerecherche" style="width:95">
    <option value="0" SELECTED>No Min</option>
     <option value="1">100,000</option>
    <option value="2">125,000</option>
    <option value="3">150,000</option>
    <option value="4">175,000</option>
    <option value="5">200,000</option>
    <option value="6">225,000</option>
    <option value="7">250,000</option>
    <option value="8">275,000</option>
    <option value="9">300,000</option>
    <option value="10">325,000</option>
    <option value="11">350,000</option>
    ...
    ...
    ...
    <option value="41">2,000,000</option>
    </select>
    </td>
     
    $query = "select * from vente where 1=1 ";
    switch($_POST["MIN"])
    {
     
      case '0':
      $query .= " AND PRIX (cette partie a rajouter)  0";
      break;
     
      case '1' :
      $query .= " AND PRIX (cette partie a rajouter)  100000";
      break;
     
      case '2' :
      $query .= " AND PRIX (cette partie a rajouter)  125000";
      break;
     
      case '3' :
      $query .= " AND PRIX (cette partie a rajouter)  150000";
      break;
     
      case '4' :
      $query .= " AND PRIX (cette partie a rajouter)  175000";
      break;
     
      case '5' :
      $query .= " AND PRIX (BETWEEN? :oops: )  200000";
      break;
     
    ...
    ...
    ...
     
    }
     
    witch($_POST["MAX"])
    {
     
      case '0':
      $query .= " AND  5000000";
      break;
     
      case '1' :
      $query .= " AND 100000";
      break;
     
      case '2' :
      $query .= " AND 125000";
      break;
     
      case '3' :
      $query .= " AND 150000";
      break;
     
      case '4' :
      $query .= " AND 175000";
      break;
     
      case '5' :
      $query .= " AND 200000";
      break;
     
    ...
    ...
    ...
     
    }
    merci pour votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Points : 120
    Points
    120
    Par défaut
    Salut,

    pourquoi les switch?

    construit directement ta requete de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "select * from vente where PRIX between ".$_POST["MIN"]." AND ".$_POST["MAX"];
    attention, selon le type du champ PRIX tu sera peut être obligé de forcer le cast pour la comparaison, pas sur, mais c'est le cas pour les clauses ORDER BY ou il fait par défaut des comparaisons alphabétiques plutot que numérique (même pour les type décimal!)

    dans ce cas, si les resultats sont abérants avec la première solution essaye çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "select * from vente where PRIX between (".$_POST["MIN"]." + 0)AND (".$_POST["MAX"]." + 0)";
    Mysql gèrera lui même le cast en numérique.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Points : 120
    Points
    120
    Par défaut
    Euh oui pardon cela implique que tu mettre directement les bonnes valeurs à comparer dans les attributs "value" de tes listes déroulantes (celles que tu appliques dans les switch, "100000" a la place de "1", "125000" au lieu de "2" etc.)

    De plus si ton champ PRIX est typé entier (int, bigint etc.), ne tiens pas compte de ma remarque sur les cast.

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Points : 56
    Points
    56
    Par défaut
    yop gisele j'ai rajouté cette partie à la suite du code que tu connais déja
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query .= " AND PRIX between (".$_POST["MIN"]." + 0)AND (".$_POST["MAX"]." + 0)";
    par contre j'ai modifié la valeur du premier option value correspondant a NoMax parceque si je ne renseigne pas cette valeur je n'ai aucun resultat, j'ai donc mis 10000000000 a la place de 0
    Par contre si t'as une autre technique plus correct je suis preneur

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Points : 120
    Points
    120
    Par défaut
    lol,

    y a assez de 0? et si c'est Bill Gates ou cresus qui vends sa maison sur ton site tu seras marron !!

    non je déconne, oui ben bon reflexe, je voyais que çà a faire.

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 153
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par gisele
    lol,

    y a assez de 0? et si c'est Bill Gates ou cresus qui vends sa maison sur ton site tu seras marron !!
    lol oé t'as raison je vais rajouté quelques zeros de plus on sait jamais
    allez encore merci.

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

Discussions similaires

  1. Aide pour construire une requête
    Par DonKnacki dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/02/2011, 11h25
  2. aide pour construire une requête
    Par Daniela dans le forum Débuter
    Réponses: 11
    Dernier message: 13/07/2009, 14h28
  3. aide pour construire une requête sur Mysql
    Par wagui26 dans le forum Débuter
    Réponses: 8
    Dernier message: 13/02/2009, 23h43
  4. Aide pour construire une requête SQL
    Par squalito dans le forum Oracle
    Réponses: 1
    Dernier message: 09/03/2007, 15h04
  5. Aide pour construire une requête SQL
    Par squalito dans le forum Langage SQL
    Réponses: 3
    Dernier message: 09/03/2007, 14h08

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