Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Pobieranie Plik
Forum PHP.pl > Forum > Przedszkole
bubaluki
Próbuje napisać kod na pobieranie plikow
  1.  
  2. <?php
  3.  
  4.  
  5. require_once('funkcje_pliki.php');
  6.  
  7. require_once('function.mime-content-type.php');
  8.  
  9. $nazwa_uz = isset($_POST['prawid_uzyt']) ? $_POST['prawid_uzyt']: ' ';
  10.  
  11.  
  12. tworz_naglowek_html('Download Plikow');
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19. $lacz = lacz_bd();
  20.  
  21.  
  22. $wynik = $lacz->query("select * from plik where nazwa_uz='$prawid_uz' and URL_plik='".$plik."'");
  23. if (!$wynik)
  24. {
  25. return false;
  26.  
  27. }
  28.  
  29.  
  30. $plik = $wynik['URL_plik'].$wynik['nazwa_uz'];
  31.  
  32.  
  33.  
  34. $mimetype = mime_content_type($plik);
  35.  
  36. header('Content-type: '.$mimetype);
  37. header('Content-Disposition: attachment; filename="'.$plik.'"');
  38. readfile($plik);
  39.  
  40.  
  41.  
  42.  
  43.  
  44. wyswietl_menu_uzyt();
  45. tworz_stopke_html();
  46.  
  47.  
  48. ?>
  49.  





Fatal error: Cannot use object of type mysqli_result as array in C:\xampp\htdocs\pobierz.php on line 31



i wyskakuje mi błąd i nie mam pojęcia co on oznacza ;/

i nie wiem czy dobrze zadeklarowałem plik tu miało być wartość pobraną z bazy :


$plik = $wynik['URL_plik'].$wynik['nazwa_uz'];

ber32
W zmiennej
  1. $plik
był błąd
  1. query("select * from plik where nazwa_uz='$prawid_uz' and URL_plik='$plik'");

spróbuj teraz
everth
Cytat(bubaluki @ 4.09.2010, 15:02:20 ) *
  1. header('Content-type: '.$mimetype);
  2. header('Content-Disposition: attachment; filename="'.$plik.'"');
  3. readfile($plik);
  4. wyswietl_menu_uzyt(); //co to?
  5. tworz_stopke_html();

Zastanów się dobrze co robisz. Wysyłasz całość pliku o określonym typie do przeglądarki wraz z elementami HTML? Nic z tego nie wyjdzie. W sekcji Download powinieneś umieścić skróty do plików które chcesz pobrać, lub skrót do osobnego pliku php który udostępnia zawartość takiego pliku (i tylko tyle). Tu masz podobny wątek.
mortus
Nie no $lacz->query('ZAPYTANIE') zwraca nam nie dany wiersz, ale obiekt typu mysqli result. Z tego trzeba jeszcze wyciągnąć dane za pomocą ->fetch_array() (lub ->fetch_assoc()).
  1. $wynik = $lacz->query('ZAPYTANIE')->fetch_array(MYSQLI_ASSOC);
W każdym bądź razie tego dotyczy błąd, a czy reszta działa, to się później przekonasz.
bubaluki
ok zrobiłem to ale trochę inaczej ale dzięki za pomoc

