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 :

Syntaxe de la requête MySQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 48
    Par défaut Syntaxe de la requête MySQL
    Bonjour,

    Je suis nouveau en PHP/MySQL, et j'ai un souci avec une syntaxe SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "SELECT AUN, denomination, ville FROM aun WHERE loc = $loc AND cp = $cp AND ville = $ville ORDER BY ville";
    Quand les 3 variables ($loc, $cp, $ville) sont remplies (!= de null), pas de soucis.

    Mais quand il en manque une (quand elle est == null), j'ai une erreur SQL.

    Je voudrais faire en sorte que la requête SQL "ignore" les variables qui n'ont pas été remplies (càd qui ont gardé null comme valeur).

    Avez-vous des suggestions sur la manière de solutionner ce pb ?

    Par avance, merci !

    Vince

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    Tu peux tester si les variables sont remplies et construire ta chaine par concaténation. Attention toutefois aux AND qui doivent ou ne doivent pas être ajoutés...

    Le problème est surtout de savoir pourquoi certaines de tes variables seraient vides...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éprouvé
    Inscrit en
    Juin 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juin 2007
    Messages : 89
    Par défaut
    Essayes ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = "SELECT AUN, denomination, ville FROM aun 
    WHERE (loc=$loc OR loc IS NULL) 
        AND (cp=$cp OR cp IS NULL) 
        AND (ville=$ville OR ville IS NULL) 
    ORDER BY ville";
    Tu incluras aussi ceux possédant une valeur null.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 48
    Par défaut
    J'ai toujours le même message :-(

    Erreur SQL !
    SELECT AUN, denomination, ville FROM aun WHERE (loc=032001001 OR loc IS NULL) AND (cp= OR cp IS NULL) AND c_status= '100' ORDER BY ville
    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 'OR cp IS NULL) AND c_status= '100' ORDER BY ville' at line 1


    Citation Envoyé par dewsz
    Essayes ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = "SELECT AUN, denomination, ville FROM aun 
    WHERE (loc=$loc OR loc IS NULL) 
        AND (cp=$cp OR cp IS NULL) 
        AND (ville=$ville OR ville IS NULL) 
    ORDER BY ville";
    Tu incluras aussi ceux possédant une valeur null.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par Celira
    Le problème est surtout de savoir pourquoi certaines de tes variables seraient vides...
    Tu n'as pas répondu à ma question. Comment se fait-il que tu ais des variables vides ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 48
    Par défaut
    Ben parce qu'elles viennent d'un formulaire de recherche.

    Donc si le visiteur ne remplit pas tout, c'est un problème...

    Citation Envoyé par Celira
    Tu n'as pas répondu à ma question. Comment se fait-il que tu ais des variables vides ?

  7. #7
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    il faut donc tu que tu construises ta requete au fur et a mesure, en testant la présence de chaque valeur : si c'est rempli on ajoute la condition, sinon on passe a la suivante

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Ah d'accord, c'est encore un tour de nos amis les formulaires

    Bon je vais te proposer une syntaxe un chouïa compliquée :
    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
    $sql = "SELECT AUN, denomination, ville FROM aun";
    $i=0;
     
    if ($loc!=''){
    	$sql .= " WHERE loc='$loc' ";
    	$i=1;
    }
    if ($cp!=''){
    	if ($i==0){
    		$sql .= " WHERE cp='$cp' ";
    		$i=1;
    	}else{
    		$sql.=" AND cp='$cp' ";
    	}
    }
    if ($ville!=''){
    	if ($i==0){
    		$sql .= " WHERE vile='$ville' ";
    	}else{
    		$sql .= " AND ville='$ville' ";
    	}
    }
    $sql.=" ORDER BY ville";
    EDIT : ce que koopajah te conseille, quoi
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 48
    Par défaut
    Merci pour ceci, mais j'ai résolu avec ce code-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ($loc != null) { $condition = $condition.' and loc='.$loc; }
    if ($cp != null) { $condition = $condition.' and cp='.$cp; }
    puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT AUN, denomination, ville FROM aun WHERE c_status= '100' $condition ORDER BY ville";


    Cependant, j'ai du coup au autre problème, avec les espaces.

    J'ai fait un nouveau post, puisque c'est autre chose :
    http://www.developpez.net/forums/sho...84#post2273684


    Merci pour vos infos !!!

    Citation Envoyé par Celira
    Ah d'accord, c'est encore un tour de nos amis les formulaires

    Bon je vais te proposer une syntaxe un chouïa compliquée :
    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
    $sql = "SELECT AUN, denomination, ville FROM aun";
    $i=0;
     
    if ($loc!=''){
    	$sql .= " WHERE loc='$loc' ";
    	$i=1;
    }
    if ($cp!=''){
    	if ($i==0){
    		$sql .= " WHERE cp='$cp' ";
    		$i=1;
    	}else{
    		$sql.=" AND cp='$cp' ";
    	}
    }
    if ($ville!=''){
    	if ($i==0){
    		$sql .= " WHERE vile='$ville' ";
    	}else{
    		$sql .= " AND ville='$ville' ";
    	}
    }
    $sql.=" ORDER BY ville";
    EDIT : ce que koopajah te conseille, quoi

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

Discussions similaires

  1. [MySQL] Syntaxe d'une requête MySQL
    Par GuitarToto dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/08/2009, 20h29
  2. [heritage] quelle syntaxe pour les requêtes avec Mysql
    Par tavarlindar dans le forum Requêtes
    Réponses: 7
    Dernier message: 07/05/2008, 23h47
  3. Problème de syntaxe de requête MySQL (débutant)
    Par redvivi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/03/2008, 19h40
  4. Aide syntaxe requête mysql
    Par wjc dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/10/2005, 23h18
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

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