Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX] system głosowania
Forum PHP.pl > Forum > XML, AJAX > AJAX
Narus
Witam

Potrzebuje rozbudować swoją stronkę o prosty system głosowania. Najbardziej zależy mi na tym aby był taki jak na demotywatorach.pl
Udało mi się zrobić na razie tyle:

głosowanie:
  1. oceń: <span onclick='dobre(<?=$wiersz[id]; ?>);' class='zielony'>Plusik</span> lub <span onclick='zal(<?=$wiersz[id]; ?>);' class='czerwony'>Minusik</span> | ocena: <span class='ocena<?=$wiersz[id]; ?>'><?=$wiersz[ocena]; ?></span> (glosowano <span class='ocen<?=$wiersz[id]; ?>'><?=$wiersz[ocen]; ?></span> razy)


script.js:
  1. function dobre(id){
  2. $(".j").load("glos.php?dobre="+id);
  3. }
  4. function zal(id){
  5. $(".j").load("glos.php?zal="+id);
  6. }


glos.php(dodaje do bazy glos):
  1. <? if($dobre!="") {
  2.  
  3.  
  4. $query = mysql_query("SELECT * FROM film WHERE id='$dobre'");
  5. while( $wiersz = mysql_fetch_array( $query ) ) {
  6.  
  7. $ocena=$wiersz[ocena];
  8. $ocena++;
  9. $ocen=$wiersz[ocen];
  10. $ocen++;
  11.  
  12.  
  13. mysql_query( "UPDATE film SET ocen='$ocen', ocena='$ocena' WHERE id='$dobre' " ) or die ("Błąd SQL - Edycja przedmiotu");
  14. }
  15.  
  16. }
  17. ?>
  18.  
  19. <? if($zal!="") {
  20.  
  21.  
  22. $query = mysql_query("SELECT * FROM film WHERE id='$zal'");
  23. while( $wiersz = mysql_fetch_array( $query ) ) {
  24.  
  25. $ocena=$wiersz[ocena];
  26. $ocena--;
  27. $ocen=$wiersz[ocen];
  28. $ocen++;
  29.  
  30. mysql_query( "UPDATE film SET ocen='$ocen', ocena='$ocena' WHERE id='$zal' " ) or die ("Błąd SQL - Edycja przedmiotu");
  31.  
  32. }
  33. }
  34. ?>


A wiec na razie działa mi tylko głosowanie bez odświezania. A chcialbym aby po zagłosowaniu, bez przeładowania strony, zmieniła się ilość głosów, ocena oraz pojawił się stosowny komunikat (najlepiej nie typu alert() ).

Jakieś pomysły?

Pozdrawiam serdecznie
panjarek
Ja u siebie rozwiązałem to w następujący sposób : http://forum.php.pl/index.php?showtopic=124479&hl=
i działa sprawnie ( po dopisaniu części do negatywnych głosów of course )
Narus
Bawiłem się własnie tym i troszkę średnio mi wychodziło, ponieważ nie do końca rozumiem ten zapis:

  1. $.ajax({
  2. type: 'GET',
  3. url: href,
  4. success: function() {
  5. rating_div.html("Głos został oddany!");
  6. },
  7. error: function (XMLHttpRequest, textStatus, errorThrown) {
  8. rating_div.html('Error!');
  9. }
  10. });


jak tu mam odniesc sie do glos.php w ktorym mam zapisaną operacje na bazie i jak mam zaktualizowac ilosc glosów i ocene?
i po co te rating_div.html?

edit:

Skorzystałem z kodu podanego przez 'panjarek'.
Głosowanie działa, zlicza do msql głosy, jednak chciałbym aby aktualizowało na stronie ilość głosów i ocene. Tak więc aby wyczytywało z bazy ilość głosów lub żeby (najprościej) pobrało z pliku glos.php.

Ma ktoś pomysł? ;>
rafalw
w skrypcie php po kazdym mozliwym wyjatku dopisz zeby zwracalo ilosc glosow (w formie tekstu). odbierz ta wartosc w JS i popzrez innerHTML podmien smile.gif

UP

aha, to jquery, wiec zamaist innerhtml jakis odpowiednik tego w jq, nie znam ise na tym
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.