Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]dodawanie obrazka do bazy
Forum PHP.pl > Forum > Przedszkole
Paweltm
Uploaduję pliki (obrazki na serwer)

  1. $plik1_tmp = $_FILES['zdjecie1']['tmp_name'];
  2. $plik1_nazwa = $_FILES['zdjecie1']['name'];
  3. $plik1_rozmiar = $_FILES['zdjecie1']['size'];
  4. $plik1_typ = $_FILES['zdjecie1']['type'];
  5.  
  6. $sp1 = explode(".",$plik1_nazwa);
  7.  
  8. if(($sp1[1] == "jpg" or $sp1[1] == "gif" or $sp1[1] == "bmp"
  9. or $sp1[1] == "png") and (is_uploaded_file($plik1_tmp)))
  10.  
  11. {
  12. move_uploaded_file($plik1_tmp, "upload/$plik1_nazwa");
  13. echo "Plik: <strong>$plik1_nazwa</strong> został przesłany na serwer!";
  14. }
  15. else
  16. {
  17. echo "Nie udało się wysłać pliku <strong>$plik1_nazwa</strong> na
  18. serwer Format lub rozmiar nie poprawny";
  19. }


W jaki sposób teraz do bazy i jakiego rodzaju powinno być pole w którym to umieścimy?

A przy okazji moglibyście jeszcze napisać w jaki sposób mogę to odczytać z bazy.
jblew
Chcesz umieścić cały obrazek w bazie? Jeśli tak, to wykorzystaj pole BLOB.
Paweltm
Cytat(jblew @ 14.01.2011, 16:36:42 ) *
Chcesz umieścić cały obrazek w bazie? Jeśli tak, to wykorzystaj pole BLOB.

dokładnie tak. Cały obrazek. Jak będzie wyglądała składnia do umieszczenia obrazka który jest uploadowany jak w kodzie powyżej to robię?
rafal.t
Tak jak napisane zostało wyżej użyj pola typu BLOB i pokombinuj z kodem:

  1. $obraz = addslashes(fread(fopen($_FILES['zdjecie1']['tmp_name'], "r"), $_FILES['zdjecie1']['size']));


i później normalny insert zmiennej obraz do odpowiedniej kolumny w tabeli.
Paweltm
Cytat(rafal.t @ 15.01.2011, 00:06:15 ) *
Tak jak napisane zostało wyżej użyj pola typu BLOB i pokombinuj z kodem:

  1. $obraz = addslashes(fread(fopen($_FILES['zdjecie1']['tmp_name'], "r"), $_FILES['zdjecie1']['size']));


i później normalny insert zmiennej obraz do odpowiedniej kolumny w tabeli.

niestety wyskakuje mi błąd :

Warning: fopen() [function.fopen]: Filename cannot be empty in /home/pawelkwa/public_html/sklep/admin/dodaj_prod.php on line 93

Warning: fread() expects parameter 1 to be resource, boolean given in /home/pawelkwa/public_html/sklep/admin/dodaj_prod.php on line 93

w linii z $obraz
rafal.t
Przetestowałem u siebie i działa. Sprawdź co ci się wysyła z formularza, czy masz prawidłowe dane w $_FILES. Może zapomniałeś o enctype w formularzu. Ewentualnie wklej więcej kodu.
Paweltm
  1. <form enctype="multipart/form-data" action="dodaj_prod.php" method="POST">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="5000" />
  3. <input name="zdjecie1" type="file" />
  4. <input type="submit" value="Wyslij plik" />
  5. </form>

kod formularza tak wygląda
rafal.t
Formularz wygląda ok. Pewnie jest gdzieś błąd w php-ie, możesz podesłać mi plik php?
Paweltm
poza tym jest tylko kilka innych pól formularza, i zapytanie mysql wrzucające to zdjęcie i inne dane z form do bazy ( gdy nie dodaję zdjęcia działa) jest require 3 plików które w innych miejscach działa więcej php tu nie ma
rafal.t
To u mnie działa bez problemów:
  1. $plik1_tmp = $_FILES['zdjecie1']['tmp_name'];
  2. $plik1_nazwa = $_FILES['zdjecie1']['name'];
  3. $plik1_rozmiar = $_FILES['zdjecie1']['size'];
  4. $plik1_typ = $_FILES['zdjecie1']['type'];
  5.  
  6. $sp1 = explode(".",$plik1_nazwa);
  7.  
  8. if(($sp1[1] == "jpg" or $sp1[1] == "gif" or $sp1[1] == "bmp"
  9. or $sp1[1] == "png") and (is_uploaded_file($plik1_tmp)))
  10.  
  11. {
  12. mysql_connect('localhost', 'root', 'newroot') or
  13. die('Nie można się połączyć');
  14. mysql_select_db('test');
  15. $obraz = addslashes(fread(fopen($plik1_tmp, "r"), $plik1_rozmiar));
  16. $sql = "INSERT INTO obrazek SET obrazek='".$obraz."'";
  17. mysql_query($sql);
  18. echo "Plik: <strong>$plik1_nazwa</strong> został przesłany na serwer!";
  19. }
  20. else
  21. {
  22. echo "Nie udało się wysłać pliku <strong>$plik1_nazwa</strong> na
  23. serwer Format lub rozmiar nie poprawny";
  24. }

  1. <form enctype="multipart/form-data" action="" method="POST">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="5000" />
  3. <input name="zdjecie1" type="file" />
  4. <input type="submit" value="Wyslij plik" />
  5. </form>


Kod napisany na szybko ale przetestowany i działa. Żebym ci mógł pomóc potrzebuje twoich plików, ewentualnie sprawdź sam co masz w $_FILES po upload pliku. Może powiększ MAX_FILE_SIZE, może próbujesz dodać pliki które są za duże.
Paweltm
na pw poszła prośba o maila . Podeślę kod
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.