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!
<?
//****************** połączenie z bazą
if ($sql_connect) {
if (!$sql_select) {
//***************** jeśli nie ma takiej bazy to niech ją utworzy
$sql_create = mysql_query('CREATE DATABASE odwiedziny'); //***************** zaznaczenie bazy, stworzenie tabel i wpisanie rekordu z 0 w li
czniki
$sql_create_table = mysql_query('CREATE TABLE liczniki (id char(1) NOT NULL, ilosc char(6), PRIMARY KEY(id))'); $sql_create_table = mysql_query('CREATE TABLE ip_time (id char(1) NOT NULL, ip char(15), time char(10), PRIMARY KEY(id))'); $sql_query = mysql_query('INSERT INTO liczniki VALUES (1, 0)'); $sql_query = mysql_query('INSERT INTO liczniki VALUES (2, 0)'); }
}
//***************** odczytanie wszystkich ip jakie otwierały stronę i zliczenie il
e ich było
//****************** 1 sytuacja
//***************** jeśli nie było jeszcze żadnego to ustawnienie licznika na 1 i
zapisanie w bazie
//***************** dodatkowo zapisanie numeru id, godziny i ip który otworzył str
onę
if ($num_rows == 0) {
$num_rows++;
$licznik = 1;
$sql_query = mysql_query('UPDATE liczniki SET ilosc=1 WHERE id=1'); $ip = $_SERVER['REMOTE_ADDR'];
$sql_query = mysql_query('INSERT INTO ip_time VALUES ('.$num_rows.', '.$ip.', '.$time.''); //***************** wyświetlenie wartosci licznika
}
//***************** 2 sytuacja
//***************** jeśli było już kilka ip które otworzyły stronę to sprawdza czy
takie ip juz nie wystapiło w bazie
else {
$ip = $_SERVER['REMOTE_ADDR'];
$sql_query = mysql_query('SELECT time FROM ip_time WHERE ip='.$ip.''); if ($sql_query == '') {
//***************** jesli nie wystapiło za zapisuje ip godzine i numer id i zwieks
za licznik
$num_rows++;
$sql_query = mysql_query('INSERT INTO ip_time VALUES ('.$num_rows.', '.$ip.', '.$time.')'); $sql_query = mysql_query('SELECT ilosc FROM liczniki WHERE id=1'); $licznik++;
$sql_query = mysql_query('UPDATE liczniki SET ilosc='.$licznik.' WHERE id=1'); }
//************** 3 sytuacja
//************** jeśli jednak wystąpiło to sprawdza godzinę przi danym ip i porówn
uje czy minęło już 24h od otwarcia strony
else {
$ip_time['time'] = $ip_time['time']+86400;
//*************** jak minęło 24h to odnawia godzinę przy ip i zwiększa licznik
if ($ip_time['time'] < $time) {
$num_rows++;
$sql_query = mysql_query('UPDATE ip_time SET time='.$time.' WHERE ip='.$ip.''); $sql_query = mysql_query('SELECT ilosc FROM liczniki WHERE id=1'); $licznik = $sql_query;
$licznik++;
$sql_query = mysql_query('UPDATE liczniki SET ilosc='.$licznik.' WHERE id=1'); }
//***************** jeśli nie minęło 24h to poprostu odczytuje licznik
else {
$sql_query = mysql_query('SELECT ilosc FROM liczniki WHERE id=1'); }
}
}
//****************** zamyka połączenie
?>
z tymi komentarzami chyba da się nieco zrozumiec ?
Ten post edytował Ermes 9.02.2007, 23:51:00