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 :

Requête SQL foireuse ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Points : 26
    Points
    26
    Par défaut Requête SQL foireuse ?
    Bonjour à tous. Aujourd'hui je suis devant un problème assez bizarre. Je m'explique. Voilà deux requêtes toutes simples. Ce sont quasi les mêmes. La deuxième ne fonctionnent pas alors que la première oui.

    Requête qui marche :
    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
    if(isset($_POST['lib'])){
    	$lib = $_POST['lib'];
    }
    else{
    	$lib = "";
    }
     
    if(isset($_POST['fam'])){
    	$fam = $_POST['fam'];
    }
    else{
    	$fam = "";
    }
    [ ... ]
    echo $rqt_recherche = "SELECT Lib_Article, Fam_Article, ID_Article FROM Article WHERE Lib_Article LIKE '".$lib."%' AND Fam_Article LIKE '".$fam."%'";
    //on cherche tous les articles qui ont un préfix identique a la variable poster
    $exec_recherche = mysql_query($rqt_recherche) or die ('Erreur lors de la requète recherche : ' .mysql_error());
    puis celle qui ne marche pas :
    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
    	if(isset($_POST['nom'])){
    	$nom = $_POST['nom'];
    }
    else{
    	$nom = "";
    }	
     
    if(isset($_POST['rs'])){
    	$rs = $_POST['rs'];
    }
    else{
    	$rs = "";
    }	
     
    if(isset($_POST['cp'])){
    	$cp = $_POST['cp'];
    }
    else{
    	$cp = "";
    }	
     
    if(isset($_POST['ville'])){
    	$ville = $_POST['ville'];
    }
    else{
    	$ville = "";
    }	
     
    if(isset($_POST['secteur'])){
    	$secteur = $_POST['secteur'];
    }
    else{
    	$secteur = "";
    }	
     
    if(isset($_POST['interlocuteur'])){
    	$interlocuteur = $_POST['interlocuteur'];
    }
    else{
    	$interlocuteur = "";
    }
    echo $rqt_recherche = "SELECT Nom, RS,CP, Ville, Secteur, Interlocuteur, ID_Client FROM Client WHERE Nom LIKE '".$nom."%' AND RS LIKE '".$rs."%' AND CP LIKE '".$cp."%' AND Ville LIKE '".$ville."%' AND Secteur LIKE '".$secteur."%' AND Interlocuteur LIKE '".$interlocuteur."%'";
    //on cherche tous les articles qui ont un préfix identique a la variable poster
    $exec_recherche = mysql_query($rqt_recherche) or die ('Erreur lors de la requète recherche : ' .mysql_error());

    PS : requête 1

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Lib_Article, Fam_Article, ID_Article FROM Article WHERE Lib_Article LIKE '%' AND Fam_Article LIKE '%'


    PPS : requête 2

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Nom, RS,CP, Ville, Secteur, Interlocuteur, ID_Client FROM Client WHERE Nom LIKE '%' AND RS LIKE '%' AND CP LIKE '%' AND Ville LIKE '%' AND Secteur LIKE '%' AND Interlocuteur LIKE '%'


    Ce qui ne marche pas c'est RS, CP, Ville, Secteur. Et les autres marchent :O

    Pardonnez moi mais là je ne sait plus où chercher !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Il faudrait savoir quel est le message d'erreur original, car là comme ça ...

    Ces champs n'existeraient-ils pas déjà dans une autre table SQL ? Qui fait qu'il ne sait pas où aller les chercher.
    Règle N° 1 : Si tout va bien, ne touchez à rien.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Points : 26
    Points
    26
    Par défaut
    Non mon code est juste, et ma requête cherche bien les données au bon endroit. Après quelques dizaines de recherches j'ai trouvé où est l’erreur. C'est dans mes données où j'ai un problème, par exemple

    |_| -> caractère espace

    |_|13094
    au lieu de
    13094
    Donc en résumé il cherche tous les enregistrements après
    espace.=$valeurReste à savoir comment je peux peut passer outre à l'espace. Peut-être en convertissant les données en string. Or le string est un tableau de lettre. Si l'indice 0 du tableau de la variable de la donnée est " " alors l'indice 0 du tableau de la variable de la donnée devient "". Et là après lors de ma requête j'aurais bien $valeur et non espace.=$valeur.

    Théoriquement ça devrait marcher. Car en fait la mise à jour se fait par fichier de données externes, et je remplis mes lignes enregistrements par une boucle du tableau. Enfin bref.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Programmeur
    Inscrit en
    Mai 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Mai 2012
    Messages : 55
    Points : 26
    Points
    26
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $col_3_cli = ltrim($col_3_cli, ' ');
    $col_7_cli = ltrim($col_7_cli, ' ');
    $col_12_cli = ltrim($col_12_cli, ' ');
    Merci pour vos messages. Résolu

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

Discussions similaires

  1. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

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