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 :

Soucis sur une requête sql


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut Soucis sur une requête sql
    Bonjour,

    J'essaye de récupérer des éléments en BD en fonction de critères sélectionnés que je récupère par $_GET .
    Dans ma requête actuel, je ne parviens pas à afficher les bonnes données liées à $_GET['carb'] et $_GET['vit'] .

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="vitesse_voiture">
    <option value="0">Tous</option>
    <option value="1">Manuelle</option>
    <option value="2">Automatique</option>
    </select>
    Je fais passer les sélections dans l'url de la page de destination soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /mapage.php?carb=0&vit=1
    Pour la requête, je veux faire en sorte que :

    si $_GET['vit']==0 -> la recherche s'effectue sur tout, c'est à dire que la requête doit sélectionner tout ce qui concerne ce champ et différent de 0 ..idem pour l'autre.
    En gros, si variable=0 -> recherche globale . Si variable=1 -> recherche sur 1 uniquement. etc...

    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
     
    if($_GET['carb']!=0){
    $tcarburant = ' AND carburant_voiture = \'".mysql_real_escape_string($_GET[\'carb\'])."\' ';
    }
    if($_GET['vit']!=0){
    $tvitesse = ' AND vitesse_voiture = \'".mysql_real_escape_string($_GET[\'vit\'])."\' ';
    }
    $query = mysql_query("SELECT * FROM matable
    WHERE code_postal LIKE '".$_GET['cp']."%' 
    AND titre_annonce LIKE '%".$_GET['key']."%' 
    AND id_sous_categorie ='".mysql_real_escape_string($id_de_la_sous_categorie)."' 
    AND region='".mysql_real_escape_string($id_de_la_region)."'
    ".$tcarburant."
    ".$tvitesse."
    AND valide='1' 
    ORDER BY timestamp ASC");
    Je me triture les neurones dans tout les sens et je ne vois pas ce qui cloche dans mon code...

    Merci de votre aide (si vous avez comprit mes explications).

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour un champs texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_GET['carb']!=0){
    $tcarburant = ' AND carburant_voiture = "' .mysql_real_escape_string($_GET['carb']). "'";
    }
    Pour un champ numérique entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_GET['carb']!=0){
    $tcarburant = ' AND carburant_voiture = ' . intval($_GET['carb']);
    }
    Tu as omis d'échapper deux paramètres dans ta requête.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    Merci sabotage ,

    Il n'y a pas besoin d'échapper les ' ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_GET['carb']!=0){
    $tcarburant = ' AND carburant_voiture = \' . intval($_GET[\'carb\']);
    }
    Idem pour l'autre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($_GET['carb']!=0){
    $tcarburant = ' AND carburant_voiture = "\' .mysql_real_escape_string($_GET[\'carb\']). "\'";
    }
    C'est également normal que la requête commence par une simple quote et finisse par une double ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 92
    Points : 61
    Points
    61
    Par défaut
    [C'est également normal que la requête commence par une simple quote et finisse par une double ?]

    Oui, c'est normal.. en fait, tu peux utiliser des " ou des ' pour tes chaines de caractères. ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $lcTmp = "Bonjour ".'a tous'
    fonctionnera

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Points : 51
    Points
    51
    Par défaut
    J'ai toujours crus que ça allait par paire ..si simple quote au début alors simple quote à la fin et ça me paraissait logique mais sur ce qu'à écrit @sabotage, c'est pas la cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tcarburant = ' AND carburant_voiture = "' .mysql_real_escape_string($_GET['carb']). "'";
    ça change quelque chose si je change la double quote de fin par une simple ?

    Ceci dit, sujet résolut..merci sabotage ... plus de 3 heures que je m'arrache les tifs sur cette requête.

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

Discussions similaires

  1. aide sur une requête sql
    Par sanach dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 27/02/2008, 16h43
  2. aide sur une requête sql
    Par sanach dans le forum Développement
    Réponses: 9
    Dernier message: 17/10/2007, 20h42
  3. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51
  4. Barre de progression sur une requète SQL
    Par Wilco dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/04/2005, 14h20
  5. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12

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