Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przesylanie danych do bazy i wyswietlenie ich na stronie
Forum PHP.pl > Forum > Przedszkole
bubaluki
chciałem zrobić u siebie w projekcie dodawanie pliku i udało mi się napisać funkcje :

  1. <?php
  2.  
  3.  
  4. require_once('funkcje_pliki.php');
  5.  
  6.  
  7.  
  8.  
  9. function dodaj_plik($nowy_plik) {
  10.  
  11.  
  12.  
  13. echo "Próba dodania ".htmlspecialchars($nowy_plik)."<br />";
  14. $prawid_uzyt = $_SESSION['prawid_uzyt'];
  15.  
  16. $lacz = lacz_bd();
  17.  
  18.  
  19.  
  20.  
  21. $wynik = $lacz->query("select * from plik where nazwa_uz='$prawid_uz' and URL_plik='".$nowy_plik."'");
  22.  
  23.  
  24. if ($wynik && ($wynik->num_rows>0)) {
  25. throw new Exception('Plik już istnieje.');
  26. }
  27.  
  28.  
  29. if (!$lacz->query("insert into plik values
  30. ('".$prawid_uzyt."', '".$nowy_plik."')")) {
  31. throw new Exception('Wstawienie nowego pliku nie powiodło się');
  32. }
  33.  
  34. return true;
  35. }
  36. ?>
  37.  
  38.  

Projekt mam tak zrobiony ze to co mi się wyświetla na stronie mam w pliku funkcje_wyswietl.php

tam fragment kodu wygląda następująco:

  1.  
  2. <?php
  3. }
  4.  
  5.  
  6. function wyswietl_dodaj_plik_form() {
  7. ?>
  8.  
  9. <br />
  10. <form action="plik2.php" method="POST" ENCTYPE="multipart/form-data">
  11. <input type="file" name="plik"/>
  12. <input type="submit" value="Wyslij plik"/>
  13. </form>
  14.  
  15. <?php


a plik który robi dodawanie pliku to plik1.php:

  1.  
  2. <?php
  3.  
  4.  
  5. require_once('funkcje_pliki.php');
  6.  
  7. $max_rozmiar = 1024*1024;
  8.  
  9.  
  10. tworz_naglowek_html('Dodawanie Plikow');
  11.  
  12. try {
  13. sprawdz_prawid_uzyt();
  14. if (!wypelniony($_POST)) {
  15. throw new Exception('Formularz wypełniony niewłaściwie. Proszę spróbować ponownie.');
  16. }
  17.  
  18.  
  19. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  20. if ($_FILES['plik']['size'] > $max_rozmiar) {
  21. echo 'Błąd! Plik jest za duży!';
  22. } else {
  23. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
  24. echo '<br/>';
  25. if (isset($_FILES['plik']['type'])) {
  26. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  27. }
  28. move_uploaded_file($_FILES['plik']['tmp_name'],
  29. $_SERVER['DOCUMENT_ROOT'].'/pliki/'.$_FILES['plik']['name']);
  30.  
  31.  
  32. }
  33. } else {
  34. echo 'Błąd przy przesyłaniu danych!';
  35. }
  36.  
  37. if ($tablica_plik = pobierz_plik_uzyt($_SESSION['prawid_uzyt'])) {
  38. wyswietl_plik_uzyt($tablica_plik);
  39. }
  40. }
  41. catch (Exception $e) {
  42. echo $e->getMessage();
  43. }
  44. wyswietl_menu_uzyt();
  45. tworz_stopke_html();
  46. ?>


wszystko fajnie ale nie plik nie chce mi dodawać wpisów do bazy;/
Myślę ze wszystko dobrze zrobiłem bo nie wywala mi żadnego błędu i dodaje plik ale nie dodaje wpisu do bazy ma ktos jakis pomysl co mzoe byc zle?
nospor
stworzyłes funkcję dodaj_plik() ale nigdzie nie widzę byś jej użył....

ps: przez pewien czas weź pisze w dziale przedszkole. przenosze
bubaluki
Znaczy tak wyczytałem ze za pomocą Instrukcji " require_once() służy do wczytania i wykonania kodu z określonego pliku w trakcie wykonywania skryptu"
wiec zrobiłem tak ze funkcje zapisałem w pliku funkcje_plik.php

