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 :

Requête qui retourne un mauvais résultat [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Requête qui retourne un mauvais résultat
    Bonjour, réalisant une application sur les sports de combats, il m'est arrivé un soucis avec la requête sql suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT sum( nbre_ceinture )
    FROM gagner
    WHERE ref_lutteur =1
    Voici un morceau de la composition de ma base de donnée :
    Table lutteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ref_lutteur, nom_lutteur, ref_coach, notes
    Table gagner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ref_lutteur, ref_ceinture, nbre_ceinture
    Table ceinture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ref_ceinture, nom_ceinture
    Contenu de la table gagner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1er enregistrement : 1 1 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2e enregistrement : 1 2 2
    Cette requête me permettrais d'obtenir la totalité des ceintures obtenues par le lutteur numéro 1, c'est à dire 12. Le problème est que quand j'écris cette requête dans wamp (voir plus haut), elle me retourne bien le bon résultat (12), mais quand je l'écris en php , cela me retourne 1.
    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
    <?php
    $hote="localhost";
    $user="root";
    $password=""; 
     
    mysql_connect($hote, $user, $password);
    mysql_select_db("wwe")
    or die("Ouverture base impossible");
     
    {
    $table=mysql_query("SELECT sum( nbre_ceinture )
    FROM gagner WHERE ref_lutteur = 1
    ");
    }
     
    $test=mysql_num_rows($table);
    echo $test;
     
    mysql_close();
     
    ?>
    PS : J'ai le même soucis avec select count.

    Merci de votre aide.

  2. #2
    Membre actif
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Points : 226
    Points
    226
    Par défaut
    Je ne suis pas un expert en PHP, mais la fonction mysql_num_rows renvoie le nombre de lignes de votre requête, à savoir 1... Donc vous affichez le nombre de ligne mais pas la valeur du SUM.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Citation Envoyé par KookieMonster Voir le message
    Je ne suis pas un expert en PHP, mais la fonction mysql_num_rows renvoie le nombre de lignes de votre requête, à savoir 1... Donc vous affichez le nombre de ligne mais pas la valeur du SUM.
    Je ne sais pas pour le PHP, mais la requête SQL, elle, doit bien renvoyer la somme des ceintures.
    Merci d'ajouter un sur les tags qui vous ont aidé

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    OK, en effet, la requête SQL fonctionne bien sur wamp, mais c'est en php que cela bloque.

    Si l'erreur vient de mysql_num_rows, avez vous une idée de ce qu'il faudrait mettre à la place?

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    La requête est surement bonne, c'est juste que tu n'utiliserais pas la bonne fonction.
    - mysql_num_rows() renvoie le nombre de lignes que MySQL à récupéré, (et non les valeurs des champs dans le SELECT (comme SUM(nbre_ceinture)).
    - mysql_fetch_assoc() renvoie un tableau des valeurs dans le SELECT

    Essai comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sum_rs = mysql_query("SELECT SUM(nbre_ceinture) AS sum_ceintures
    FROM gagner WHERE ref_lutteur = 1");
    }
     
    // Les résultat/valeur
    $ceintures = mysql_fetch_assoc($sum_rs);
    echo 'Somme des ceintures : '.$ceintures['sum_ceintures'].'<br />';
    (j'ai rajouté un alias (sum_ceintures) qui facilitera l'affichage de la valeur (de la somme).
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Oui en effet avec mysql_fetch_assoc() ça fonctionne. C'est nickel chrome merci beaucoup, ça faisait un moment que je cherchais.

    Trop cool A+ et bonne journée.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/03/2015, 09h18
  2. [MySQL] requête qui renvoie un mauvais résultat
    Par Souri84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/12/2010, 09h18
  3. requète qui retourne la derniere ligne d'un ensemble de tuple
    Par Stouille33 dans le forum Développement
    Réponses: 4
    Dernier message: 14/11/2008, 09h15
  4. Requête qui retourne la somme totale de durées
    Par fayred dans le forum Requêtes
    Réponses: 3
    Dernier message: 04/01/2008, 16h21
  5. Réponses: 23
    Dernier message: 31/05/2007, 16h09

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