Blob Einträge ausgeben

maga147

Erfahrenes Mitglied
Hi,

sorry für die wahrscheinlich scho tausend mal gefragte Frage...
Hab aber leider nix gefunden:

Ich habe in einer MySQL Datenbank verschiedene Bilder als BLOB Einträge gespeichert... Ja ich weis es lahmt die Datenbank usw... aber ich möchte es trotzdem machen :-)

Wie kann ich jetzt über eine Abfrage machen, dass es ein Bild ausgibt

Sorry, aber ich hab bisher nur Texte ausgeben, meistens über

PHP:
'.$ausgabe['test'].' ';

wie kann ich jetzt das Bild "raushohlen"?

Danke
 
Vor dem Ausgeben des „Grafik-Rohinhalts“ musst du dem User Agent vorher mitteilen, um welchen Inhalt es sich dabei handelt, damit er sie entsprechend interpretieren kann. Dazu sendest du einfach ein HTTP-Header-Feld „Content-Type“ mithilfe der header()-Funktion mit Angabe des entsprechenden Media-Typen.
 
Dafür gibt es zwei Möglichkeiten die mir spontan einfallen.
Die erste ist, Du schreibst den Inhalt in eine Datei und gibst diese dann als bild aus.
Z.B.
$fp=fopen("bild.gif",'w');
fwrite($fp,$blobfeld);
flclose($fp);
<img src="bild.gif">

, oder zweitens Du machst das ganze in einem neuen Skript und gibst dieses dann als img src="skript.php?id=1" an.

Im Skript schreibst du dann.

<?
header('Content-Type: image/gif');
Hier must Du dein Blobfeld aus der Datenbank auslesen
echo $blobfeld;
?>

Marcus.
 
danke für die Antwort,

muss ich die dann ganz oben auf die Ausgabe Seite packen, also praktisch in den Head

Könntest du mir ganz kurz ein Beispiel komplett Coden, wie es da stehen müsste Es handelt sich um .JPG dateien
 
hmm... hab das mit dem Content Typ eingebaut, aber irgendwie zeigt er mir jetzt immer den Fehler
Code:
Die Grafik "http://www.....de/gallery.php?picid=1" kann nicht angezeigt werden, weil sie Fehler enthält.

Ich poste mal eben meinen Code mit dem ich alles ausführ

PHP:
<?php 
header('Content-Type: image/jpeg');
$host = "localhost";
$user = "";
$password = "";
$dbname = "";
$tabelle ="gallery";

$dbverbindung = mysql_connect ($host, $user, $password);
$dbanfrage = "SELECT * from $tabelle where picid='$picid'";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
echo'<table border="1" style="border-collapse: collapse">';
while ($ausgabe = mysql_fetch_array ($result))
{

echo $ausgabe["pic"];

}

echo'</TABLE>';

mysql_close ($dbverbindung);


?>
 
Nein, dass ist nicht möglich. Du müsstest jede Grafik einzeln abfragen, wie es shockshell in seinem letzten Beitrag beschrieb.
 
Ja, das möchte ich auch...

Soll mal so eine Gallery zum Durchklicken werden... bin grad in der Anfangsphase Schau dir doch bitte mal die 2 Beiträge von mir weiter oben an... wäre dir dankbar wenn du den Fehler finden kannst

In der Datenbank gibt es die Felder "picid" und "pic" wo das Blob drinnen ist.
 
Der Fehler in deinem Quellcode liegt darin, dass der Browser nach Angabe des Media-Typen versucht, den gesamten gesendeten Inhalt (auch die HTML-Tags) als eine JPEG-Grafik zu interpretieren, was natürlich völliger Quatsch ist.
Daher müsstest du jeder Grafik einzeln anfordern, aus der Datenbank abfragen und an den UA senden. Shockshell hat es in seinem letzten Beitrag beschrieben, wie dies zu lösen ist.
 
*schäm*

hab den fehler gefunden! Lag an mir... der Code funktioniert.... Hab die Falsche ID übergeben!

SORRY... aber danke, es klappt alles!
 
jetzt werde ich verrückt....

Das Skript hat funktioniert, jetzt habe ich einige Zeit nichts mehr gemacht, und jetzt funktioniert es nicht mehr!?

Ich habe die Bilder ganz normal al BLOB in der Datenbank gespeichert und will sie über folgendes Skript per gallery.php?picid=1 abrufen:

PHP:
<?php 
header('Content-Type: image/jpeg');
$host = "localhost";
[..]
$tabelle ="gallery";

$dbverbindung = mysql_connect ($host, $user, $password);
$dbanfrage = "SELECT * from $tabelle where picid='$picid'";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);
while ($ausgabe = mysql_fetch_array ($result))
{

echo' '.$ausgabe['pic'].'';

}

mysql_close ($dbverbindung);

?>

aber irgendwie funktioniert die Ausgabe nicht. Ich sehe immer nur die Ausgabe:

Die Grafik "http://www.turnbeutel-verlierer.de/gallery.php?picid=1" kann nicht angezeigt werden, weil sie Fehler enthält.

Weis jemand rat

Danke
 
Zurück