Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]dodawanie obrazu
-melex-
post
Post #1





Goście







Witam

Chce dodać obraz do bazy danych.
Stworzyłem funkcje dodajobraz

  1. <?php
  2. function dodajobraz()
  3. {
  4.  
  5. echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">
  6.  
  7. <table>
  8.  
  9. <tr>
  10. <td>Podaj link do obrazka</td>
  11.  <td><INPUT type="file" name="obraz">
  12. </tr>
  13. <tr>
  14.  <td><input type="submit" name="dodaj" value="DODAJ OBRAZ"></td>
  15. </tr>  
  16.  
  17. </table>';
  18. ?>


oraz plik obrazek.php

  1. <?php
  2. if($_POST['dodaj'])
  3. {
  4. $fhandle = fopen($_FILES['obraz'], "r");
  5. $content = fread($fhandle, filesize($_FILES['obraz']));
  6. fclose($fhandle);
  7. $dodaj = mysql_query("INSERT INTO images VALUES ('$content')";);
  8. ?>


Po nacisnieciu dodaj obraz wyskakuje błąd :

Warning: fread(): supplied argument is not a valid stream resource in C:\xampplite\htdocs\test\obrazek.php on line 29

Warning: fclose(): supplied argument is not a valid stream resource in C:\xampplite\htdocs\test\obrazek.php on line 30
Go to the top of the page
+Quote Post
Maxik
post
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Zakładając, że będzie dostęp do wysokopoziomowych funkcji mozesz użyć $content = file_get_contents($_FILES['obraz']); Dodatkowo do form dodaj enctype="multipart/form-data". Jaki sens w dodawaniu obrazków do bazy? Nie możesz do bazy zapisać tylko nazwy pliku(lub ścieżki), a plik wrzucić do jakiegoś katalogu?

EDIT: Nie jestem pewny czy $_FILES['obraz'] to zawartość pliku.

Ten post edytował Maxik 18.08.2008, 00:14:01
Go to the top of the page
+Quote Post
bmL
post
Post #3





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


print_r($_FILES[obraz);
$_FILES['obraz'] zawiera tablicę w której znajdą się kolumny [name] [tmp_name] [type] i [size]
Chociaż nigdy nie operowałem na plikach ani dodawaniu obrazków bezpośrednio do bazy danych (robiłem tak jak pisał Maxik) to chyba powinno być tak:
  1. <?php
  2. if($_POST['dodaj'])
  3. {
  4. $fhandle = fopen($_FILES['obraz']['tmp_name'], "r");
  5. $content = fread($fhandle, filesize($_FILES['obraz']['tmp_name'])); // chyba zamiast filesize($_FILES['obraz']['tmp_name'] można dać $_FILES['obraz'][size]
  6. fclose($fhandle);
  7. $dodaj = mysql_query("INSERT INTO images VALUES ('$content')";);
  8. ?>
Go to the top of the page
+Quote Post
-melex-
post
Post #4





Goście







dzieki za odp
a jak sie dodaje tylko link do bazy a potem odczytuje?
Go to the top of the page
+Quote Post
bmL
post
Post #5





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Analogicznie do dodawania pliku do bazy:
Oczywiście link przychodzi z zwykłego pola testowego input czyli już się nie bawimy z tablicą $_FILES
zapis:
  1. <?php
  2. $dodaj = mysql_query("INSERT INTO images VALUES ('$_POST[link]')");
  3. ?>

odczyt
  1. <?php
  2. $obrazkisql = mysql_query("SELECT link FROM images"); // WHERE id = (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
  3. while($obrazki = mysql_fetch_row($obrazkisql))
  4. {
  5. echo $obrazki[0].' <br>';
  6. }
  7. ?>

Gdzie pole link w bazie danych to najlepiej varchar(100) a nie tak jak w przypadku dodawania obrazka bezpośrednio do bazy blob (o ile dobrze kojarzę).
Ale po co Ci dodawać link do bazy najlepiej byłoby zrobić upload pliku przez formularz do jakiegoś folderu potem tylko do bazy danych dodać nazwę pliku i tyle.
Go to the top of the page
+Quote Post
Maxik
post
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Tu masz opisany upload plików w PHP: http://www.programuj.com/faq/php/upload.php
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 14:01