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] Condition si aucun enregistrement correspond à la requête


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    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
    Par défaut [SQL] Condition si aucun enregistrement correspond à la requête
    Bonjour,

    J'ai une table dans laquelle j'enregistre des parties de jeu. Si on a un gagnant, alors j'affecte un "1" dans la table gagnant. Si perdant = "0".

    Je souhaite scruter tous mes enregistrements et retrouner le temps de reponse du gagnant (qui est dans la table)
    Si je n'ai pas encore de gagnant, alors message...

    Donc, j'essaie de construire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $data1=mysql_num_rows(mysql_query("SELECT temps_rep FROM participants WHERE gagnant=1 ORDER by id_partie DESC;"));
    if ($data1[gagnant]==0){
    echo "Pas encore de gagnant sur cette partie";			   		  
    }else {
    echo $data1[temps_rep]." secondes";
    }
    Alors que j'ai un gagnant dans la base, il me retourne qu'il n'y en a pas.

    J'ai fais une erreur de syntaxe?

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    C'est normal, quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data1=mysql_num_rows(mysql_query("
    $data1 va contenir le nom d'enregisterments retournés par la requête SQL.

    Donc $data1[gagnant] n'existe pas et vaut donc 0.
    tu devaris faire

  3. #3
    Membre confirmé
    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
    Par défaut
    Ben non, cela ne marche pas...

    Du coup, j'essaies comme ceci, mais sans succes non plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $data1=mysql_fetch_array(mysql_query("SELECT temps_rep FROM participants WHERE gagnant=1 ORDER by id_partie DESC;"));
    if ($data1[0]==0){
    			  echo "Pas encore de gagnant sur cette partie";
     
    			  }else {
    			  echo $data1[0]." secondes";
    			  }

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    fais un echo de ta requete et lance la dans phpmyadmin pour vérifier que la requete soit bien correcte. AUssi bien ça peut venir de là.

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $result=mysql_query("SELECT temps_rep FROM participants WHERE gagnant=1 ORDER by id_partie DESC;");
     
    if (mysql_num_rows($result) == 0)
    {
      echo "Pas encore de gagnant sur cette partie";
    }
    else 
    {
      // fetch
      $data1 = mysql_fetch_array($result);
      echo $data1[0]." secondes";
    }
    plutot non?

    Et penses au "or die..."

  6. #6
    Membre confirmé
    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
    Par défaut
    Merci,

    Mais en fait, j'ai mal dû exposer le problème...

    Je pense que cela vient de ma requête.

    J'ai des parties, j'ai 1 gagnant par partie et des perdants.

    Le gagnant est reconnu dans la table avec un "1" dans le champs gagnant.

    Je souhaite afficher le temps de réponse du gagnant de la partie à laquelle je viens de jouer.
    Si j'ai effectivement un gagnant, tout va bien.

    Par contre, si je suis le premier à répondre à la partie, et que je répond faux, alors je n'ai toujours pas de gagnant...

    Alors que tel qu'est construite ma requete, si je suis dans ce cas là, alors il récupère le temps de reponse du gagnant de la dernière partie (avant celle que je viens de jouer)...

    Parce qu'en fait, ma requete va chercher le temps de reponse du dernier gagnant (gagnant=1) de la dernire partie enregistrée...
    Donc, si je n'ai pas encore de gagnant sur la partie en cours, alors il prend la partie précédente.

    Alors qu'il devrait m'afficher qu'il ny a pas encore de gagnant sur la partie en cours.

    Mais je n'arrive pas à construire la requete...

    En gros, c'est : si je n'ai pas de gagnant sur la partie que je viens de jouer (donc la derniere), alors message pas de gagnant

    EDIT : Alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mysql_num_rows($result) == 0)
    me dit si je n'ai aucune ligne d'enregistrée, mettre le message..

    Mais en fait, j'ai déjà une ligne enregistrée, la mienne, qui suis perdant..

    Est ce que je me suis bien expliqué?

  7. #7
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 52
    Par défaut
    Pour recuperer le dernier enregistrement de ta table, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT temps_rep,gagnant from participants ORDER BY ta_colonne_id desc LIMIT 1
    Apres tu fais ton traitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si(pas de gagnant)
     message pas de gagnant
    Sinon
     autre message

  8. #8
    Membre confirmé
    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
    Par défaut
    Merci, mais ce n'est pas cela...

  9. #9
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $result=mysql_query("SELECT gagnant, temps_rep FROM participants ORDER by id_partie DESC, gagnant DESC;");
     
    // regarde si on a bien un gagnant pour la derniere partie
    $data1 = mysql_fetch_array($result);
    if($data1[0] == 1)
    {
    echo "la dernière partie a été gagnée en " . $data1[1] . " secondes";
    }
    else
    {
    echo "pas de gagnant";
    }

  10. #10
    Membre confirmé
    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
    Par défaut
    ... Désolé...
    Encore une fois je partais à l'envers...

    Ca fonctionne...

    Merci...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/12/2013, 17h15
  2. Réponses: 3
    Dernier message: 25/09/2013, 17h43
  3. Réponses: 10
    Dernier message: 11/07/2007, 12h06
  4. [requête sql]comment comparer des enregistrements de deux tables
    Par DSabah dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/06/2007, 15h12
  5. [Requête/SQL]Conditions dans un champs calculé
    Par taisherg dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/04/2007, 15h55

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