a zrobiłem jeszcze plik :
funkcje_pliki.php i tu zawarłem ta funkcje :
  1. <?php
  2. // plik ten dołacze do wszystkich plikow bedzie on zawieral wszystkie funkcje.
  3.  
  4.  
  5. require_once('funkcje_wyswietl.php');
  6. require_once('funkcje_bazy.php');
  7. require_once('funkcje_prawid_dane.php');
  8. require_once('funkcje_uwierz.php');
  9. require_once('funkcje_plik.php');
  10.  
  11. ?>


a na początku plik2.php czyli pliku wykonującego dodanie dodalem na poczatku :
  1. <?php
  2.  
  3.  
  4. require_once('funkcje_plik.php')


I nie wiem czy wystarczy takie dodanie czy muszę to jeszcze jakoś inaczej w kodzie przedstawić ?
nospor
require słuzy do wczytania pliku php. Jesli plik php zawiera deklaracje funkcji to deklaracje te zostaną wykonane. Jesli jednak chcesz uzyc funkcję, to nie zależnie czy masz ją bezposrednio w pliku głównym czy w require to musisz ją wywołać, czyli np. masz miec:
  1. dodaj_plik();

Zapoznaj się proszę z podstawami obsługi funkcji. Deklaracja funkcji a jej wywołanie to dwie różne rzeczy, których póki co nie rozumiesz.
bubaluki
ok dodałem to chodzi teraz widać ze jest próba dodania pliku do bazy ale gdy dodaje plik to mi wyskakuje komunikat na stronie :

  1. <?php
  2.  
  3.  
  4. require_once('funkcje_pliki.php');
  5.  
  6. $max_rozmiar = 1024*1024;
  7. $nowy_plik = $_POST['nowy_plik'];
  8.  
  9. tworz_naglowek_html('Dodawanie Plikow');
  10.  
  11. try {
  12. sprawdz_prawid_uzyt();
  13. if (!wypelniony($_POST)) {
  14. throw new Exception('Formularz wypełniony niewłaściwie. Proszę spróbować ponownie.');
  15. }
  16.  
  17.  
  18. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  19. if ($_FILES['plik']['size'] > $max_rozmiar) {
  20. echo 'Błąd! Plik jest za duży!';
  21. } else {
  22. echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name'];
  23. echo '<br/>';
  24. if (isset($_FILES['plik']['type'])) {
  25. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  26. }
  27. move_uploaded_file($_FILES['plik']['tmp_name'],
  28. $_SERVER['DOCUMENT_ROOT'].'/pliki/'.$_FILES['plik']['name']);
  29.  
  30.  
  31. }
  32. } else {
  33. echo 'Błąd przy przesyłaniu danych!';
  34. }
  35.  
  36.  
  37.  
  38. dodaj_plik($nowy_plik);
  39. echo 'plik dodano do bazy';
  40.  
  41.  
  42.  
  43. if ($tablica_plik = pobierz_plik_uzyt($_SESSION['prawid_uzyt'])) {
  44. wyswietl_plik_uzyt($tablica_plik);
  45. }
  46. }
  47. catch (Exception $e) {
  48. echo $e->getMessage();
  49. }
  50. wyswietl_menu_uzyt();
  51. tworz_stopke_html();
  52. ?>




Odebrano plik. Poczštkowa nazwa: [C] Ekonometria (54).rar
Typ: application/x-rar-compressed
Próba dodania
Wstawienie nowego pliku nie powiodło sie





wydaje mi sie ze teraz jest to spowodowane tym fragmentem kodu :
  1. function dodaj_plik($nowy_plik) {
  2.  
  3.  
  4.  
  5. echo "Próba dodania ".htmlspecialchars($nowy_plik)."<br />";
  6. $prawid_uzyt = $_SESSION['prawid_uzyt'];
  7.  
  8.  
nospor
Skad zes wytrzasnął:
$nowy_plik = $_POST['nowy_plik'];
?
Dane o pliku nie znajdują sie w $_POST a w $_FILES - już nawet z $_FILES korzystasz więc trzymaj się tego.

Włącz sobie wyswietlanie wszystkich błędów. Masz o tym napisane tutaj:
Temat: Jak poprawnie zada pytanie

i ogólnie zastosuj się do porad tam podanych

ps: po raz ostatni podaję ci linka do tego tematu "Jak poprawnie zadać pytanie". Następnym razem zamkne temat i poczekam az zastosujesz sie do porad podanych w tym temacie. No nie bedziemy w kazdym temaci ci pisac: a zrob to, a zrob tamto.
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.