Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL] [PHP] typ pola w bazie na dodanie zdjęcia
Forum PHP.pl > Forum > Bazy danych > MySQL
MartinezB
Mam pytanie, jakiego typu pola musze użyć w bazie danych MySQL aby przchowywać tam zdjęcia?

Czy ktoś ma kod w php do umieszczania grafiki w bazie MySQL oraz do wyciągania zdjęcia z bazy na stronę.

Będę wdzięczny za pomoc.
SongoQ
Zeby umiescic foto w bazkie potrzebny jest typ binarny, ale mozesz wykorzystac text i podczas odczytu pliku graficznego konwertowac na text i w takiej postaci zapisywac do bazy, przy odczycie robisz tak samo tylko odwrotnie.

Z tymi grafikami w bazie danych bywa roznie nieraz koncepcja sie zmienia od rodzaju bazy.
MartinezB
Kod strony z forumularzem jest prosty:

Kod
<FORM action="dodaj.php" method=POST name="forma" enctype="multipart/form-data">
<INPUT type="file" name="plik"><br>
<INPUT type="submit" value="laduj" name="dodaj">
</FORM>


ale jaki typ pola ma być w bazie MySQL, aby to zdjęcie dodało się do bazy przy pomocy strony dodaj.php??
I jak potem wyciągnąć te zdjęcie z bazy MySQL?
SongoQ
Dodajesz uzywajac INSERT a wyciagasz uzywajac SELECT.

Ok. Moze teraz w szczegolach jak ja stostowalem.
Po zwalidowaniu tego pliku, rozmiar, typ, itd.

Odczytujesz binernie plik i "encodujesz" i zapisujesz do bazy.
  1. <?php
  2.  
  3. $rPlik = fopen('adres gdzie zapisales lub adres z tmp', 'r');
  4. $szZnakiZPliku = base64_encode(fread($rPlik, filesize('adres pliku jak powyzej')));
  5.  
  6. ?>


Odczyt robisz na odwrót.

Na poczatku wysylasz nagłówek:
  1. <?php
  2.  
  3. header(&#092;"Content-type: image/png\"); //png, gif, jpg, itd....
  4.  
  5. ?>


Nastepnie masz odczyt z bazy i wyswietlenie:
  1. <?php
  2.  
  3. echo base64_decode($szOdczytanaWartoscZBazy);
  4.  
  5. ?>


Jak wyciagnąc plik z bazy chyba juz nie musze pisać (jak nie to odsylam do podstaw sqla)

Sa tez inne metody na umieszczanie grafiki w bazie, wydaje mi sie ze ten przykład co opisalem jest ok.
MartinezB
Dzięki SongoQ za wskazówki!!!

Zrobioną mam baze danych w MSSQL
zdjęcia są umieszczone w bazie danych w polu ZDJ typ IMAGE
ZDJ zawiera obiekt binarny

Kod
<?php

$uzytkownik = "zdjecia";
$haslo = "zdjecia";
$db = "zdjecia";
$ip = "127.0.0.1";
$link = mssql_connect($ip, $uzytkownik, $haslo);
if (! $link)
die ( "nie moge się poł&plusmn;czyć z serwerem");
mssql_select_db($db, $link);

//zapytanie SQL
$zapytanie = mssql_query("SELECT * FROM ZDJECIA WHERE MATCLE='POL0000123'");

//formatowanie wyników
echo "<TABLE>";
while ($row = mssql_fetch_array($zapytanie))
{
echo "<TR><td><img src=\"$row[ZDJ]\"></td></TR>";
}
echo "</TABLE>";

//zwolnienie zasobów i zamknięcie połączenia
mssql_free_result($sql_result);
mssql_close($connection);
?>


W jaki sposób mogę wyświetlić binarnie zapisane w bazie zdjęcie. Bo po wpisaniu normalnie jak w kodzie powyżej na ekranie mam poniższy kod:

Kod
?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif??ot Entryquestionmark.gif@9?޶ϑ?>?@)退PvXڸ򂁃@Ole questionmark.gif?CompObj?uCONTENTSquestionmark.gif??i?questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif ދ?@)飀Microsoft Photo Editor 3.0 Pictuquestionmark.gif9?޶ϑ?>?@)飀Microsoft Photo Editor 3.0 PictureMSPhotoEditor MSPhotoEd.3??88Th? K?questionmark.gifɁ?questionmark.gif}questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifz??r{vlupgqidn
cbpY_mS]kR_mV_mVYfTMXGBM?DLAELEDKD@FDQUT|questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif}}yy{ttvpprpprttvzz|}~questionmark.gifquestionmark.gifquestionmark.gif?~questionmark.gif|questionmark.gif{questionmark.gif~questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?
questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifܞ݀ʂ?
questionmark.gif}questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif?questionmark.gif{questionmark.gifvzqzunxplvkj
wcft[bpYbpYdq]`m[XcSPZO=E:
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.