Wie zeige ich ein Bild aus einer Datenbank an

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
SB68Manm
Mitglied
Beiträge: 47
Registriert: 19.10.2003 13:07
Wohnort: Mannheim
Kontaktdaten:

Wie zeige ich ein Bild aus einer Datenbank an

Beitrag 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>
Benutzeravatar
Blutgerinsel
Mitglied
Beiträge: 1801
Registriert: 19.07.2004 18:53
Wohnort: Landkreis Ulm
Kontaktdaten:

Beitrag 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????
SB68Manm
Mitglied
Beiträge: 47
Registriert: 19.10.2003 13:07
Wohnort: Mannheim
Kontaktdaten:

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“