Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Edycja funkcji głosowania
Forum PHP.pl > Forum > Przedszkole
the-sopel
Witam, korzystam z gotowego modułu (Vote It Up) pozwalającego na głosowanie użytkownikom odwiedzającym bloga.
Głosowanie odbywa się za pomocą kliknięcia plusa lub minusa, jeżeli jest się zalogowanym wszystko jest w porządku - gorzej jest wtedy gdy głosują goście.
Problem polega na tym, że będąc nie zalogowanym i klikając szybko kilka lub nawet kilkanaście razy na plus/minus system zapisuję wszystkie kliknięcia dając możliwość manipulowania głosami.

Funkcja realizująca głosowanie wygląda następująco:
Kod
function vote(obj, votelinkobj, aftervote, postID ,userID, baseURL) {
    currentobj = obj;
    voteobj = votelinkobj;
    aftervotetext = aftervote;
    var scripturl = baseURL+"/voteinterface.php?type=vote&tid=total&uid="+userID+"&pid="+postID+"&auth="+Math.random();
    lg_AJAXrequest(scripturl);
}

Znalazłem rozwiązanie polegające na zmianie funkcji na:
Kod
var clicked = false;
function vote(obj, votelinkobj, aftervote, postID ,userID, baseURL) {
    if (clicked == false) {
        currentobj = obj;
        voteobj = votelinkobj;
        aftervotetext = aftervote;
        var scripturl = baseURL+"/voteinterface.php?type=vote&tid=total&uid="+userID+"&pid="+postID+"&auth="+Math.random();
        lg_AJAXrequest(scripturl);
    }
    clicked = true;
}

Jednak teraz, gdy gość zagłosuję na jakiś post musi odświeżyć stronę by móc zagłosować na inny.
Myślę, że najlepiej byłoby gdyby funkcją odliczała czas po kliknięciu na plus/minus i powiedzmy po kilku sekundach (gdy głos zapiszę się już w bazie) pozwalała na kolejne kliknięcie,
czy mógłby ktoś pomóc mi w napisaniu czegoś takiego?
Ziem
Możesz np.: utworzyć tablicę w której będziesz trzymał id postów na które już dany użytkownik oddał głos. Jeśli użytkownik chce zagłosować na dany post, a jego id znajduje się już w tablicy to nie pozwalasz mu na to kolejny raz.
the-sopel
Witam, o takiej możliwości wiedziałem przed założeniem tematu jednak wydaję mi się ona niezbyt funkcjonalna.
Jeżeli ktoś jest w stanie pomóc zapraszam do tematu w dziale ofert.
celbarowicz
Do każdego głosowania można zrobić ukryte pole z wartością np "0". Po kliknięciu JQ blokuje przycisk i sprawdza wartość ukrytego pola. Gdy jest wartość "0" dane przekazywane są na server. Wartość pola zwiększamy np o 1, przycisk zostaje odblokowany.
Tak można zrobić z każdym buttonem itp.(można dane zapisać w sesjach wtedy po odświeżeniu strony.........?)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.