Supportnet Computer
Planet of Tech

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:

<?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.