Savoir si un membre a déjà effectué une action ou non [TITRE MODERE CAR PEU EXPL

Résolu
AtomiKiller Messages postés 127 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 11 juin 2008 - 28 oct. 2005 à 12:23
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006 - 28 oct. 2005 à 13:57
Bonjour, je suis actuellement en train de créer un site web mais je suis confronté à un problème que je n'arrive pas à régler.



Effectivement dans ce site, il y a un espace membre, et chaque membre a
un nombre de points, jusque là pas de soucis, mais j'ai créé une page
qui fait que, à chaque fois qu'un membre clique sur un des 10 liens
présents sur la page son compte est crédité de 10 points.



Or, je ne sais pas comment sécuriser pour chaque membre, afin que si il
clique une fois sur le lien, il gagne 10 points, mais que si il
reclique cela ne lui ajoute pas 10 points à nouveau..



Voyez vous mon problème ?



Merci bien, j'espère que vous pourrez m'aider.

11 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 oct. 2005 à 13:08
Hello,

une table membre, une table lien, une table click (c'est qu'un exemple hein lol).
dans click on a id_membre et id_lien. Tu remplis avec l'id_membre et l'id_lien quand un de tes membres clique sur un lien.
Et là, tu peux même t'amuser, quand un membre est connecté, à n'afficher que les liens dont l'id_lien n'est pas lié à l'id_membre du mebre en question, dans la table click.
Ou tu peux juste n'ajouter les points que lorsque, quand il clique, cette jointure n'est pas présente.
3
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 13:36
Moi je vote pour malalam :]

La relation many-to-many a fait ses preuves! Ça ne peut que marcher!



Bon pour explicité ce que malalam a dit (que j'ai pourtant trouvé clair mais bon)



Normalement tu as une table avec tout tes membres à l'intérieur :

table membres :

id : 1 pseudo : boulay

id : 2 pseudo : nono

id : 3 pseudo : darkslug

etc...



tu fais une table avec tout tes liens

table liens :

id : 1 url : http://www.google.fr/

id : 2 url : http://www.php.net/

id : 3 url : http://www.phpcs.com/

id : 4 url : http://www.csszengarden.com/

etc...



et enfin tu vais une table qui va engendrer une relation entre les deux (de type many-to-many mais tout le monde s'en fout)

table clicks :

id_membre : 2 id_lien : 4

id_membre : 3 id_lien : 1

id_membre : 2 id_lien : 3

id_membre : 2 id_lien : 2

id_membre : 1 id_lien : 2

etc...



et là, si nono (id=2 dans la table membres) veut cliquer une nouvelle fois sur http://www.php.net/(id = 4 dans la table liens) pour bien booster son quota, tu n'as qu'a vérifier si il n'y a pas dans la table clicks un enregistrement avec à la fois id_membre = 2 et id_lien = 4.

d'autant plus que te conseil d'indexer en clé primaire la paire id_membre, id_lien ( PRIMARY KEY (id_membre,id_lien) ), ce qui fera générer une erreur à MySQL quand si tu essayais d'ajouter à nouveau une paire identique.



Voilà :)
3
cs_sjon Messages postés 861 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 29 novembre 2006 1
28 oct. 2005 à 13:08
Sael og blesud



Bah lors du premier clic vous créer une variable de session et vous la
checker par la suite ... Vous pouvez également mettre en place un
système de temps ...

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
0
AtomiKiller Messages postés 127 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 11 juin 2008
28 oct. 2005 à 13:13
Malalam merci pour ta réponse mais c'est un peu compliqué vu que j'ai
déjà beaucoup de requetes SQL, Sjon, les sessions me paraissent être
une bonne solution mais si le membre se déconnecte et se reconnecte il
pourra de nouveau être crédité de dix points.



N'y a t-il aucun autre moyen ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
AtomiKiller Messages postés 127 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 11 juin 2008
28 oct. 2005 à 13:17
Ahh oui de plus, les 10 liens sur la page ne sont pas statiques, c'est
à dire qu'à n'importe quel moment, un site peut se rajouter à cette
liste ainsi le premier site devient deuxième et le 10° site s'en va de
la liste vous voyez ?



Donc il faudrait qu'à chaque actualisation de la liste si le membre
clique sur le premier lien, il soit crédité, et que si il clique sur le
deuxième lien ( l'ancien premier sur lequel il avait déjà cliqué ) il
ne soit pas crédité



Je sais c'est compliqué c'est pourquoi je fais appel à vous! merci!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 oct. 2005 à 13:24
Heu...ma solution est simple, et c'est la plus efficace pour ton
problème, justement. Et puis en fait, c'est la seule, pour ce que tu
veux...lol.



Donc il faudrait qu'à chaque actualisation de la liste si le membre
clique sur le premier lien, il soit crédité, et que si il clique sur le
deuxième lien ( l'ancien premier sur lequel il avait déjà cliqué ) il
ne soit pas crédité



D'où l'intérêt d'une table lien. Je ne vois pas ce que ça a de compliqué.
0
cs_sjon Messages postés 861 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 29 novembre 2006 1
28 oct. 2005 à 13:24
Sael og blesud



Bah vous enregistrer la date et l'heure du clic et vous ne créditez pas si cela fait moins de 24h par exemple ...

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
0
AtomiKiller Messages postés 127 Date d'inscription lundi 28 juillet 2003 Statut Membre Dernière intervention 11 juin 2008
28 oct. 2005 à 13:25
Sjon : Comment faire une session pour chaque lien, et lui donner une validité de 24H .. ? car là je ne sais pas faire



Merci beaucoup !
0
cs_sjon Messages postés 861 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 29 novembre 2006 1
28 oct. 2005 à 13:33
Sael og blesud



Bah vous créez un variable de session $_SESSION[LIEN]=Id du lien
et vous stockez sur le server le temps ... Mais il est vrai que la
solution de Malalam est la meilleure ... et simple à mettre en oeuvre
en plus ... Donc orientez vous plutôt la dessus ...

Bon courage ...

NB : Si la réponse vous convient merci de l'accepter pour fermer ce thread ...

Sigurjón Bírgir Sigurðssón aka Sjón
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 oct. 2005 à 13:55
Y a pas, t'es vachement plus pédagogue que moi lol ;-) Merci pour le soutien les gars ça fait chaud au coeur lol.
0
monoceros01 Messages postés 420 Date d'inscription vendredi 28 novembre 2003 Statut Membre Dernière intervention 20 mars 2006
28 oct. 2005 à 13:57
;p
0
Rejoignez-nous