2010-12-12 7 views
0

Also, ich
http://ad1987.blogspot.com/2009/02/reddit-style-voting-with-php-mysql-and.htmlVoting System addiert und subtrahiert 1-5 jedes Mal

auf meiner Website ein Voting-System implementiert. Es funktioniert perfekt, abgesehen von der Tatsache, dass jedes Mal, wenn Sie abstimmen oder abstimmen, es irgendwo von 1-5 Stimmen hinzufügen kann. Der Quellcode ist dem auf dieser Website ziemlich ähnlich. Wenn Sie ihn also sehen möchten, überprüfen Sie ihn bitte dort. Für ein anschauliches Beispiel:

http://www.campusbasement.com/cornell/entertainment/articles/927/electro-is-taking-over-the-world

Dank

votes.php: http://pastie.org/1369778

+0

Meinst du, dass ein Benutzer mehrere Male wählen kann und du das verbieten willst? – alexn

+0

Nein, tut mir leid, ich habe nicht geklärt. Wenn Sie auf den zweiten Link gehen, den ich gepostet habe, und versuchen, über einen Kommentar abzustimmen, werden Sie bemerken, dass er von +5 auf +9 Stimmen gehen kann. – switz

+0

zeigen Sie uns Ihren Code das Original funktioniert offensichtlich wie erwartet ... Sie können es hier einfügen unter http://pastie.org/ und Link uns den Link – Breezer

Antwort

2

ich ein etwas ähnliches Problem hatte. Chrome hat aus noch unbekannten Gründen jede Seite zweimal heruntergeladen, sodass der Views-Zähler jedes Mal +2 erhielt.

Ich nehme an, Sie haben eine Benutzertabelle mit user_id und eine Artikeltabelle mit article_id. Sie können also den Check implementieren, der diese beiden Tabellen mit einer Viele-zu-Viele-Beziehung verbindet. Sie sollten eine Zwischentabelle mit den Feldern post_id - dem Beitrag, über den abgestimmt wird, user_id und optional einem Wert Feld (wenn der Benutzer beschließt, seine Stimme zu ändern) erstellen. Die ersten beiden Felder können ein zusammengesetzter Primärschlüssel sein.

Also wenn Benutzer Stimmen, suchen Sie nach der Zeile mit dem gleichen Beitrag und Benutzer-IDs. Wenn es nicht - Sie fügen es hinzu.

+0

Wow, danke! Ich bin ziemlich neu in PHP und MySQL, aber das macht Sinn. Hast du einen Link zu einem Tutorial, das mich vielleicht durch etwas Ähnliches führt? – switz

0

Das Problem ist, dass es keine Prüfung ob jemand bereits abgestimmt hat. Sie müssen also entweder einen Cookie setzen (was sehr oft fehlschlagen kann) oder IP und Browser zum Beispiel überprüfen ... Am besten wäre es, die Benutzer-ID zu überprüfen (wenn es nur möglich ist, wenn Sie angemeldet sind).

// EDIT:
ich nur in den Kommentaren der ersten Beitrag gelesen, dass das Problem der Stimmenauszählung ist, wenn nur ein einziges Mal Abstimmung ...

+0

Ich habe es tatsächlich so eingestellt, dass ich nur wählen kann, wenn der Benutzer angemeldet ist. Was wäre die beste Methode, um zu überprüfen, ob die userId abgestimmt hat? Ich würde lieber Kekse vermeiden, wenn ich kann. – switz

+0

Ehrlich gesagt, es ist keine große Sache, wenn ein Benutzer sich erneut aktualisieren und abstimmen kann, aber irgendwann in der Zukunft würde ich gerne einen Check implementieren, also könnte ich es jetzt auch tun, denke ich. – switz

Verwandte Themen