Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2011, 03h26   #1
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Par défaut Probleme d'organisation de table

Bonjours,

J'ai fait un système de vote.

La table sondage_vue :
Code :
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 :
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
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 07h51   #2
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
Personnellement je verrais bien un truc du genre pour ta deuxieme table:

Code :
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 .
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 07h57   #3
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 08h01   #4
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
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
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 08h04   #5
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 08h10   #6
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
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?
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 14h54   #7
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
La table vote_site ne me sert que pour l'affichage.
J'affiche dans un tableau toutes les images, avec une lien de redirection.
Un fois cliqué sur l'image sa redirige vers ... vote.php qui va ajouter le vote, puis redirigé vers le partenaire.

La table vote, elle comptabilise les votes.
Dans :
- vote1 : On met 1 ou 0 pour dire que c'est voté
- vote1_time... One met le temps du vote + 2 heures. (pour vierifer si on peut voter.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h05   #8
Membre confirmé
 
Homme Vincent
Développeur informatique
Inscription : janvier 2009
Messages : 246
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Localisation : France, Essonne (Île de France)

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

Informations forums :
Inscription : janvier 2009
Messages : 246
Points : 235
Points : 235
C'est déjà beaucoup plus clair. Mais c'est quoi ton souci exactement ?
philodido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h23   #9
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Mon souci, viens de la longteur de la maintenance.

Imagniez pour ajouter un nouveau vote, je dois ajouter les info dans vote_site.
Jusqu'a la pas de probleme.

Mais je dois aussi rajouter des info dans : vote_site
... | ... | vote2 | vote2_time.
C'est deja mois pratique.

Ensuite pour afficher ou ne pas afficher le bouton de vote, je ne peux pas le faire.
Pour l'instant j'affiche tous le temps le bouton de vote.

Donc mon probleme c'est au niveau de l'organisation des tables.

Dois je supprimer une table, la modifier, ou en rajouter une ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h45   #10
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
C'est pour sa que je t'ai expliquer une autre manière de voir les chose:

Code :
id | site | images | code | reward
Qui va DEFINIR les votes en cour (cad les différents endroit ou le gugus peut voter)

Ensuite pour chaque vote, une table repertori les votes des gugus:

Code :
id | id_vue | pseudo | vote | last_vote
Je te donne un exemple:

Code :
1
2
3
4
5
6
La table vote:
1 | www.toto.fr | images | code | reward
 
La table vote_user:
1 | 1 | toto | 1 | heure
2 | 1 | titi   | 0 | heure
Ce qui fait que 2 utilisateur ont voter pour toto.fr.
Le résultat du vote est donc 1/2.

Ensuite tu rajoute un enregiostrement dans ta table vote et pof tu as un nouveau vote disponible
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 15h56   #11
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Citation:
Envoyé par thebarbarius Voir le message
Ma deuxième table vote :
Code :
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 :
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
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 16h06   #12
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Citation:
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 :
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.
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 16h18   #13
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471


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 :
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 :
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
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 16h30   #14
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
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 :
1
2
 
id | site | image | url | reward
table vote_point
Code :
1
2
 
id | pseudo | point
table vote_time
Code :
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 ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 19h48   #15
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
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.
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 20h49   #16
Membre habitué
 
Avatar de thebarbarius
 
Inscription : octobre 2008
Messages : 745
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 745
Points : 139
Points : 139
Je ne parle pas de millier, mais de dizaine de milliers.

On va rester sur tes 30s, regarde imagine 30 seconde pour afficher une page... sachant qu'on navigue sur un site donc on visite 3 a 4 pages minum... ce qui ferait un temps d'attente total de 2 minutes, pour lire 4 pages...

Mes clients sa les feraient fuir, et je les comprends j'en ferai de meme.

Donc revenons a la question de base.
Comment optimiser tous sa ?
thebarbarius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 07h39   #17
Membre éprouvé
 
Homme romain escudier
Développeur informatique
Inscription : juin 2011
Messages : 300
Détails du profil
Informations personnelles :
Nom : Homme romain escudier
Âge : 22
Localisation : France, Ille et Vilaine (Bretagne)

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

Informations forums :
Inscription : juin 2011
Messages : 300
Points : 471
Points : 471
Beh justement, je te dis que ça ne devrait pas poser de problème avec une organisation de table de cette manière.
Ensuite si ça prend du temps c'est du coter php que tu n'optimise pas, pas du coter sql
__________________
Pas de solution, pas de probleme

Une réponse utile (ou +1) le pouce vert
Une réponse à votre question

skeud est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2011, 11h07   #18
Membre Expert
 
Inscription : avril 2006
Messages : 1 338
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2006
Messages : 1 338
Points : 1 315
Points : 1 315
Citation:
Envoyé par skeud Voir le message
Beh justement, je te dis que ça ne devrait pas poser de problème avec une organisation de table de cette manière.
Ensuite si ça prend du temps c'est du coter php que tu n'optimise pas, pas du coter sql
ou du coté sql si tu n’indexe pas correctement tes tables.. mais sinon oui en principe pas de soucis :!
__________________
Stay in Bed .. Save Energy
boo64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h37.


 
 
 
 
Partenaires

Hébergement Web