Page 1 sur 1

MYSQL problème requéte toute simple

Posté : 26 mars 2011, 18:51
par Wander
Bonjour tous le monde
Je souhaite tout dabord m'excuser pour mon Orth qui vous aller le voir est asser pathétique !

Je suis un débutant en PHP et je n'ai malheureusement personne dans mon entourage qui pourrais m'aider sur mon projet

Alors voila je vous explique ce projet brièvement.

Je voudrais faire un système de vote entre deux photo, la personne qui veux voter a le choix entre deux de mes dessins que nous appèlerons dessin 1 et dessin 2 pour plus de facilitée ^^

Les personne vote pour les dessins et une fois leurs vote fait sa écrit le résultat du "duel" dans une base de donnée de maniéré :

ID Gagnant_ID Perdant_ID
1 13 12
2 5 19

bien entendu c'est un exemple


Voila ma problématique :
Pour le systéme de classement il rechercherai les ID un par un
il chercherai le nombre de fois ou il as était entré dans la "colonne" Gagnant_ID et dans la "colonne" Perdant_ID

La il ferai une soustraction du nombre de fois ou il est apparue dans les gagnant par le nombre de fois ou il est apparue dans les perdant

Donc au final j'aurai un résultat du genre :

1 15
2 5
3 25
4 18
.....

Et la il m'afficherai les ID (de la table dessin) suivis du nombre de victoire par ordre décroissant


J'espère que vous auriez compris se que je voulais dire et que vous pourriez m'aider =)


Cordialement.

Re: MYSQL problème requéte toute simple

Posté : 26 mars 2011, 20:54
par moogli
salut,

si j'ai bien compris tu a une table avec tes dessins ?

si oui tu peut utiliser une ou plusieurs tables pour gérer les "duel".

tu pourra ainsi étendre la chose à, pourquoi pas, plusieurs dessins si l'envie t'en prend ;)

Comment faire ?

une table "duel" qui peut contenir un commentaire (explication etc) une date d'arret des votes (et pourquoi pas une date de début pour les préparer à l'avance ;) ).
exemple
create table duels (
idduel int unsigned not null auto_increment, 
titre text not null,
commentaire text,
datedebut date not null,
datefin date not null,
primary key(idduel)
)type = myisam;
ensuite une table qui contient les dessins que l'on doit comparer, ainsi qu'un champ nombre de vote et un champ contenant l'id du duel (idduel de la table précédente.
Par exemple
create table votes (
idvote int unsigned not null auto_increment,
idduel int unsigned not null, 
iddessin int, #la faut mettre la chose que la clef primaire de la table de dessin
nbvote int unsigned not null default 0,
primary key(idvote)
)type=myisam;
Avec ça tu a un code totalement générique et faire des sondages avec autant de dessin voulus.
Comment ça fonctionne ?
on vote pour un dessin ou un l'autre, à chaque vote on fait un increment du tuple correspondant dans la table (correspondant au dessin et au "duel").

Après a toi de gérer le fait que l'on ne doit pas pouvoir voter 400 fois pour un dessin :)


@+

Re: MYSQL problème requéte toute simple

Posté : 26 mars 2011, 21:19
par Wander
Bonsoir, merci de ta réponse

Les tables sont bonne, il n'y as pas de soucis a se niveau la ^^

J'ai mes tables qui sont casi identique au tiennes

A chaque vote il m'ajoute l'ID des la photo perdant dans une "ligne" de la DB et l'ID dans la colonne suivante

Mais le le pb que j'encoure c'est pour faire le classement

Compté le nombre de duel fait par tel ou tel image

Je m'explique
L'image ayant pour ID : 1
est par exemple passé 50 fois en duel en a gagner 15 et perdu 35

Mais il y as d'autres ID bien entendu, par exemple 27 dessins a comparer
donc il faudrait compté le nombre de combat gagner par l'ID 1 et le nombre de combat perdu
ensuite soustraire le nombre de combat gagner par le nombre de combat gagner

Ensuite automatiser tout sa pour tous les ID des différentes photos sachant que des dessins suplémentaires peuvent arriver en cour de route
et ensuite trier tout sa par ordre décroissant ^^

C'est la partie script que je ne sais pas faire

Cordialement.

PS: Merci de ta réponse

Re: MYSQL problème requéte toute simple

Posté : 28 mars 2011, 10:44
par Mazarini
Bonjour,

1) Créer une vue : select Gagnant_ID as ID,1 as resutl union select Perdant_ID as ID,-1 as result

2) select id, sum(result) as total 'le nom de la vue" group by ID order by total

Re: MYSQL problème requéte toute simple

Posté : 28 mars 2011, 11:03
par sadeq
Bonjour,

Si tu ne donnes pas la structure des tes tables on ne peut pas t'aider à résoudre ton problème. Sachant que la solution doit être surement une requête SQL. Malheureusement on ne peut pas te pondre n'importe quelle requête sans connaitre vraiment la structure de tes tables. Généralement, moi, j'ai un avis sur la construction de la structure des tables avant de rechercher une solution par les requêtes SQL ou PHP.

Par exemple, les structures des tables données par moogli peuvent se discuter mais ce n'est pas le sujet, j'attendrai les tiennes.

A+