I chciałem zrobić licznik, zwykły prosty licznik pobrań. Męczę się już chyba 5 godzinę z tym i nie ma rozwiązania. Wywala mi taki błąd:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxxxxxx/public_html/forum/downloads/download.php on line 35
W bazie danych mam 'download'>'nazwapliku' i drugie pole 'iloscpobran'. Wszystko wg linka wyżej.
Szukałem na forum, w google, nawet gadałem z gościem, który miał podobny problem na gg i nie ma rozwiązania. Panowie pomóżcie, bo strace 5h czasu, a to mnie zmartwi bardziej, niż ten je***y licznik.
Jako, że jestem laikiem, proszę o specjalne nie bluzganie i itp.
download.php
<?php //... $plik = $_GET['plik']; //pobiera nazwę pliku, który użytkownik chce pobrać $baza_ip = 'localhost'; //adres bazy danych (najlepiej aby był to localhost) $baza_uzytkownik = 'iiiiiiiiiiiiiiw'; //nazwa użytkownika bazy $baza_haslo = 'ciiiiiiiiiiiiizV'; //hasło dla danego użytkownika bazy $baza = 'tiiii_im'; //nazwa bazy glównej $baza_zrodlo = 'download'; //tabela, w której są zapisywane wpisy o ilości pobrań $folder_z_plikami = 'b871/'; //tutaj będą znajdować się pliki do pobrania //... //.... if ($plik != '') //sprawdzam czy zmienna plik jest pusta, jeżeli jest pusta nie wywołuję dalej kodu tylko informuję o błędzie. { { print "Podany plik: $plik nie istnieje"; //jeżeli plik nie istnieje to nie wykonuję dalszych operacji tylko wyświetlam informację o błedzie } else { /* Powyższym kodem łączę się z bazą danych mySQL korzystając ze stałych zdefiniowanych na początku skryptu. Znak małpy przed zmienną $db konieczny jest ze względu na możliwość wystąpienia błędu, który jeżeli i tak zaistnieje to i tak zostanie znaleziony za chwilę. */ if ($db) //sprawdzam czy zostaliśmy połączeni z bazą { //Jeżeli tak wykonujemy poniższe czynności $result = mysql_query("SELECT * FROM $baza_zrodlo WHERE nazwapliku='$plik'"); //sprawdzam czy w tabeli $baza_zrodlo istnieje nazwa naszego pliku if($num >= 1) //jeżeli występuje jeden plik, lub więcej o tej nazwie to... { $ile = IleRazyPobrano($plik, $baza, $baza_zrodlo); //...poberam do zmiennej $ile ilość pobrań danego pliku <- w tym miejscy korzystam ze skryptu "pobrano.php" $nowy = $ile+1; // dodaję jedno pobranie //Tutaj rozpoczyna się już właściwie pobieranie pliku //koniec części odpowieadającej za pobieranie mysql_query("update $baza_zrodlo set iloscpobran=$nowy where nazwapliku='$plik'"); //wysyłam do bazy prośbę o uaktualnienie wpisu ilości pobrań } else // jeżeli nie znaleziono pliku w tabeli o tej nazwie to... { mysql_query("insert into $baza_zrodlo values ('$plik', 1)"); //wysyłamy prośbę o dodanie pliku z wartością 1 ściągnięcia //Poniższe wysyłanie jest identyczne jak w przypadku powyższym //koniec wysyłania } } else { print "Błąd: Nie mogę połączyć się z bazą danych"; //jeżeli nie można połączyć się z bazą mySQL wyświetl komunikat o błędzie } } } else { } ?>
W tym pliku nie wyświetla się "test2", tak jakby tam się zacinał czy coś. No i nie ma co mówić o wywołaniu pliku do pobrania, bo nic się nie dzieje po prostu.
I plik pobrano.php
<?php function IleRazyPobrano($plik, $baza, $baza_zrodlo) { $ilerazy = mysql_query("SELECT iloscpobran FROM $baza_zrodlo WHERE nazwapliku = '$plik'"); //wysyłam zapytanie do bazy o liczbę ściągnięć $wynik = mysql_fetch_row($ilerazy); //pobieram wynik w komórki, którą otrzymałem w zmiennej $ilerazy return $wynik[0]; //zwracam pierwszy wynik ponieważ zmienna $wynik jest typu array } ?>