Seite 1 von 1

Wie zeige ich ein Bild aus einer Datenbank an

Verfasst: 10.10.2004 22:45
von SB68Manm
Hi,
ich speichere Bilder in einer Datenbanktabelle.
Das Hochladen mit php hab ich jetzt so weit, nun hab ich das Problem,
dass ich Bilder zwar anzeigen kann, aber immer nur Eins ohne weitere Inhalte, also das blanke Bild im Browserfenster.
Das Bild soll aber Bestandteil einer kompletten Webseite werden, bzw. einer tabellarischen Liste.

Wie geht man da vor ?

Den Code hab ich natürlich nicht selbst gebastelt, sondern von einem Buch :roll:

Wenns jemanden interessiert, unten ist der Original-Code, den ich für meinen Zweck natürlich angepasst habe.

Wer es auspobieren will, muss sich nur noch die Tabelle basteln :D

Code: Alles auswählen

<?php

$dbcnx = mysql_connect("localhost", "root", "pw");
mysql_select_db("dbname");

if (($action == "view" or $action == "dnld") and $id != "") {
	
	// Benutzer ruft eine Datei ab
	$sql = "SELECT FileName, MimeType, FileData
		FROM filestore WHERE ID = '$id'";
	$result = @mysql_query($sql);
	if (!$result) die("Datenbankfehler:  " . mysql_error());
	
	$filename = mysql_result($result,0,"FileName");
	$mimetype = mysql_result($result,0,"MimeType");
	$filedata = mysql_result($result,0,"FileData");
	
	if ($action == "dnld") {
		if (strpos($HTTP_USER_AGENT,"MSIE"))
			$mimetype = "application/x-download";
		else
			$mimetype = "application/octet-stream";
	}

	header("Content-disposition: filename=$filename");
	header("Content-Type: $mimetype");
	header("Content-Length: " . strlen($filedata));

	echo($filedata);
	exit();

	
	// Benutzer ruft eine Datei ab
	$sql = "SELECT FileName, MimeType, FileData
		FROM filestore WHERE ID = '$id'";
	$result = @mysql_query($sql);
	if (!$result) die("Datenbankfehler:  " . mysql_error());
	
	$filename = mysql_result($result,0,"FileName");
	$mimetype = mysql_result($result,0,"MimeType");
	$filedata = mysql_result($result,0,"FileData");
	
	if ($action == "dnld") {
		if (strpos($HTTP_USER_AGENT,"MSIE"))
			$mimetype = "application/x-download";
		else
			$mimetype = "application/octet-stream";
	}
	header("Content-disposition: filename=$filename");
	header("Content-Type: $mimetype");
	header("Content-Length: " . strlen($filedata));
	echo($filedata);
	exit();

	
} elseif ($action == "del" and $id != "") {
	
	// Benutzer loescht eine Datei
	$sql = "DELETE FROM filestore WHERE ID = '$id'";
	$ok = @mysql_query($sql);
	if (!$ok) die("Datenbankfehler:  " . mysql_error());

	header("Location: $PHP_SELF");
	exit();

} elseif ($action == "ulfile" and $uploadfile != "") {

	// Ausschliessen, dass eine Datei kein Upload ist
	if (!is_uploaded_file($uploadfile))
		die("$uploadfile ist keine hochgeladene Datei!");
		
	// Datei zum binaeren Einlesen oeffnen  ("rb")
	$tempfile = fopen($uploadfile,"rb");

	// Gesamte Datei in den Arbeitsspeicher einlesen, wobei die PHP-Funktion filesize benutzt wird
	// um die Dateigroesse zu ermitteln.
	$filedata = fread($tempfile,filesize($uploadfile));

	// Einfuegen in die Datenbank vorbereiten, indem
	// vor irgendwelche Sonderzeichen Backslashes gesetzt werden
	$filedata = addslashes($filedata);

	// SQL-Anfrage formulieren
	$sql = "INSERT INTO filestore SET
	FileName = '$uploadfile_name',
	MimeType = '$uploadfile_type',
	Description = '$desc',
	FileData = '$filedata'";

	//Einfuegen durchfuehren
	$ok = @mysql_query($sql);
	if (!$ok) die("Datenbankfehler beim Einf&uuml;gen der Datei:  " . mysql_error());

	header("Location: $PHP_SELF");
	exit();
}

// Vorgabemaessige Seite: Gespeicherte Dateien anzeigen

$sql = "SELECT ID, FileName, MimeType, Description
	FROM filestore";
$filelist = @mysql_query($sql)
	or die("Datenbankfehler:  " . mysql_error());
?>
<html>
<head>
<title> PHP/MySQL Dateimagazin </title>
</head>
<body>

<h1>PHP/MySQL Dateimagazin</h1>

<form action="<?=$PHP_SELF?>?action=ulfile" method="post"
	enctype="multipart/form-data">
<p>Datei hochladen:<br />
<input type="file" name="uploadfile" /></p>
<p>Dateibeschreibung:<br />
<input type="text" name="desc" maxlength="255" /></p>
<p><input type="submit" name="go" value="Hochladen" /></p>
</form>

<p>Folgende Dateien sind in der Datenbank gespeichert:</p>
<table width="85%" border="0" cellpadding="0" cellspacing="0">
<tr>
	<th align="left">Dateiname</th>
	<th align="left">Typ</th>
	<th align="left">Beschreibung</th>
</tr>
<?php

if (mysql_num_rows($filelist) > 0) {
	while ($f = mysql_fetch_array($filelist)) {
		?>

<tr valign="top">
	<td nowrap>
		<a href="<?=$PHP_SELF?>?action=view&id=<?=$f['ID']?>">
		<?=$f['FileName']?></a>
	</td>
	<td nowrap><?=$f['MimeType']?></td>
	<td><?=$f['Description']?></td>
	<td nowrap>
		[<a href="<?=$PHP_SELF?>?action=dnld&id=<?=$f['ID']?>"
		>Download</a> |
		<a href="<?=$PHP_SELF?>?action=del&id=<?=$f['ID']?>"
			onClick="return confirm('Diese Datei l&ouml;schen?');"
		>L&ouml;schen</a>]
	</td>

</tr>

		<?php
	}
} else {
	?>
	<tr><td colspan="3" align="center">Keine Dateien vorhanden!</td></tr>
	<?php
}
?>
</table>
</body>
</html>

Verfasst: 10.10.2004 23:27
von Blutgerinsel
Du willst quasi ein Bild welches in der DB via Feldtyp Blob gespeichert ist anzeigen und dazu noch weitere Sachen bzw. Felder anzeigen?

Dann erweitere das SQL Statement dementsprechend und entferne das exit()......

Ich hab das jetzt mal grob überflogen.....
Du bekommst als Startseite quasi das Formular wo unten dann die Bilder gelistet stehen und wenn du dieses anklickst siehst du dann dieses Bild.....

Meine Frage ist was genau willst du nun haben willst du einfach eine Gallerie bauen und dazu eine Tabelle als Ausrichtung benützen????

Verfasst: 11.10.2004 06:05
von SB68Manm
Blutgerinsel hat geschrieben:Du willst quasi ein Bild welches in der DB via
Meine Frage ist was genau willst du nun haben willst du einfach eine Gallerie bauen und dazu eine Tabelle als Ausrichtung benützen????
Anstadt der Auflistung der Links zu den Bildern sollen die Bilder angezeigt werden und dazu die Beschreibung der jeweiligen Bilder.