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 :

Erreur lors de la construction d'une requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut Erreur lors de la construction d'une requête
    Bonjour,

    je me permet de vous envoyer ce message pour obtenir un peut d'aide!!
    en effait je suis relativement debutant!
    j'ai un pb avec cette requete et un message d'erreur s'affiche:
    Parse error: syntax error, unexpected T_VARIABLE
    et je ne voi pas ou peu etre cette foutu erreur!!
    si vous pouviez me venir en aide!!
    voici la requete en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $recherche = "SELECT * FROM ".PREFIXE."membres";
     
    $recherche .= "WHERE 1=1 ";
     
    if(!(empty($rechage1) && !(empty($rechage2)))
    $recherche .= "AND age BETWEEN '".$rechage1."' AND '".$rechage2."'";
     
    if(!(empty($rechville))
    $recherche .= "AND ville LIKE '".$rechville."%'";
     
    if(!(empty($rechcp))
    $recherche .= "AND cp LIKE '".$rechcp."%'";
     
    $recherche .= ";";

    d'avance merci!!
    cordialement
    gaetan

  2. #2
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    PREFIXE, c koi, une variable? si c le cas, tu as oublié $ devant...
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    non en fait prefixe c le prefixe de ma table mais sur cette parti c ok
    !!!
    c plus loin que ca bug a partir de

    $recherche .= "AND age BETWEEN '".$rechage1."' AND '".$rechage2."'";

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    le champ age de ta table est alphanumérique ?

    Que donne un echo $recherche ?

    Il ne faut pas mettre de ";" à la fin de ta requête.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    oui le champs age est alphanumerique!!

    je suis dsl mais que veux tu dire par :

    "Que donne un echo $recherche ?"

    loool

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    une fois que tu as fini de générer ta requête ($recherche) peux-tu nous donner le résultat d'un echo $recherche (la requête qui est envoyée) pour voir s'il n'y a pas une erreur de syntaxe.

    As-tu essayé de supprimer le ";" à la fin de la requête ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    oui j'ai essayé de supprimer le ";" mais rien n'a bougé!!!
    tjrs la meme erreur!!

    en faite il me donne toujours le meme mess d'erruer et me dit que celle ci ce situ sur la ligne :
    $recherche .= "AND age BETWEEN '".$rechage1."' AND '".$rechage2."'";

    en ce qui concerne le resultat de ma requete :
    echo"
    </tr>";
    while($row=mysql_fetch_array($recherche))

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    ok, le problème n'est pas directement sur cette ligne, il provient du if juste au dessus.

    remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!(empty($rechage1) && !(empty($rechage2)))
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($rechage1) && !empty($rechage2))

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    bien joué!!!
    ca m'a debloqué ce passage!!!
    merci bcp mais un autre pb vien de surgir!!!looool
    la page s'affiche mais au lieu de me donner le resultat de ma requete il me fait un mess d'erreur:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

    il m'ique la ligne que tu m'a demander de voir tt a l'heure :
    while($row=mysql_fetch_array($recherche))

    ai-je loupé qqchose!!!loool
    si tu pouvait me venir en aide ca serait vraiment sympa!!!
    je suis desolé d'avance j'abuse un peu!!!
    mais si tu peu
    merci d'avance!!!!

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    le message signifie que ta requête ne renvoie aucun résultat.

    dans ton script, avant la ligne où tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query($recherche, $link)
    peux-tu ajouter la ligne suivante :
    ensuite, tu vérifies que ta requête fonctionne et renvoie bien des données.
    Si tu as toujours un problème, merci de poster la requête affichée par le echo $recherche.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    alors la completement perdu!!!
    si je ne mes pas le echo $recherche ca m'affiche query was empty
    et si je le met c la merdasse!!
    bon alors je te poste le code de ma requete avec tt comme tu est 10x plus doué que moi!!!
    loool
    alors :
    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
    @$rechage1=$_POST['age1'];
    @$rechage2=$_POST['age2'];
    @$rechville=$_POST['viller'];
    @$rechcp=$_POST['cpr'];
     
    echo $recherche
    $recherche = mysql_query($recherche) or die (mysql_error());
     
     
    $recherche = "SELECT * FROM ".PREFIXE."membres";
     
    $recherche .= "WHERE 1=1 ";
     
    if(!empty($rechage1) && !empty($rechage2))
    $recherche .= "AND age BETWEEN '".$rechage1."' AND '".$rechage2."'";
     
    if(!empty($rechville))
    $recherche .= "AND ville LIKE '".$rechville."%'";
     
    if(!empty($rechcp))
    $recherche .= "AND cp LIKE '".$rechcp."%'";
     
    $recherche .= ";";
     
    	echo"";
    		}
    	echo"
    	</tr>";
     
    	while($row=mysql_fetch_array($recherche))
    		{
    $pseudo_m=htmlentities($row['pseudo']);
    $age_m=htmlentities($row['age']);
    $cp_m=htmlentities($row['cp']);
    $ville_m=htmlentities($row['ville'])
    apres donc c mon affichage!!!
    voila ...

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 120
    Points
    120
    Par défaut
    ok, alors dans ton script, tu fais tout à l'envers

    Tu exécutes la requête avant de la générer !!!

    Le mysql_query($recherche) or die (mysql_error());

    doit être placé après la création de ta requête dans la variable $recherche

    Remplace ton code par ce qui suit et ca devrait fonctionner.
    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
    @$rechage1=$_POST['age1'];
    @$rechage2=$_POST['age2'];
    @$rechville=$_POST['viller'];
    @$rechcp=$_POST['cpr'];
     
    $recherche = "SELECT * FROM ".PREFIXE."membres";
    $recherche .= "WHERE 1=1 ";
    if(!empty($rechage1) && !empty($rechage2))
      $recherche .= "AND age BETWEEN '".$rechage1."' AND '".$rechage2."'";
    if(!empty($rechville))
      $recherche .= "AND ville LIKE '".$rechville."%'";
    if(!empty($rechcp))
      $recherche .= "AND cp LIKE '".$rechcp."%'";
    $result = mysql_query($recherche) or die (mysql_error());
     
    while($row=mysql_fetch_array($result)) {
      $pseudo_m=htmlentities($row['pseudo']);
      $age_m=htmlentities($row['age']);
      $cp_m=htmlentities($row['cp']);
      $ville_m=htmlentities($row['ville'])
    }

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    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 '1=1 AND age BETWEEN '18' AND '25'AND ville LIKE
    et merde!!! c quoi ce truc encore!!!loool
    je crois que a force je v devenir un emerdeur fini!!!

    cela veut dire que ma requete est pas bien formulé c ca?????

  14. #14
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Manquerait pas un espace par hasard avec le AND...
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    non je vien d'essayer avec un espace mais j'ai tjrs le meme message!!!!

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Points : 2
    Points
    2
    Par défaut
    personne n'a meme pas une toute petite idees!!!!
    ca serait vraiment sympa!!
    merci d'avance!!
    car completement bloqué!!

  17. #17
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    regarde bien les espaces il en manque aussi un avant le where
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  18. #18
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ca a un sens précis cette ligne ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche .= "WHERE 1=1 ";
    Car c'est la source de l'erreur

  19. #19
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Citation Envoyé par Kerod
    Ca a un sens précis cette ligne ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche .= "WHERE 1=1 ";
    Car c'est la source de l'erreur
    C'est une astuce pour éviter de bricoler en ajoutant les conditions dynamiquement pas la suite, 1=1 étant toujours vrai ça doit passer normalement
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  20. #20
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Je veux bien te croire mais l'erreur SQL nous dit bien que le soucis comme à partir du 1 :
    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 '1=1 AND age BETWEEN '18' AND '25'AND ville LIKE

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 15
    Dernier message: 02/06/2010, 15h08
  2. Erreur lors de l'exécution d'une requête avec ADOquery
    Par doolar dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/05/2008, 13h26
  3. [PostgreSQL] [PostGreSQL] Obtention d'une erreur lors de l'exécution d'une requête
    Par cbombabill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2008, 11h56
  4. Réponses: 6
    Dernier message: 13/12/2007, 03h13
  5. Erreur lors de la conversion d'une requête SELECT en DELETE
    Par SamLeChiseuji dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/07/2007, 15h09

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