Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zliczanie kliknięć
Forum PHP.pl > Forum > Przedszkole
kropamk
Witam.

Chcę dodać na stronę coś w stylu "lubię to" ale nic związanego z facebook'iem. Mam prosty skrypt, zlicza mi ale nie aktualizuje kliknięć dla danego ID kliknięcia, tylko tworzy nowy wiersz z takim samym ID i kliknięciem jednym.

Oto kod:
  1. <?php
  2.  
  3. $id=$_GET["id"];
  4. if ($id) {
  5. $baza = mysql_connect("localhost", "root", "haslo");
  6. mysql_select_db("db",$baza);
  7. $wynik=mysql_query("SELECT link FROM linki WHERE id='$id'");
  8. if (mysql_num_rows($wynik)>0) {
  9. $link = mysql_fetch_row($wynik);
  10. $wynik=mysql_query("SELECT * FROM kliki
  11. WHERE id='$id' and data=NOW()");
  12. if (mysql_num_rows($wynik)==0) {
  13. mysql_query("INSERT INTO kliki (id, licznik, data)
  14. VALUES($id, licznik+1, NOW())");
  15. } else {
  16. mysql_query("UPDATE kliki SET licznik=licznik+1
  17. WHERE id=$id and data=NOW()");
  18. }
  19. }
  20. mysql_close($baza);
  21. }
  22. if ($link[0]<>"") {
  23. header("location: $link[0]");
  24. } else {
  25. header("location: index.php");
  26. }
  27. ?>


a index.php gdzie mam link zliczający no i wartość wyswietlaną wygląda tak:
  1. <a href="go.php?id=2" target="_blank">skocz do porad</a> <!-- link naliczający -->
  2.  
  3. <?php
  4. $db = new connectDB();
  5. $db->db_connection();
  6.  
  7. $select_klik = mysql_query("SELECT licznik FROM kliki WHERE id=2");
  8.  
  9. $kliki = mysql_fetch_assoc($select_klik);
  10.  
  11. echo' '.$kliki['licznik'].' ';
  12. ?>


Pozdrawiam
nospor
$wynik=mysql_query("SELECT * FROM kliki
WHERE id='$id' and data=NOW()");
Trudno, żeby istaniał rekord z danym ID i godziną która właśnie dopiero co nastąpiła.
kropamk
Faktycznie, masz racje.

Jak już się pytam to jeszcze interesuje mnie możliwość kliknięcie tylko raz przez danego użytkownika. Jak wprowadzić taki limit?
synec
  1. mysql_query("UPDATE kliki SET licznik=licznik+1
  2. WHERE id=$id and data=NOW()");

To też może nie udać Ci się wykonać. Musisz zmienić koncepcję z tą datą, albo podstawić ją pod zmienną i używać zmiennej.

Cytat(kropamk @ 7.12.2011, 10:06:33 ) *
Faktycznie, masz racje.

Jak już się pytam to jeszcze interesuje mnie możliwość kliknięcie tylko raz przez danego użytkownika. Jak wprowadzić taki limit?

A użytkownik który klika musi być zalogowany czy może to zrobić dowolna osoba?
kropamk
Tylko dla zalogowanych jest możliwość "polubienie".
synec
Cytat(kropamk @ 7.12.2011, 10:26:48 ) *
Tylko dla zalogowanych jest możliwość "polubienie".

No to jeżeli masz tabelę w której będziesz przetrzymywał ID użytkownika i ID artykuły/obrazka co tam masz, którego on ma lubić. Następnie po kliknięciu przez usera sprawdzasz w tej tabeli czy już jego ID istnieje dla tego artykułu, jeżeli nie istnieje to dodajesz do tej tabeli nowy wpis, jeżeli istnieje to wyświetlasz że już to lubi.
kropamk
Czy mogę to zrobić w taki sposób ?

  1. <?php
  2. $username = $_GET['User_Id']);
  3. $baza = mysql_connect("localhost", "root", "haslo");
  4. mysql_select_db("db",$baza);
  5.  
  6. if ($username) {
  7.  
  8. $duplicate = mysql_query("SELECT * FROM users_klik WHERE User_Id='$username' ");
  9. $num_rows = mysql_num_rows($duplicate);
  10. // SPRAWDZA CZY UŻYTKOWNIK JUŻ "POLUBIŁ"
  11. if ($num_rows){
  12. echo '<div id="message">Już lubisz to.</div>';
  13. }
  14. mysql_close($baza);
  15. }
  16.  
  17. $id=$_GET["Klik_Id"];
  18.  
  19. if ($id) {
  20. $baza = mysql_connect("localhost", "root", "haslo");
  21. mysql_select_db("db",$baza);
  22.  
  23.  
  24.  
  25. $wynik=mysql_query("SELECT link FROM linki WHERE Klik_Id='$id'");
  26. if (mysql_num_rows($wynik)>0) {
  27. $link = mysql_fetch_row($wynik);
  28. $wynik=mysql_query("SELECT * FROM kliki
  29. WHERE Klik_Id='$id'");
  30. if (mysql_num_rows($wynik)==0) {
  31. mysql_query("INSERT INTO kliki (Klik_Id, licznik, data)
  32. VALUES($id, licznik+1)");
  33. } else {
  34. mysql_query("UPDATE kliki SET licznik=licznik+1
  35. WHERE Klik_Id=$id");
  36. }
  37. }
  38. mysql_close($baza);
  39. }
  40. if ($link[0]<>"") {
  41. header("location: $link[0]");
  42. } else {
  43. header("location: index.php");
  44. }
  45. ?>
  46.  


Moje table to
Klik (Klik_Id , data , licznik) oraz users_klik (User_klik_Id , User_Id , Klik_Id) oraz users(User_Id , Login , Password , Mail)

synec
Cytat
Klik (Klik_Id , data , licznik) oraz users_klik (User_klik_Id , User_Id , Klik_Id) oraz users(User_Id , Login , Password , Mail)

A nie da rady zrobić tak?
users_klik ( User_Id , Klik_Id, data) oraz users(User_Id , Login , Password , Mail)
kropamk
Mogą być i takie tabele. Teraz tylko jak to zrobić? Tak jak wyżej napisałem ? Tylko nie wiem jak sprawdzić kto jest zalogowany. Po prostu potrzebuje wskazówki smile.gif
synec
Cytat
Tylko nie wiem jak sprawdzić kto jest zalogowany.

O chłopie....
A tak w ogóle to logujesz już użytkowników?
kropamk
hehe ok przesadziłem, wiem jak to rozwiązać. Jak już zrobię dam znać chociaż mam nadzieję, że nie pojawią mi się żadne błędy. Ok zabieram się do pracy smile.gif

Temat do zamknięcia, udało się i wszystko działa wink.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.