• Ogłoszenie:

Php - mysql - ilość osób na stronie

Poradniki związane z tworzeniem i prowadzeniem stron www.

Php - mysql - ilość osób na stronie

Postprzez Bialko0019 10 Paź 2009, 14:26

reklama
Witam.

Dzisiaj chciałbym omówić skrypt, który ma za zadanie wyświetlać aktualnie z ostatnich 60 sekund ilość osób oglądających stronę.

Pierwszym krokiem jest utworzenie tabeli o kolumnach ip oraz czas .

Przykładowe zapytanie :
Kod: Zaznacz wszystko
CREATE TABLE "online"( 
"czas" int(11), 
"ip" varchar(32) 
);


Tak więc na początku łączymy się z bazą danych poprzez funkcję mysql_connect() wpisując:
- adres bazy danych, np. sql.onet.pl ,
- użytkownika,
- oraz hasło .

Później wybieramy, z której bazy chcemy korzystać, funkcją mysql_select_db().

Ustawiamy limit ( w jakim odstępie czasu chcemy sprawdzać, czy użytkownik nadal przebywa na stronie ) oraz zapisujemy ip użytkownika
Kod: Zaznacz wszystko
$ip_aktualny = $_SERVER['REMOTE_ADDR'];
$czas_aktualny = time();
$czas_sprawdzany = time()-60;


Następnie tworzymy zapytanie, które kontroluje, by jedna osoba nie była naliczana kilka razy. Wygląda ono tak : ( jeżeli dana osoba jest pierwszy raz na stronie, tworzy nowy rekord, jeżeli była już w ciągu ustalonego limitu nie dodaje nic. Limit czasu mija i tworzy dalej nowy rekord)

Kod: Zaznacz wszystko
$zapytanie = "SELECT * FROM online WHERE czas BETWEEN $czas_sprawdzany AND $czas_aktualny AND ip LIKE '$ip_aktualny'";
$query = mysql_query($zapytanie);
$czy = mysql_num_rows($query);

if($czy <= 0)
{

$zapytanie1 = "INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny'";
$query1 = mysql_query($zapytanie1);

}


Ta opisana część zapisuje, ewentualnie uaktualnia statystyki.

Teraz wyświetlamy zapytaniem ile osób był z ostatnich 60 sekund

Kod: Zaznacz wszystko
$zapytanie2 = "SELECT * FROM online WHERE czas > $czas_sprawdzany AND czas < $czas_aktualny";
$query2 = mysql_query($zapytanie2);
$ile = mysql_num_rows($query2);


Zmienna $ile wyświetlany naszą liczbę aktualnie podłączonych* użytkowników do strony, na której jest skrypt.



Oczywiście można jeszcze udoskonalać skrypt dowolnie, według własnych wymagań.

* - skrypt pokazuje ilość osób, które w ciągu ostatnich 60 sekund wykonały jakiś ruch na stronie. Takim sposobem najczęściej sprawdza się ile osób było lub jest na stronie w ciągu 60 sekund.

A całość, która zapisuje i wyświetla ( najlepiej by skrypt był zaincludowany do każdej podstrony ) dane :

Kod: Zaznacz wszystko
<?php

$polaczenie = mysql_connect('adres_bazy_dancyh', 'uzytkownik', 'haslo');
$db = mysql_select_db('baza_danych');
$ip_aktualny = $_SERVER['REMOTE_ADDR'];

$czas_aktualny = time();
$czas_sprawdzany = time()-60;

$zapytanie = "SELECT * FROM online WHERE czas BETWEEN $czas_sprawdzany AND $czas_aktualny AND ip LIKE '$ip_aktualny'";
$query = mysql_query($zapytanie);
$czy = mysql_num_rows($query);


if($czy <= 0)
{

$zapytanie1 = "INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny'";
$query1 = mysql_query($zapytanie1);

}


$zapytanie2 = "SELECT * FROM online WHERE czas > $czas_sprawdzany AND czas < $czas_aktualny";
$query2 = mysql_query($zapytanie2);
$ile = mysql_num_rows($query2);

echo $ile;







?>




Pochwały przyznane za posta: 6
Awatar użytkownika
Bialko0019
 
Posty: 739
Dołączenie: 10 Lut 2007, 22:47
Miejscowość: Radom
Pochwały: 36



Powróć do Tworzenie stron www

Kto jest na forum

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 0 gości