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 :

[SQL] Pb avec une requete et plusieurs conditions


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Points : 34
    Points
    34
    Par défaut [SQL] Pb avec une requete et plusieurs conditions
    Bonjour,

    j'ai un souci avec une requete et si quelqu'un pouvait me donner une explication...

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $gagnant="SELECT temps_rep FROM participants WHERE id_partie=$id ORDER BY temps_rep";
    J'affiche bien mon temps_rep.

    Maintenant j'ajoute une condition supplémentaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $gagnant="SELECT temps_rep FROM participants WHERE (id_partie=$id) AND (reponse_donnee=$repexact) ORDER BY temps_rep";
    Cela me met une erreur de syntaxe.

    Si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $gagnant="SELECT * FROM participants WHERE (id_partie=$id) AND (reponse_donnee=$repexact) ORDER BY temps_rep";
    Cela fonctionne, mais cela m'affiche l'id_partie...

    Et je voudrais afficher le temps_rep à partir des deux conditions where...

    Je suis désolé, cela doit être un pb de syntaxe mais je ne trouve pas

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Salut,
    Essaie avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $gagnant="SELECT temps_rep FROM participants WHERE (id_partie='$id') AND (reponse_donnee='$repexact') ORDER BY temps_rep";

  3. #3
    Membre habitué Avatar de mimagyc
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 151
    Points
    151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $gagnant="SELECT temps_rep FROM `participants` WHERE id_partie='$id' && reponse_donnee='$repexact' ORDER BY temps_rep ASC";

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Points : 34
    Points
    34
    Par défaut
    Ben oui, cela correspond à ma deuxième ligne de code...

    Donc, c'était juste, mais c'est ailleurs que se pose le problème...

    J'ai ceci :
    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
    //On enregistre dans la base toutes les réponses tant que datefinpartie >= dateactuelle
    if ($compt3>=$dateenvoitime) {
    $infos="INSERT INTO participants (id_partie,date,ip_participant,ipproxy,fai_visiteur,reponse_donnee,temps_rep) VALUES ('$id_partie','$date_part','$ip_simple','$ipproxy','$fai_visiteur','$rep','$temps_rep')";
    $infos2=mysql_query($infos)
    or die('Erreur SQL !'.$infos2.'
    '.mysql_error());
     
    //Dès le délai dépassé, on récupère le gagnant
    }else{
    $gagnant="SELECT temps_rep,reponse_donnee FROM participants WHERE (id_partie=$id) AND (reponse_donnee=$repexact) ORDER BY temps_rep";
    $gagnant2=mysql_query($gagnant)
    or die('Erreur SQL !'.$gagnant2.'
    '.mysql_error());
    $gagnant3=mysql_fetch_array($gagnant2);
     
    echo $gagnant3[0];
    Tout marche bien tant que ma condition if est respectée, mais j'ai ce message dès qu'il arrive sur le else :

    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 "là, il affiche la réponse donnée...


    Une idée?

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Pourrais-tu donner l'erreur EXACTE, avec la requete correspondante (pas le code PHP mais la vraie requete créée)
    Et comme ils te l'ont dit, il faut surement mettre des ' ' avant et apres la réponse donnée pour délimiter le champ. Et s'il y a un ' dans ta réponse ca va faire une erreur, il faut donc utiliser mysql_real_escape_string()

    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $gagnant="SELECT temps_rep,reponse_donnee FROM participants WHERE id_partie=$id AND reponse_donnee='". mysql_real_escape_string($repexact) ."' ORDER BY temps_rep";

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Points : 34
    Points
    34
    Par défaut
    Merci à tous, c'est bien le problème des '...

    Désolé, mais j'ai encore du mal avec la syntaxe... Je ne comprends pas pourquoi des moments cela fonctionne sans les ' et pas d'autres...

    Est ce que c'est lorsqu'on met plus d'une condition ou plus d'un champs?

  7. #7
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    il faut utiliser les ' ' quand ta colonne est de type TEXT, VARCHAR, DATETIME, etc.
    Ou plutot dès que c'est pas un type numérique.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 62
    Points : 34
    Points
    34
    Par défaut
    merci beaucoup...

    Affaire classée...

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

Discussions similaires

  1. Changer le nom d'une table sur SQL server avec une requete
    Par Oluha dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 01/02/2014, 23h35
  2. Réponses: 0
    Dernier message: 23/06/2011, 11h28
  3. [sql]Probleme avec une requete
    Par Premium dans le forum Langage SQL
    Réponses: 8
    Dernier message: 07/06/2007, 14h52
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. [ORACLE][SQL] procedure sous delphi avec une requete SQL
    Par nivet dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/11/2004, 13h43

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