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 :

[Système] Erreurs de guillemets


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut [Système] Erreurs de guillemets
    Bonjour,

    Lorsque je lance cette requete seule, cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $select = 'select * FROM recherche ORDER BY id_recherche ASC limit '.$limite.','.$nombre;
    $result = mysql_query($select,$db_link)  or die ('Erreur : '.mysql_error() );
    Par contre, dès que je rajoute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $select = 'select * FROM recherche WHERE int_poste LIKE '$int_poste_recherche' AND regionr LIKE '$regionr_recherche' ORDER BY id_recherche ASC limit '.$limite.','.$nombre;
    $result = mysql_query($select,$db_link)  or die ('Erreur : '.mysql_error() );
    J'ai une erreur à cette ligne :

    Parse error, unexepected T_VARIABLE

    C'est quoi le problème, les cotes???

  2. #2
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    ta oublié le "." de concaténation à deux endroit


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $select = 'select * FROM recherche WHERE int_poste LIKE '.$int_poste_recherche.' AND regionr LIKE '.$regionr_recherche.' ORDER BY id_recherche ASC limit '.$limite.','.$nombre;
    Essay, sa devré marcher

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    Il y a de grande chances que tu ais des problemes a cause d'apostrophes dans tes variables...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = 'select * FROM recherche WHERE int_poste LIKE '.addslashes($int_poste_recherche).' AND regionr LIKE '.addslashes($regionr_recherche).' ORDER BY id_recherche ASC limit '.$limite.','.$nombre;

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    J'ai testé les deux versions et il s'avere que j'ai encore une erreur

    you have an error un your sql syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'resultat and regionr LIKE alsace ORDER BY id_recherche'

    J'ai testé aussi de cette maniere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result=mysql_db_query($sql_bdd,"SELECT * FROM recherche WHERE int_poste LIKE '$int_poste_recherche' AND regionr LIKE '$regionr_recherche' OR typ_contrat LIKE '$typ_contrat_recherche' ORDER BY id_recherche DESC LIMIT $limite,$nombre",$db_link) or die(mysql_error());
    Je n'ai pas d'erreur. La page affiche bien les premiers résultats mais lorsque je passe à la page deux, la page est vide alors que lorsque je place juste cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select = 'select * FROM recherche ORDER BY id_recherche ASC limit '.$limite.','.$nombre;
    $result = mysql_query($select,$db_link)  or die ('Erreur : '.mysql_error() );
    tout fonctionne parfaitement mais je n'ai pas de where...donc tout s'affiche...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    j'avais pas vu... Pas l'habitude de faire des requetes sql qui sont dans des simple quote

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $select = "select * FROM recherche WHERE int_poste LIKE '".addslashes($int_poste_recherche)."' AND regionr LIKE '".addslashes($regionr_recherche)."' ORDER BY id_recherche ASC limit ".$limite.",".$nombre;
    Qu'en est-il de ca ?

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Si je puis me permettre, une erreur T_STRING et une erreur SQL syntax sont très différentes !
    La première est envoyée par PHP et survient avant même que le script ait commencé à être exécuté. La seconde est renvoyée par MySQL lors de l'exécution du script, tu peux donc choisir de l'afficher ou de l'occulter.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    J'ai la premiere page qui s'affiche sans problème mais dès que je passe à la page suivante, la page est vide.

    cela provient forcement de where int_poste like etc... car si je retire cela jusqu'a order by cela fonctionne correctement

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    Fait un echo de ta requete sans l'exécuté pour vérifier que ta pas d'erreur.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    Comment ça un echo sans l'executer???

  10. #10
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select="ton SQL";
    echo $select;

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    Tu fé un

    mais tu ne fait pas de mysql_query

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    Donc le résultat de la premiere page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from recherche where int_poste Like 'menuisier' and regionr like 'alsace' order by id_recherche asc limit 0,5
    et le résultat de la seconde page lorsque je clique sur suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from recherche where int_poste " Like and regionr like " order by id_recherche asc limit 5,5

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    pourquoi la première requete est bonne et pour la seconde, il ne récupere pas les paramètres?

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 285
    Points : 300
    Points
    300
    Par défaut
    comment sont passés les parametres sur la page suivante ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    rien ne s'affiche...à part cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from recherche where int_poste " Like and regionr like " order by id_recherche asc limit 5,5

  16. #16
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    C'est un peu la foire dans tes LIKE :/
    Ils ne doivent pas se trouver dans les guillemets et j'imagine qu'il ne devrait pas y en avoir deux.
    Si je puis me permette une suggestion : écris les mots clefs SQL en majuscules et les noms de champs/tables en minuscules.

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    Ok en ce qui concerne les majuscules et les minuscules.

    Par contre, tu me dis de ne pas mettre les LIKE dans les guillemets. Faudrait que tu m'expliques comment faire car là je ne vois pas trop.


    Pourquoi ne devrais-je pas en avoir deux?


    Comment pourrais-je faire alors pour afficher le résultat d'une requete selon un demande bien précise, en locurence le type de poste ainsi que la région. Faut bien que je délimite cela car sinon, j'aurai beaucoup trop de résultats

    Lorsque j'ai rajouté le J'ai deux résultats :

    Le premier s'affiche de cette maniere et me semble correct car la page s'affiche bien avec les bons résultats.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM recherche WHERE int_poste LIKE 'menuisier' AND regionr LIKE 'alsace' ORDER BY id_recherche ASC LIMIT 0,5
    Donc il récupere bien la demande...

    Par contre, dès que je passe en page suivante, il m'affiche cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM recherche WHERE int_poste " LIKE AND regionr LIKE " ORDER BY id_recherche ASC LIMIT 5,5
    donc en théorie, y'a une erreur car il devrait m'afficher cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM recherche WHERE int_poste LIKE 'menuisier' AND regionr LIKE 'alsace' ORDER BY id_recherche ASC LIMIT 5,5

    C'est cela que je n'arrive pas à comprendre...

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    C'est bien à cause de ceci que je te disais de faire attention à ne pas mettre LIKE dans les parenthèses et qu'il y en avait probablement un de trop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    " LIKE AND regionr LIKE "
    Pourrais-tu redonner la version actuelle de la requête en page 2, s'il-te-plaît ? Le code PHP qui génère cette requête, car il y a visiblement un problème de concaténation.

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 181
    Points : 74
    Points
    74
    Par défaut
    Je te donne le code de la page

    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
     
    <? include("protect/conf.php") ?> 
    <? 
    require("protect/conf.php"); 
     
    $db_link = @mysql_connect ($sql_serveur,$sql_user,$sql_passwd) or die ('Erreur : '.mysql_error() );
    mysql_select_db($sql_bdd) or die ('Erreur :'.mysql_error());
     
    $nombre = 5;  
     
    if (!$limite) $limite = 0; 
     
    $path_parts = pathinfo($_SERVER['PHP_SELF']);
    $page = $path_parts["recherche"];
     
    $reponse = mysql_db_query($sql_bdd,"SELECT COUNT(*) AS nbre_entrees FROM membre",$db_link) or die(mysql_error()); 
    $donnees = mysql_fetch_array ($reponse); 
    $total = $donnees[0];
     
    $verifLimite= verifLimite($limite,$total,$nombre);
    if(!$verifLimite)  {
        $limite = 0;
    }
     
    $select = "select * FROM recherche WHERE int_poste LIKE '".addslashes($int_poste_recherche)."' AND regionr LIKE '".addslashes($regionr_recherche)."' ORDER BY id_recherche ASC limit ".$limite.",".$nombre; 
    $result = mysql_query($select,$db_link)  or die ('Erreur : '.mysql_error() );
     
    mysql_close($db_link); 
    ?>
    Comme je l'ai précisé lors de mon dernier message, cela ne peut provenir que de la requete car lorsque je mets juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select = "select * FROM recherche ORDER BY id_recherche ASC limit ".$limite.",".$nombre; 
    $result = mysql_query($select,$db_link)  or die ('Erreur : '.mysql_error() );
    Cela fonctionne en premiere, seconde page etc...etc...

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je te prie de bien vouloir m'excuser, je ne suis pas très réveillé, je m'y perds complètement :/
    Suivant le code que tu viens de donner, je ne vois pas comment la requête peut changer d'une page à l'autre.

    Sinon, pense à utiliser mysql_real_escape_string() plutôt qu'addslashes().
    http://shiflett.org/archive/184

Discussions similaires

  1. [Système]Erreur Wins 4204 sous Windows Serveur 2003
    Par Invité dans le forum Windows Serveur
    Réponses: 11
    Dernier message: 19/04/2007, 11h03
  2. [Système] Problème de guillemets
    Par Bobtop dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2006, 11h30
  3. [Système] Erreur de syntaxe
    Par BnA dans le forum Langage
    Réponses: 3
    Dernier message: 25/05/2006, 15h35
  4. [Système] Erreur d'exécution d'un petit script
    Par couscoussier dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2006, 10h04
  5. [Système] Erreur perso
    Par Anduriel dans le forum Langage
    Réponses: 15
    Dernier message: 15/01/2006, 12h32

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