Witam, byłem zmuszony do jednego ze swoich projektów napisać system ocen w stylu - dobry lub zły (rączki).
Oczywiście zrobiłem to w Ajaksie, a mianowicie wygląda to tak:
Mam tabelkę rating, a w niej kolumny: rating_user (to kolumna z oficjalnym id usera z tabeli users), who_rate (przechwuje id oceniającego) oraz rate (przechowuje 1 dla "dobry", albo 0 dla "zły"). I teraz tak system działa bardzo dobrze - po kliknięciu na odpowiedni obrazek ("dobry" lub "zły") do tabeli rating dodawany jest nowy rekord. Po kliknięciu kolejny raz na tą samą ocenę rekord jest usuwany (czyli użytkownik może ocenić, a także zabrać ocenę). Jeśli użytkownik wcześniej ocenił na np. "dobry", a teraz kliknie na "zły" to rekord już nie jest usuwany, a tylko wiersz z oceną jest aktualizowany. Chciałbym, aby było tak, że jak użytkownik zmienia swoją ocenę, był widoczny dynamiczny tego rezultat (ovecie jest ale tylko przy kliknięciu na tea samą ocenę (czyli jak daję, albo odbieram ocenę to jest dynamiczny tego widok)). Dla widoku ocen na stronie mam dwa tagi span: tu wyświetla ile dobrych ocen, tu wyświetla ile złych ocen. Tagi mają id, by mogły być wyświetlane dynamiczne wyniki (Ajax) po oddaniu oceny.
Kod JS/Ajax jest napisany następująco:
function rating(user_id, rate)
{
var request = NewObject();
if (request) {
request.onreadystatechange = function() {
if (request.readyState==4) {
if (request.status==200) {
if(rate == 1) document.getElementById('good').innerHTML=request.responseText;
if(rate == 0) document.getElementById('bad').innerHTML=request.responseText;
}
}
}
};
request.open('get', '/includes/rating.php?user_id='+user_id+'&rate='+rate, true);
request.send(null);
}
Pomoże ktos? Jeszcze raz podkreśle, że system działa poprawnie tylko chciałbym by ajax wyświetłał wynik przy zmianie oceny. Czyli jak mam na str.: dobre (3), złe (4) jak głosowałem na "dobre", a kliknę teraz na "złe" to w "dobre" dynamicznie widać jak z np. 3 wypisuje 2, ponieważ zmieniłem swoją ocenę na "dobre", ale już w "złe" nie widzę, że ocena się zmieniła, choć w bazie wszystko poprawnie się zaktualizowało.
Trochę namieszałem, ale może ktoś pomoże.