Jak zrobić licznik pobrań plików ze strony.doc

(39 KB) Pobierz
[MySQL][PHP] Jak zrobić licznik pobrań plików ze strony

[MySQL][PHP] Jak zrobić licznik pobrań plików ze strony?

Problem

Chcesz stworzyć skrypt, który zliczy ile razy użytkownicy pobrali określony plik z Twojego serwisu lub sekcji download.

Rozwiązanie

Jeżeli prowadzisz serwis udostępniający użytkownikom pliki do pobrania, z pewnością przyda Ci się skrypt, który policzy ile razy poszczególne pliki zostały pobrane.

Mając takie informacje możesz stworzyć ranking najpopularniejszych plików w serwisie i ułożyć je według popularności, aby najczęściej pobierane były na samym początku listy. Zobacz jak to osiągnąć.

Zakładanie bazy i tabeli

Jeżeli nie masz utworzonej bazy danych w MySQL, możesz ją założyć wykonując poniższy skrypt. Zakłada on bazę danych o nazwie baza1. Wystarczy, że skrypt użyjesz raz, potem nie będzie już potrzebny.

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

  $wynik = mysql_query("CREATE DATABASE baza1",$baza);

  if ($wynik) echo "Baza została stworzona";

  mysql_close($baza);

}

?>

Jeżeli masz już założoną bazę danych, czas aby założyć tabelę o nazwie kliki, w której znajdą się liczniki kliknięć dla poszczególnych plików.

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

  $wynik = mysql_select_db("baza1",$baza);

  if ($wynik) {

    $wynik = mysql_query("CREATE TABLE kliki (

      id int not null primary key,

      nazwa char(100) not null unique,

      licznik int not null default '0'

    )", $baza);

    if ($wynik) echo "Tabela została stworzona";

  }

  mysql_close($baza);

}

?>

Wystarczy, że użyjesz skryptu tylko raz, potem nie będzie już potrzebny. Szerszy opis zakładania baz danych i tabel znajdziesz w osobnych poradach. Jeżeli masz już bazę o innej nazwie musisz w pozostałych skryptach zmienić nazwę baza1 na własną.

Mamy już stworzoną tabelę przechowującą unikalny numer pliku id (liczba całkowita), który nie może się powtarzać, jego nazwę nazwa (do 100 znaków), która również jest unikalna i nie może być pusta oraz pole licznik dla każdego z plików, który nie może być pusty (domyślna wartość to zero).

Zarządzanie plikami

Aby do tabeli dodać pliki, które znajdą się w serwisie i będą miały zliczane kliknięcia, posłuż się następującym skryptem:

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

  $wynik = mysql_select_db("baza1",$baza);

  if ($wynik) {

    mysql_query("INSERT INTO kliki VALUES (1,'plik1.zip',0)", $baza);

    mysql_query("INSERT INTO kliki VALUES (2,'plik2.exe',0)", $baza);

    mysql_query("INSERT INTO kliki VALUES (3,'plik3.jpg',100)", $baza);

// mysql_query("DELETE FROM kliki WHERE id=3", $baza);

// mysql_query("UPDATE kliki SET nazwa='nowanazwa.exe' WHERE id=3", $baza);

  }

  mysql_close($baza);

}

?>

Polecenie języka SQL o nazwie INSERT INTO nazwaTabeli umieszcza nowy rekord w tabeli o wartościach podanych za poleceniem VALUES. Pierwsze pole to unikalne numery id pliku, drugie to dokładna nazwa pliku (identyczna jak nazwa na dysku, z rozróżnieniem na małe i duże litery), trzeci parametr to licznik, mający wartość 0.

Możesz podać od razu inną wartość licznika. W przykładzie plik o numerze 3 ma licznik od razu ustawiony na 100, bo zakładam, że wcześniej plik został pobrany już 100 razy i nie chcę zaczynać liczenia od zera.

Jeżeli chcesz skasować z listy jakiś plik usuń komentarz z polecenia DELETE FROM, który kasuje z tabeli plik o określonym numerze id. Polecenie UPDATE pozwala zmienić nazwę pliku, gdyby trzeba było tego dokonać.

Powyższy skrypt wykonuj tylko wtedy, gdy chcesz dodać, zmienić lub kasować listę plików. W innych wypadkach nie będzie potrzebny.

Wyświetlanie plików i liczników na stronie

Poniższy skrypt umieść w pliku index.php, w miejscu, gdzie chcesz udostępnić pliki do pobrania. Wyświetla on na stronie nazwy plików i linki do nich, a obok pokazuje ile razy poszczególne pliki zostały pobrane.

<?

$baza = mysql_connect("localhost", "user", "password");

if ($baza) {

  $wynik = mysql_select_db("baza1",$baza);

  if ($wynik) {

    $sql="SELECT * FROM kliki ORDER BY licznik DESC";

    $wynik = mysql_query($sql,$baza);

    mysql_close($baza);

    for ($i=0;$i<mysql_num_rows($wynik);$i++) {

      list($bid, $bnazwa, $blicznik) = mysql_fetch_row($wynik);

      echo "<br>- <a href=\"pobierz.php?id=$bid\">$bnazwa</a> [$blicznik]";

    }

  } else { echo "Wybranie bazy danych nie było możliwe..."; }

} else { echo "Połączenie do MySQL nie było możliwe..."; }

...

Zgłoś jeśli naruszono regulamin