Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php + mysql] licznik.... czemu nie działa ? [BŁĘDY POPRAWIONE - DZIAŁA]
Ermes
post
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 14.10.2006

Ostrzeżenie: (0%)
-----


JUŻ NIE AKTUALNE POPRAWNY KOD NA DOLE STRONY

Chciałbym żeby ktoś to obejrzał i spróbował mi wyjaśnić czemu to nie chce działac :/
Ten skrypt miał zliczać odwiedziny ludzi, ale dodatkowo miał zapamiętywać po ip kto odwiedził stronę i nie zliczac jego dalszych poczynań (np. odświerzanie strony co minuta) przez następne 24h (żeby nie wychodziły kosmiczne liczby odwiedzin) no i jak wsadziłem to na serwer okazło się że pokazuje tylko 1 i nic wiecej... a kilku lidzi odwiedziło stronę
powiem jeszcze, żeby nie było niejasności, że skrypt poprawnie stworzył bazę i tabele, ale już nie chciał odawać niczego tak jak by mu się coś urwało przy insertownaiu... (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) HELP!
  1. <?
  2. //****************** połączenie z bazą
  3. $sql_connect = mysql_connect(localhost, 'admin', 'x*x*x*x*x');
  4. if ($sql_connect) {
  5. $sql_select = mysql_query('USE odwiedziny');
  6. if (!$sql_select) {
  7. //***************** jeśli nie ma takiej bazy to niech ją utworzy  
  8. $sql_create = mysql_query('CREATE DATABASE odwiedziny');
  9. $sql_select = mysql_query('USE odwiedziny');
  10. //***************** zaznaczenie bazy, stworzenie tabel i wpisanie rekordu z 0 w li
    czniki
  11. $sql_create_table = mysql_query('CREATE TABLE liczniki (id char(1) NOT NULL, ilosc char(6), PRIMARY KEY(id))');
  12. $sql_create_table = mysql_query('CREATE TABLE ip_time (id char(1) NOT NULL, ip char(15), time char(10), PRIMARY KEY(id))');
  13. $sql_query = mysql_query('INSERT INTO liczniki VALUES (1, 0)');
  14. $sql_query = mysql_query('INSERT INTO liczniki VALUES (2, 0)');
  15. }
  16. }
  17. //***************** odczytanie wszystkich ip jakie otwierały stronę i zliczenie il
    e ich było
  18. $sql_query = mysql_query('SELECT ip FROM ip_time');
  19. $num_rows = mysql_num_rows($sql_query);
  20. //****************** 1 sytuacja
  21. //***************** jeśli nie było jeszcze żadnego to ustawnienie licznika na 1 i 
    zapisanie w bazie 
  22. //***************** dodatkowo zapisanie numeru id, godziny i ip który otworzył str
    onę
  23. if ($num_rows == 0) {
  24. $num_rows++;
  25. $licznik = 1;
  26. $sql_query = mysql_query('UPDATE liczniki SET ilosc=1 WHERE id=1');
  27. $ip = $_SERVER['REMOTE_ADDR'];
  28. $time = time();
  29. $sql_query = mysql_query('INSERT INTO ip_time VALUES ('.$num_rows.', '.$ip.', '.$time.'');
  30. //***************** wyświetlenie wartosci licznika
  31. echo $licznik;
  32. }
  33. //***************** 2 sytuacja
  34. //***************** jeśli było już kilka ip które otworzyły stronę to sprawdza czy
     takie ip juz nie wystapiło w bazie
  35. else {
  36. $ip = $_SERVER['REMOTE_ADDR'];
  37. $time = time();
  38. $sql_query = mysql_query('SELECT time FROM ip_time WHERE ip='.$ip.'');
  39. if ($sql_query == '') {
  40. //***************** jesli nie wystapiło za zapisuje ip godzine i numer id i zwieks
    za licznik
  41. $num_rows++;
  42. $sql_query = mysql_query('INSERT INTO ip_time VALUES ('.$num_rows.', '.$ip.', '.$time.')');
  43. $sql_query = mysql_query('SELECT ilosc FROM liczniki WHERE id=1');
  44. $licznik = mysql_fetch_assoc($sql_query);
  45. $licznik++;
  46. $sql_query = mysql_query('UPDATE liczniki SET ilosc='.$licznik.' WHERE id=1');
  47. echo $licznik;
  48. }
  49. //************** 3 sytuacja
  50. //************** jeśli jednak wystąpiło to sprawdza godzinę przi danym ip i porówn
    uje czy minęło już 24h od otwarcia strony
  51. else {
  52. $ip_time = mysql_fetch_assoc($sql_query);
  53. $ip_time['time'] = $ip_time['time']+86400;
  54. //*************** jak minęło 24h to odnawia godzinę przy ip i zwiększa licznik
  55. if ($ip_time['time'] < $time) {
  56. $num_rows++;
  57. $sql_query = mysql_query('UPDATE ip_time SET time='.$time.' WHERE ip='.$ip.'');
  58. $sql_query = mysql_query('SELECT ilosc FROM liczniki WHERE id=1');
  59. $licznik = $sql_query;
  60. $licznik++;
  61. $sql_query = mysql_query('UPDATE liczniki SET ilosc='.$licznik.' WHERE id=1');
  62. echo $licznik;
  63. }
  64. //***************** jeśli nie minęło 24h to poprostu odczytuje licznik
  65. else {
  66. $sql_query = mysql_query('SELECT ilosc FROM liczniki WHERE id=1');
  67. $licznik = mysql_fetch_assoc($sql_query);
  68. echo $licznik;
  69. }
  70. }
  71. }
  72. //****************** zamyka połączenie
  73.  mysql_close($sql_connect);
  74. ?>


z tymi komentarzami chyba da się nieco zrozumiec ?

Ten post edytował Ermes 9.02.2007, 23:51:00
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 10:46