Supportnet / Forum / Skripte(PHP,ASP,Perl...)
bilder in mysql db
Frage
hi
wie kann ich bilder in die mysql datenbank einfügen und sie danach wieder ausgeben.
gibts da ein guten php/mysql befehl.
Bin völlig neuling in sachen bilder und mysql.
thanks
Antwort 1 von Feuervogel
ich hab das auch gemacht, aber ich muss sagen: ist vollkommener mist, da das auslesen ewig dauert und die bilder nicht gecached werden. aber wenn du lernen willst, lies dir was über $_FILES durch, ist ne globalvar soweit ich weiß. das ist eins meiner scripte hierzu:
hochladen und löschen:
und ausgeben, falls die id nicht existiert, ein dummy-bild
ansonsten kann ich dir empfehlen: nimm die bilder, speicher sie mit nem eindeutigen dateinamen, und leg sie in einem verzeichnis ab. dann mach dir den table, mit ids und dem pfad zu den bildern und gibs die so aus.
hochladen und löschen:
<?php
include("include/connect.php");
session_start();
$id = $_SESSION['id'];
$userid = $_REQUEST['userid'];
$prgm = $_REQUEST['prgm'];
$pass1 = md5($_REQUEST['pass1']);
$pass2 = md5($_REQUEST['pass2']);
require_once("tmpl/vlibTemplate.php");
$filename = $_FILES['image']['name'];
$filesize = $_FILES['image']['size'];
$filetype = $_FILES['image']['type'];
$filedata = $_FILES['image']['tmp_name'];
if ($prgm == "add_image")
{
if ($filesize <= 20000 && ($filetype == "image/gif" || $filetype == "image/jpeg"))
{
$data = addslashes(fread(fopen($filedata, "r"), filesize($filedata)));
$sql = "UPDATE `user` SET `image_data`= '$data',`image_type`='$filetype' WHERE `id` = '$id'";
$qry = mysql_query($sql);
$tmpl_sysmsg = new vlibTemplate("tmpl/tmpl_rest_msg.html");
$tmpl_sysmsg->setVar('message_headline','Upload vollendet');
$tmpl_sysmsg->setVar('message_content','Das Bild wurde erfolgreich hinzugefügt! | <a class="content-sub" href="javascript:window.close()">Fenster schließen</a>');
$tmpl_sysmsg->pparse();
}
else
{
$tmpl_sysmsg = new vlibTemplate("tmpl/tmpl_rest_msg.html");
$tmpl_sysmsg->setVar('message_headline','Upload fehlgeschlagen!');
$tmpl_sysmsg->setVar('message_content','Das Bild ist leider zu groß! | <a class="content-sub" href="javascript:history.back()">Zurück</a>');
$tmpl_sysmsg->pparse();
}
}
elseif ($prgm == "delete_image")
{
$sql = "UPDATE `user` SET `image_type` = '', `image_data` = '' WHERE `id` = '$id'";
$qry = mysql_query($sql);
header("location:index.php?prgm=profile");
}
?>
und ausgeben, falls die id nicht existiert, ein dummy-bild
<?php
include("include/connect.php");
$userid = $_REQUEST['id'];
$sql = "SELECT `image_type`,`image_data` FROM `user` WHERE `id` = '$userid'";
$qry = mysql_query($sql);
$result = mysql_fetch_array($qry);
if ($result['image_data'] == "")
{
header("Content-type: image/gif");
readfile("pics/steady-pics/johndoe.gif");
exit();
}
else
{
header("Content-type: {$result['image_type']}");
echo $result['image_data'];
}
?>
ansonsten kann ich dir empfehlen: nimm die bilder, speicher sie mit nem eindeutigen dateinamen, und leg sie in einem verzeichnis ab. dann mach dir den table, mit ids und dem pfad zu den bildern und gibs die so aus.