zrobiłem to tak :

  1.  
  2.  
  3.  
  4. $sFileName = isset( $_GET[ 'filename' ] ) ? $_GET[ 'filename' ] : '';
  5. $sFileName = str_replace( array( '/', '\\' ), null, $sFileName );
  6. $sPath = __DIR__ . DIRECTORY_SEPARATOR . 'pliki' . DIRECTORY_SEPARATOR . $sFileName;
  7.  
  8.  
  9. $wynik = mysql_query('UPDATE `plik` SET `nazwa_plik`=`nazwa_plik`+1 WHERE `nazwa_uz`='. $_GET['prawid_uz].'') or die
  10.  
  11. ('Błąd zapytania');
  12.  
  13.  
  14.  
  15. if( !is_readable( $sPath ) or !is_file( $sPath ) )
  16. {
  17. echo 'Nie można odczytać pliku';
  18. exit;
  19. }
  20.  
  21.  
  22.  
  23.  
  24. $sMimeType = mime_content_type( $sPath );
  25.  
  26. header('Content-type: '.$sMimeType);
  27. header('Content-Disposition: attachment; filename="'.$sFileName.'"');
  28. readfile($sPath);
  29.  
  30.  



mam jeszcze 1 problem chce zrobić licznie liczby pobrań zrobiłem do tego

  1.  
  2.  
  3.  
  4. $wynik = mysql_query('UPDATE `plik` SET `nazwa_plik`=`nazwa_plik`+1 WHERE `nazwa_uz`='. $_GET['prawid_uz].'') or die
  5.  
  6.  


i wywala mi takie coś:


Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in C:\xampp\htdocs\pobierz.php on line 18
everth
Ech, skrzywdziłeś trochę ten skrypt ale niech ci będzie
  1. $pass = mysql_real_escape_string($_GET['prawid_uz]);
  2. $wynik = mysql_query("UPDATE `plik` SET `nazwa_plik`=`nazwa_plik`+1 WHERE `nazwa_uz`='{$pass}'") or die
bubaluki
czemu skrzywdziłem ?

nom teraz mi wywalilo cos takiego jak dodałem to co podałeś :


Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\pobierz.php on line 18

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\xampp\htdocs\pobierz.php on line 18

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\pobierz.php on line 19

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\pobierz.php on line 19
Błšd zapytania
everth
Pogubiłem się. Ty używasz tutaj MySQLi czy zwyczajnego MySQL? Bo w pierwszym skrypcie stosujesz chyba to pierwsze a teraz to drugie.
bubaluki
mysql
everth
A łączysz się w ogóle z bazą?
bubaluki
tak
ale jeszcze coś zmienię zaraz zapodam kod

  1.  
  2. <?php
  3.  
  4.  
  5. require_once('funkcje_pliki.php');
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14. $sFileName = isset( $_GET[ 'filename' ] ) ? $_GET[ 'filename' ] : '';
  15. $sFileName = str_replace( array( '/', '\\' ), null, $sFileName );
  16. $sPath = __DIR__ . DIRECTORY_SEPARATOR . 'pliki' . DIRECTORY_SEPARATOR . $sFileName;
  17.  
  18.  
  19. $lacz = lacz_bd();
  20.  
  21. $pass = mysql_real_escape_string($_GET['prawid_uz']);
  22.  
  23.  
  24.  
  25.  
  26. $wynik = $lacz->mysql_query('UPDATE `plik` SET `nazwa_plik`=`nazwa_plik`+1 WHERE `nazwa_uz`='. $_GET['prawid_uz'].'')
  27.  
  28. or die('Błąd zapytania');
  29.  
  30.  
  31.  
  32. if( !is_readable( $sPath ) or !is_file( $sPath ) )
  33. {
  34. echo 'Nie można odczytać pliku';
  35. }
  36.  
  37.  
  38.  
  39.  
  40. $sMimeType = mime_content_type( $sPath );
  41.  
  42. header('Content-type: '.$sMimeType);
  43. header('Content-Disposition: attachment; filename="'.$sFileName.'"');
  44. readfile($sPath);
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51. ?>


ale jest błąd składni;/

Fatal error: Call to undefined method mysqli::mysql_query() in C:\xampp\htdocs\pobierz.php on line 25
everth
Teraz to już mieszasz całkowicie - jak wygląda funkcja lacz_db()
bubaluki
  1.  
  2. <?php
  3.  
  4. function lacz_bd() {
  5. $wynik = new mysqli('localhost', 'uzyt_pli', 'haslo', 'plik');
  6. if (!$wynik) {
  7. throw new Exception('Połączenie z serwerem bazy danych nie powiodło się');
  8. } else {
  9. return $wynik;
  10. }
  11. }
  12.  
  13. ?>

ale już znalazłem błąd

[ tak ejst jednak dobrze miałem jedna zmienna nie zmieniana ;/

i dlatego nie łączyło z baza

take teraz kod wyglada:

  1.  
  2. <?php
  3. $sFileName = isset( $_GET[ 'filename' ] ) ? $_GET[ 'filename' ] : '';
  4. $sFileName = str_replace( array( '/', '\\' ), null, $sFileName );
  5. $sPath = __DIR__ . DIRECTORY_SEPARATOR . 'pliki' . DIRECTORY_SEPARATOR . $sFileName;
  6.  
  7. if( !is_readable( $sPath ) or !is_file( $sPath ) )
  8. {
  9. echo 'Nie można odczytać pliku';
  10. }
  11.  
  12. $sMimeType = mime_content_type( $sPath );
  13.  
  14. header('Content-type: '.$sMimeType);
  15. header('Content-Disposition: attachment; filename="'.$sFileName.'"');
  16. readfile($sPath);
  17.  
  18.  
  19.  
  20. // Zlicznie liczby pobrań
  21.  
  22.  
  23.  
  24. $pass = mysql_real_escape_string($_GET['prawid_uz']);
  25.  
  26.  
  27. $wynik = mysql_query("UPDATE `plik` SET `nazwa_plik`=`nazwa_plik`+1 WHERE `nazwa_uz`='{$pass}'") or die ('Błąd zapytania');
  28.  
  29.  
  30.  
  31.  
  32.  
  33. ?>



tak che wyświetlić :

ale nie wyświetla ^^ ;/
  1. echo '<td>Pliki Pobrano: </td><td>'.$wynik['nazwa_plik'].'</td>';
  2.  
AdIoS_Neo
Co Ty chcesz wyświetlić ? Z tego co widzę zmienna $wynik będzie przechowywała albo true albo false czy tam wynik pusty w zależności czy udało się zapisać dane do bazy czy nie ...
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.