Ludwig Ruderstaller: Bilder in MYSQL - Datenbank

Beitrag lesen

Hallo,

Deshalb meine Frage an Euch: Wie muss ich mein Formular aufruesten, damit der Homepagebesucher zusammen mit seinen Adressdaten auch ein Bild von sich uebertragen kann?

mal das grundsätzliche:

Eine datei vom rechner des users auf den server bekommen:

<form enctype="multipart/form-data" action="foo.php3" method="post">
<input type="file" name="ufile">
<input type="submit" name="submit" value="Senden">
</form>

foo.php3:
/*
   Überprüfung ob es ein jpg oder gif bild ist
   Hier könnte auch überprüft werden wie groß das file ist
*/
$ext=GetImageSize($ufile) or die('<h1>Das ist kein jpg oder gif Bild!!</h1><a href="javascript:history.back()">zurück...</a>');
if ($ext[2]=="1"){
$extension=".gif";
}else{
$extension=".jpg";
}
------------------------------
Jetzt hast du zwei möglichkeiten.

Die 1. Möglichkeit wäre das bild in der Datenbank zu speichern, dafür mußt du in der DB ein BLOB feld anlegen und es auf BINARY stellen.

Dann genügt ein einfaches mysql_query("INSERT INTO tablename ('bild') values ('$ufile')");

wenn du das feld wieder in eine html seite ausgeben willst, brauchst du dafür ein eigenes skript das als erste ausgabe folgendes schreiben muß (für gif datein):

Header("content-type: image/gif");
  Header("pragma: no-cache");

Diesem skript übergibst du einfach die ID des bildes in der DB, es hohlt das bild und gibt es als ECHO aus.
Das Problem das du noch hast du mußt schon vorher herausfinden wie groß das bild ist um es in den img src tag zu schreiben, das heißt es wäre am besten wenn du die größe auch in die db schreibst.

Die zweite und auch bessere lösung wäre das Bild im Filesystem zu speichern, und in die DB einen link dorthin zu setzten.
$www="/images/";
$hard="/home/foo/images/";
$dest="$hard$name$extension";
if (copy($ufile,$dest)){
echo "Bild gesendet";
}else{
echo "FEHLER! Das Bild konnte nicht kopiert werden!";
}
mysql_query("Insert INTO tablename (bild) values ('$www$name$extension')");

ausgeben kannst du das ganze dann ganz einfach mit:
(wobei $file der inhalt des DB links ist);
<?$size=GetImageSize("$file");?>
<!--HTML CODE //-->
<img src=<? echo $name; ?>" <? echo $size[3]; ?> alt="blabla">

-------

Das $size[3] gibt dir dann folgendes aus width="123" height="123"

PHP macht es einem ja so leicht :-)

lg
Ludwig