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

Langage PHP Discussion :

Probleme d'organisation de table


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut Probleme d'organisation de table
    Bonjours,

    J'ai fait un système de vote.

    La table sondage_vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id | site | images | code | reward
    Cette table me sert juste pour l'affichage, elle affiche, une petite images, sur laquelle on peut cliquer.
    Pour la maintenance c'est biens simple, j'ai juste a rajouter une image, un lien et le nouveau vote se rajoute sur le site.
    Je me sert d'une boucle while pour afficher.

    Ma deuxième table vote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id | pseudo | pseudo | point | vote1 | vote1_time | vote2 |vote2_time
    Cette table me sert a comptabiliser les points, et aussi laisser un délaie de 2h entre chaque vote.
    Si le membre a voter il y a moins de 2H, je n'affiche pas le bouton de vote.

    Alors voila mes problèmes, que vous avez du remarquer :
    - Pour ajouter un vote, je suis obligé d’éditer les 2 tables
    - Quand je veux afficher ou pas le bouton de vote en fonction du temps, je ne vois pas de solution.

    Je pense que l'organisation des tables n'est pas correct.
    Pourriez vous m'aidez a créer un système simple ?

    Merci

  2. #2
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Personnellement je verrais bien un truc du genre pour ta deuxieme table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id | id_vue | pseudo | vote | last_vote
    _ vote est le nombre de point attribuer par la personne au vote.
    _ id_vue est l'id du vote pour faire la liaison entre les deux tables.
    _ last_vote est l'heure a laquelle le vote a été effectué.

    pour savoir si le vote a été fait il y a moins de 2h, tu fais un datediff entre le temps courant et le last_vote .

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Merci de ta reponse.

    Mais ta reponse ne me convient pas vraiement.

    Que fais tu des autres votes ?
    vote1 | vote2 ???

    Pour la liaison je préfère faire une jointure c'est plus propre, mais avec ma table impossible.

  4. #4
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Chaque utilisateur peut faire un nombre de vote limité? ou illimité?

    La jointure se fait justement avec l'id comme tu as une relation 1-n

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    En effet la jointure ici semble possible, mais si tu regarde plus en detail c'est impossible.

    Pour les votes c'est illimité, sauf 1 toutes 2 heures.

  6. #6
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    J'ai pas du bien comprendre alors

    En gros tu as une table qui regroupe toutes les votes en cour (donc les sujets sur lesquels voter)

    Et une autre qui stocke les votes c'est ça?

  7. #7
    Membre expérimenté Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Par défaut
    Citation Envoyé par thebarbarius Voir le message
    Ma deuxième table vote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    id | pseudo | pseudo | point | vote1 | vote1_time | vote2 |vote2_time
    Bonjour,

    bon je comprends rien à cette table. Pourquoi y a t il 2 fois pseudo? 2 fois vote?
    Si tu veux garder un historique des votes pourquoi tu ne fais pas une table historique de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id | pseudo | vote | date/heure | id_site | vue
    ainsi ca te permet de connaitre quand il a voté pour la dernière fois (en comparant la date actuelle et la date de son dernier vote). Je pense aussi qu'en mettant vue, cela permet de savoir s'il l'a vu et si par hasard il vote tu fait un update.

    Si ca réponds pas à ta question désolé mais j'ai vraiment rien compris...

    Entièrement d'accord avec skeud

  8. #8
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    id | pseudo | pseudo | point | vote1 | vote1_time | vote2 |vote2_time
    merci j'avais pas vue en effet il y a une erreur

    Sa donne sa plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id | pseudo| point | vote1 | vote1_time | vote2 |vote2_time
    En faite, il y aura x fois votex_time selon le nombre de vote dans la table vote_site.

  9. #9
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut


    J'arrete pas de t'expliquer que ça ne sert a rien, les enregistrement ne sont pas unique par utilisateur mais multiple, ce qui est unique c'est le vote pour un site, un utilisateur aura qu'un seul enregistrement pour un id_vote.

    EDIT: un exemple de table complete pour toi pour que tu comprenne:

    vote:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1 | www.toto.fr | images | code | reward
    2 | www.google.fr | images | code | reward
    3 | www.tata.fr | images | code | reward
    vote_utilisateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1 | 1 | toto | 1 | heure
    2 | 2 | toto | 0 | heure
    3 | 3 | toto | 1 | heure
    4 | 1 | tata | 0 | heure
    5 | 2 | tata | 0 | heure
    6 | 3 | tata | 1 | heure
    Ce qui donne:
    www.toto.fr: 1/2
    www.google.fr: 0/2
    www.tata.fr: 2/2

    Et donc pas besoin de mettre le votex et voteX_time

  10. #10
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    skeud, cette technique je l'ai utilisé, sauf que mon sql saturé.
    Le temps d'affichage de la page quand il y avait un fort trafique était interminable.



    A la limite je prefere faire sous 3 tables avec des liaisons.

    table vote_site
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id | site | image | url | reward
    table vote_point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id | pseudo | point
    table vote_time
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id_point | id_site | time
    Je trouve mieux deja.
    Sauf un point noir, je vais etre obligé de creer une ligne par vote, ce qui me plait pas vraiment.

    Sur mon site actelle j'ai plusieurs milliers de client, je risque de saturer la DB si j'arrive a 1 000 000 000 de client.

    Après pour ce qui est de la supression des vote perimé, je vais devoir verifier a chaque fois qu'un client actualise une page...
    Pas très optimisé, je pense .
    Mais niveau organisation des tables je prefere.

    Auriez vous une idée pour une meilleur optimisation ?

  11. #11
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    euh meme avec des milliers de client sa devrait fonctionner, c'est pas un traitement lourd, le probleme vient plus de ton code je pense que du nombre de donnee.
    Perso je travail sur un site de gestion avec pres de 10000 devis et des traitement de calcul derriere tout sa, donc plutot lourd et le temps de calculer une moyenne en liaison avec d'autre donnee, sa me prend a peine 30 seconde, donc pour juste une histoire de vote, sa passe sans souci.

Discussions similaires

  1. probleme pour interroger 3 tables
    Par jexl dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/03/2006, 14h13
  2. [POSTGRESQL - C#] Probleme d'accès à une table
    Par angusyoung34 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 31/12/2005, 14h33
  3. Réponses: 5
    Dernier message: 12/12/2005, 19h30
  4. access2000, probleme creation relations de tables
    Par nono_60 dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 23h50
  5. probleme de creation de table
    Par donny dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 30/05/2005, 09h54

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