Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niedziałający licznik ściagnięć
Forum PHP.pl > Forum > Gotowe rozwiązania
panczo
Witam
Ostatnio znalazlem w siecie ciekawy skrypt ktory zlicza ilosc pobran i zapisuje w bazie danych. Sa to 2 pliki - jeden wyswietla linki a drugi zlicza, sciaga i zapisuje powiekszona o 1 liczbe sciagniec.

Baza wyglada tak:

CREATE TABLE `download` (
`plik` TINYINT NOT NULL AUTO_INCREMENT,
`url` TEXT NOT NULL ,
`nazwa` TEXT NOT NULL ,
`licznik` TEXT NOT NULL ,
UNIQUE (
`plik`
)
);

linki.php - plik 1
  1. <?
  2.  
  3. $polacz = mysql_connect ("host", "login", "haslo") or die (mysql_error());;
  4. mysql_select_db ("baza", $polacz) or die (mysql_error());
  5.  
  6. $pliki = mysql_query("SELECT * FROM download");
  7.  
  8. while ($dane = mysql_fetch_array($pliki))
  9.  
  10.  {
  11.  
  12. $nazwa = $dane[nazwa];
  13. $licznik = $dane[licznik];
  14. $plik = $dane[plik];
  15.  
  16. print "Nazwa pliku: $nazwa";
  17. print "<A HREF=sciagnij.php?plik=$plik>Sciagnij</A>";
  18. print "Pobrano: $licznik";
  19.  
  20.  }
  21.  
  22. ?>


sciagnij.php - plik 2
  1. <?
  2. if($plik > 0) { // Nie jest to doskonale, ale wystarczy.
  3.  
  4. $polacz = mysql_connect ("host", "login", "haslo") or die (mysql_error());; // standardowe łączenie z baza
  5. mysql_select_db ("baza", $polacz) or die (mysql_error()); // wybieranie bazy
  6.  
  7.  
  8. $query = "SELECT * FROM download WHERE plik = '$plik';"; // tutaj wybieramy "plik" z tabeli który został podany w nagłówku warunek.
  9.  
  10. $wynik = mysql_query ($query); // wykonanie powyższej linii
  11.  
  12.  $dane = mysql_fetch_array ($wynik);
  13.  $licznik = $dane[licznik];
  14.  $url = $dane[url];
  15. // Przypisanie rekordów do zmiennych.
  16. header("location: $url"); // Ściąga plik z podanego URL.
  17.  
  18. $query = "UPDATE download SET licznik = licznik+1 WHERE plik='$plik';"; // zlicza ściągnięcia
  19.  
  20. $wynik = mysql_query ($query); // wykonuje powyższa linijkę kodu
  21.  
  22.  return $licznik+1;
  23.  
  24. } else { // w przypadku gdy nie ma pliku, lub tez został podany zły argument, skrypt wypisu
    je błąd
  25.  
  26. echo "Błędny link lub brak pliku!";
  27.  
  28. }
  29.  
  30. ?>


Wydaje mi sie ze rozumiem ten skrypt i wiem jak dziala, ale dodalem sobie jeden rekord do bazy. Na 1 pliki sie ladnie wyswietla ale jak klikne w sciagnij to wyskakuje wlasnie blad. Nie wiem w ktorym miejscu jest cos zle napisane, a moze mam cos zle w bazie? Prosze o pomoc.
macza
moim zdaniem wszystko jest ok... podaj jaki blad ci wyskakuje...
panczo
no wyskakuje standardowo to co napisalem "bledny link lub brak pliku". Ale moze zle w bazie wpisalem. Plik mi sie uzupelnia automatycznie liczbami, w url wpisalem sciezke, nazwa to nazwa a w polu licznik dalem 0. Naprawde juz sie poddaje :/
macza
cos mi tu nie pasuje, nie rozumiem zastosowania:
  1. <?php
  2. if($plik > 0) { 
  3. ?>
panczo
w bazie kazdy plik ma swoj numer i gdy w pierwszym pliku chce wybrac jakis link to klikam na niego i sciaga sie url ktore zostaje rozpoznaen wlasnie po numerze pliku w bazie. A To jest tak napisane poniewaz numery w bazie zaczynaja sie od wiekszych od 0 dlatego po kliknieciu skrypt sprawdza czy jest wieksze od 0 jesli tak to przechodzi dalej.
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.