Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Discussion: Système de vote

  1. #1
    Candidat au titre de Membre du Club
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 15
    Points : 14
    Points
    14

    Par défaut Système de vote

    Bonjour

    Je me pose la question comment mettre en place un système de vote.

    En gros j'aimerais qu'une personne puisse "voter" pour quelque chose (peu importe, on peut réduire le problème a un seul type de données, avec juste un index/clé).
    Je pense à un système simple comme "J'aime/J'aime pas".

    J'aimerais qu'une personne ne puisse voter qu'une fois.

    Donc en gros je me dis que je vais faire une table "vote" et mettre dedans tous les votes des utilisateurs (clé user, clé élément voté, aime/aime pas).

    Dans mes premiers essais avec PostGreSql, sur chaque client de mon jeu, je refaisais sans cesse les requêtes pour calculer les classements. Mais certaines personnes m'ont indiqué que c'était lent chez eux.
    Donc pour un système de vote, j'imagine qu'il n'est pas conseillé de calculer sans cesse la somme de tous les votes d'un item pour faire des classements. Il est peut-être mieux de stocker quelque part le résultat.
    Existe-il un système pour que ce soit la base de données qui mette à jour les totaux quand il y a un vote qui est ajouté ? (est-ce ça les "triggers" ?)

    Pour qu'un utilisateur ne vote pas deux fois, il faut que je vérifie si il a déjà voté pour tel ou tel élément et proposer le choix "J'aime" ou "J'aime pas" en fonction. Cela fait pas mal de recherche dans une grosse table. Ne vaut-il pas mieux créer une table de vote pour chaque élément ? (j'ai beaucoup d'utilisateurs et beaucoup d’éléments). Ça fera plein de tables, mais peut-être est-ce mieux pour les recherches ?

    Pas vraiment une question, mais plutôt une réflexion à voix haute. Vos commentaires sont les bienvenus (je suis toujours un gros débutant, n’hésitez pas à m’éclairer sur des mécanismes qui m'auraient échappé).

    Le dev blog de mon jeu: http://blog.raggededge-online.com/

  2. #2
    Responsable Livres

    Avatar de MaitrePylos
    Homme Profil pro Gérard Ernaelsten
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    3 850
    Détails du profil
    Informations personnelles :
    Nom : Homme Gérard Ernaelsten
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 3 850
    Points : 8 798
    Points
    8 798

    Par défaut

    Moi je le vois en 3 tables dont une que vous devez déjà posséder c'est celle de vos utilisateurs/client/participant ou je ne sais comment vous la nommez.

    user :
    id-user int
    nom varchar
    prenom varchar
    ........

    sondage
    id-sondage int
    id-user int
    id-resultat-sondage
    vote int(1) (1 ou 0 )

    resultat-sondage
    id-resultat-sondage int
    nom-sondage varchar
    positif int
    negatif int



    Quand un user vote dans un sondage (quelconque) on l'indique dans la table sondage et un incrémente la table resultat-sondage

    Code :
    1
    2
    3
    4
    5
    6
     
    UPDATE resultat-sondage SET posistif = positif +1 WHERE id-resultat-sondage = (id du sondage) ;
     
    ou
     
    UPDATE resultat-sondage SET négatif = negatif +1 WHERE id-resultat-sondage = (id du sondage) ;

  3. #3
    Candidat au titre de Membre du Club
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 15
    Points : 14
    Points
    14

    Par défaut

    Merci.
    Le conseil c'est donc d'utiliser une seule table pour stocker tous les votes.
    Et pour qu'un utilisateur ne vote pas deux fois, rechercher dans cette table.

  4. #4
    Responsable Livres

    Avatar de MaitrePylos
    Homme Profil pro Gérard Ernaelsten
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    3 850
    Détails du profil
    Informations personnelles :
    Nom : Homme Gérard Ernaelsten
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 3 850
    Points : 8 798
    Points
    8 798

    Par défaut

    Dans la table resultat-sondage

    ligne par sondage


    Et dans la table sondage

    tu mets tout les sondages où un user a voté

  5. #5
    Candidat au titre de Membre du Club
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 15
    Points : 14
    Points
    14

    Par défaut

    Dans mon cas, je ne pense pas avoir besoin de créer de sondages, puisque en gros, les utilisateurs pourront "voter" pour n'importe quel élément.
    Par exemple, Circuits de 1 a 100 ou Vaisseau de 1 à 10.
    La table vote serait donc:
    Christophe, Circuit 45, J'aime
    Laurent, Vaisseau 8, J'aime pas
    Christophe, Circuit 41, J'aime
    ....

    A moins que je n'ai pas compris l’intérêt de créer des "sondages" ici ?

  6. #6
    Responsable Livres

    Avatar de MaitrePylos
    Homme Profil pro Gérard Ernaelsten
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    3 850
    Détails du profil
    Informations personnelles :
    Nom : Homme Gérard Ernaelsten
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 3 850
    Points : 8 798
    Points
    8 798

    Par défaut

    Oui, mais tu te plains de lenteur.

    Et tu nous proposes une base de données mal modélisé et non normalisé

    Je te conseil les lectures suivantes :

    http://laurent-audibert.developpez.c...urs-BD015.html

    http://sgbd.developpez.com/actu/3450...es-par-SQLpro/

    Et surtout celui-ci

  7. #7
    Candidat au titre de Membre du Club
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 15
    Points : 14
    Points
    14

    Par défaut

    Merci pour la réponse.

    Je ne me plains de rien. J'essaie juste de faire comprendre ce dont j'ai besoin. Ma remarque était la juste pour être sûr que j'ai bien été clair.

    Je suis là justement pour comprendre comment implémenter.

    Si tu as bien compris mon problème alors très bien.

    Merci pour les lectures, je vais aller voir cela.


  8. #8
    Responsable Livres

    Avatar de MaitrePylos
    Homme Profil pro Gérard Ernaelsten
    DBA & Dev PHP
    Inscrit en
    juin 2005
    Messages
    3 850
    Détails du profil
    Informations personnelles :
    Nom : Homme Gérard Ernaelsten
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA & Dev PHP
    Secteur : Service public

    Informations forums :
    Inscription : juin 2005
    Messages : 3 850
    Points : 8 798
    Points
    8 798

    Par défaut

    Citation Envoyé par Christophe78180 Voir le message
    Merci pour la réponse.

    Je ne me plains de rien. J'essaie juste de faire comprendre ce dont j'ai besoin. Ma remarque était la juste pour être sur que j'ai bien été clair.


    Sorry ai confondu de post

  9. #9
    Candidat au titre de Membre du Club
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 15
    Points : 14
    Points
    14

    Par défaut

    Je ne connaissais pas le principe de normalisation.
    Je vais prendre le temps de lire et de comprendre tout cela (très bien le dernier lien, merci)

  10. #10
    Candidat au titre de Membre du Club
    Homme Profil pro
    Concepteur Jeux Vidéos
    Inscrit en
    avril 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Concepteur Jeux Vidéos
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2011
    Messages : 15
    Points : 14
    Points
    14

    Par défaut

    Citation Envoyé par MaitrePylos Voir le message
    Sorry ai confondu de post
    Ok pas de soucis

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •