Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Problem z odświeżaniem w liczniku i ilośćią głosów
Forum PHP.pl > Forum > PHP
mis-pas
Siemka.Mam taki system dodawania filmików itd... i to jest plik (display.php) w którym wyswietla się filmik z określonym ID, komentarze oraz system oceniania! Wszystko jest OK tylko z tym systemem oceniania...

Oto plik display.php do ściągnięcia jako plik tekstowy, ponieważ całość kodu się tu nie zmieściła!

Kod
http://s003.wyslijto.pl/?file_id=05605872689844479844


To są zapytania do bazy mysql:
  1. --
  2. CREATE TABLE `oceny` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `login` char(50) DEFAULT NULL,
  5. `stuff` int(11) DEFAULT NULL,
  6. `ocena` int(1) DEFAULT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin2 AUTO_INCREMENT=7 ;


Problem jest w tym że jak chce zagłosować na filmik numer 1 na ocenę 5 to normalnie dodaje! Jednak gdy chce dodać ocene w innym filmiku (z innym ID) to mi wywala, że już oceniałem i że była to ocena 5/5! I taka sytuacja się powtarza z każdym kolejnym filmikiem!
Co trzeba zrobić żeby normalnie wszystko działało! Z góry dzięki za pomoc!
k1ller
Mysle ze klopot jest tutaj:

  1. <?php
  2. $res2 = mysql_query('select * from `oceny` where `login`='' . $_SESSION['login'] . ''');
  3. ?>




Szukasz oceny dla uzytkownika, a jezeli ktos przed chwila zaglosowal to juz bedzie w tej bazie, dlatego musisz dodac warunek dla konkretnego filmu:



  1. <?php
  2. $res2 = mysql_query('select * from `oceny` where `login`='' . $_SESSION['login'] . '' and `stuff`='' . ((int) $_GET['id']) . ''');
  3. ?>
arecki
Zrób przechowywanie w sesji zmiennej o wartości true lub false w zależności od oddawania głosów i przez inkrementacją licznika sprawdzaj czy już przypadkiem nie zagłosował. Z tym że jak wyłączy przeglądarkę i włączy ją na nowo to znowu może głosować. W związku z tym wrzuć do bazy że dany klient o danej godzinie głosował + jakiś czas po którym może głosować i przed głosowaniem sprawdzaj te wartości. Bo możesz również zrobić to przez cacho ale gość sobie skasuje ciacho i 'dupa zbita' kiler smile.gif
mis-pas
nie no super smile.gif teraz działa extra biggrin.gif A mam jeszcze jeden problem... przy wyświetlaniu jest licznik i on się co odświeżenie dodaje o 1.. jak zrobic zeby byl odporny na odswiezanie? I jeszcze jedno.. jaki kod wkleic pod tym systemem oceniania żeby byla ilosc oddanych glosow?

JEszcze raz z gory dzieki winksmiley.jpg
jezoo
zastosuj sesje albo ciastko [cookies], czyli:
  1. <?php
  2. if(empty($_SESSION_['licznik']) || $_SESSION['licznik']==NULL) // lub !isset($_COOKIES['licznik']
  3.  $dodaj+=1;
  4. else
  5. echo $licznik;
  6. ?>


wybor nalezy do Cebie.
a ja mam pytanie, co do ciastek, jak zrobic zeby te ciastka byly na dysku i nie tracily wartosci im zadanej, dodam ze mam zrobione tak
  1. <?php
  2. setcookie("nazwa","wartosc",time()*3600);
  3. ?>

i jak jest przegaldarka otwarta to ciastko tez jest, ale jak zamkne i ponownie otwoze to juz nie maja wartosci i na nowo tworzy
mis-pas
OK! Ale jak ten pierwszy kod wdrążyć w ten cały kod co mam questionmark.gif niestety jestesm zielony w php sad.gif
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.