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 :

Afficher le total d'une selection. [MySQL]


Sujet :

PHP & Base de données

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 19
    Points
    19
    Par défaut Afficher le total d'une selection.
    Hello,

    J'ai récemment codé un simple système de "j'aime" qui permet d'afficher si on aime ou pas une page/un article, etc...
    J'aimerai l'améliorer en mettant en place un calcul qui s'effectuerait sur chaque page. Ce dernier afficherait le nombre total de "j'aime" qui correspondrait à la page.

    Ma table ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id           |  user   |    like
    -------------------------------------------
    127          |     1   |      1
    128          |     1   |      1
    128          |     2   |      1
    J'ai donc essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT SUM( `like` ) AS total FROM (SELECT * FROM `likes` WHERE id = '$id')
    La syntaxe est sûrement mauvaise puisque j'obtiens une erreur...
    La seule chose que j'ai réussi actuellement, c'est d'additionner tous les likes mais ce n'est pas mon objectif.
    Une idée ?

  2. #2
    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

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM( `like` ) AS total FROM (SELECT * FROM `likes` WHERE id = '$id')
    A mon sens ceci devrait être similaire à cela (sauf erreur) :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(`like`) AS total FROM `likes` WHERE id = $id)


    La seule chose que j'ai réussi actuellement, c'est d'additionner tous les likes mais ce n'est pas mon objectif.
    Une idée ?
    Ok sur la fait que l'objectif ne serait pas atteint, mais dire pour quelle raison aurait été pas mal.
    La valeur (cette somme) ne serait pas la bonne ? Pourquoi ? (des valeurs en trop, en moins).

    Tu ne précise pas vraiment quelles valeurs prendrait "like", on suppose que ce serait 1 ou 0. Est-ce réellement le cas ?
    (quand on met un jeu d'essai, on met toutes les possibilités, genre 1, 0, NULL, ou autre)

    Par ailleurs, un user peut-il voter plusieurs fois pour une même page/article ? (apparemment non)


    Bref ... quelle serait le (ou les) paramètres extérieur(s) ou une addition ne correspondrait pas au résultat voulu pour 1 article donné (quel qu'il soit) ?
    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]

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Désolé pour les imprécisions.
    Voici le système un peu plus en détail:
    Sur chaque page, il y a un lien "j'aime", si on clique dessus, ça inscrit dans une table de la base de données l'id de la page, le nom de l'utilisateur et un "1" qui signifie que cet utilisateur aime cette page. Si l'utilisateur a déjà cliqué sur "j'aime", le lien "j'aime" deviens "je n'aime plus" et s'il clique dessus, la donnée inscrite auparavant se supprime.

    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(`like`) AS total FROM `likes`
    J'obtiens l'addition de tous les "1" de la table. Autrement dit, le nombre total de "j'aime" de toutes les pages.

    A mon sens ceci devrait être similaire à cela (sauf erreur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(`like`) AS total FROM `likes` WHERE id = $id)
    Théoriquement, c'est ce que je veux mais la requête n'a pas lieu et me mène vers une erreur.
    J'espère que c'est plus clair maintenant.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    quel est l'erreur sa pourrait nous aider à t'aider sur ta requête.
    une réponse vous a permis d'avancer ?

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    L'erreur:
    mysql_fetch_array(): supplied argument is not a valid MySQL result resource
    La ligne de code php complète:
    $req = mysql_query("SELECT SUM( `like` ) AS total FROM (SELECT * FROM `likes` WHERE id = '$id');"); while ($dnn = mysql_fetch_array($req))
    { echo $dnn['total']; }

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    enlève le point virgule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query("SELECT SUM( `like` ) AS total FROM (SELECT * FROM `likes` WHERE id = '$id')");
    ensuite pourquoi passer par une sous-requête ? Un simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(`like`) AS total FROM `likes` WHERE id = $id)
    Comme te l'avait dit RunCodePhp ne fonctionne pas ?
    une réponse vous a permis d'avancer ?

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Ah, bon ben j'ai rajouter des guillemets, enlever une parenthèse bidouiller un peu la ligne et maintenant ça marche.
    Merci.
    ligne de code finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(`like`) AS total FROM `likes` WHERE id = '$id'

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

Discussions similaires

  1. [XL-2013] Afficher le complémentaire d'une selection par auto filter
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2014, 06h53
  2. Afficher la résultat d'une SELECT dans un tableau(MYSQL)
    Par karamovic dans le forum Android
    Réponses: 3
    Dernier message: 02/05/2012, 09h11
  3. faire afficher des données suivant une selection
    Par pi-2r dans le forum Langage
    Réponses: 11
    Dernier message: 15/07/2011, 01h58
  4. Réponses: 2
    Dernier message: 16/09/2010, 13h59
  5. Afficher un total avec une fonction lors d'un clic d'une case à cocher
    Par sandddy dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/02/2009, 09h52

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