Probleme beim Speichern und Abrufen von Datenbank-Bildern

Begonnen von MikePapa, 30 Oktober 2004, 14:01:26

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

MikePapa

Hallo,

trotz intensiver Suche im Internet und in diesem Forum habe ich leider noch keinen funktionierenden Lösungsansatz für folgendes Vorhaben gefunden:

Ich möchte eine Dienstgradübersicht mehrer Nationen erstellen. Hierzu habe ich nun einige hundert kleinere gif-Bilder, welche ich aber nicht auf den Server spielen, sondern in die DB integrieren möchte.

In der DB habe ich bereits die Grunddaten (Bezeichnung, Kategorie etc.) abgelegt.
Erweitert habe ich den entsprechenden Table mit den Feldern format (tinyblob) und bild (blob).

Nachfolgend ein Ausschnitt der Datei, mit welcher ich nachträglich die o.g. Bilder in die Datenbank speichere (speichern möchte):


        $result = sql_query("select id, land, tsk, gruppe from nuke_milranks WHERE land='Frankreich'");
        while(list($id, $land, $tsk, $gruppe) = sql_fetch_row($result)) {

        $dstgrad_pic = "modules/MilRanks/$land/$tsk/$gruppe.gif";   '### hier habe ich die Bilder vorläufig abgelegt, da sie von der lokalen FP nicht akzeptiert wurden
$size=@getimagesize($dstgrad_pic);
$format="$size[0]:$size[1]:1:$dstgrad_pic:xx";

                        $srcfilesize=filesize($dstgrad_pic);
                        $data = addslashes(fread(fopen($dstgrad_pic, "rb"), $srcfilesize*2));

              $aktualisieren ="update nuke_milranks set format='".$format."', bild='".$data."' where id='".$id."';";
         $result2 = sql_query($aktualisieren);


Ob dieses Verfahren richtig ist, kann ich leider nicht prüfen, da ich an der Ausgabe der Bilder bisher kläglich gescheitert bin. :(

Ich habe mir parallel das Modul WEBRING angeschaut, komme aber leider immer noch zu keinem annähernd positivem Ergebnis.

Wäre mehr als toll, wenn mir jemand hier weiterhelfen könnte!  ;)

Gruß

"MikePapa"

Andi

Hi MikePapa ;)

auf den ersten Blick sieht das eigentlich ok aus.

Kommen Fehlermeldungen wenn der debug-Modus an ist?
schön´s Grüssle, Andi

MikePapa

Hallo Tora,

nein, es scheint auf den ersten Blick so, daß die Speicherroutine in Ordnung ist.
Es erscheint keine Fehlermeldung und die DB wird anscheinend befüllt ;)

Nur schaffe ich es leider nicht, die Daten wieder korrekt auszulesen...
Bei der Ausgabe erhalte ich nicht das Bild sondern lediglich den Binärcode. Die Vorgehensweise zur Umwandlung des Codes in ein Bild habe ich bisher nicht hinbekommen und habe leider auch nicht annähernd einen Schimmer, wie ich hier vorgehen muß.

Gruß

"MikePapa"


Andi

uuups, wer lesen kann ist klar im Vorteil....
Sorry, dachte es hängt am Speichern...

hehehe, da muss ich erst mal selbst wieder im Webring nachschauen wie das geht ;)
melde mich wieder...
schön´s Grüssle, Andi

Andi

Oki, es dämmert.

den passenden Code findest du in der Webringdatei "getlogo.php".
Der Knackpunkt dabei ist das senden des Headers mit dem passenden Mime-Type.

Den If-Zweig in dieser Datei nicht beachten.
schön´s Grüssle, Andi

MikePapa

Ich habe jetzt mal mit dem von Dir genannten Teil gezielt einen Datensatz ausgelesen .... und siehe da: es funktioniert!! :)  :thumbup:

Ich habe diesmal nur diesen Codeschnippsel genutzt und den Rest des neuen Modules rausgeschmissen. Zuvor bekam ich immer die Meldung, daß die modules.php gespeichert oder geöffnet werden soll...
Der Grund hierfür war offensichtlich die noch nicht vorhandene language-Datei, die mit der obligatorischen Zeile
mxGetLangfile($module_name); abgerufen werden sollte. Hier bin ich fälschlicherweise davon ausgegangen, daß lediglich der entsprechende Warnhinweis erfolgt, nicht jedoch, daß dies zum besagten "Download"-Fenster führt.

Nunja, nun bin ich wieder ein wenig schlauer ;)

Vielen Dank für Deine Hilfe, Tora!

Gruß

"MikePapa"



Andi

Supppi  :thumbup:

ZitatZuvor bekam ich immer die Meldung, daß die modules.php gespeichert oder geöffnet werden soll
Glaube aber eher, dass da dann die header-Anweisung nicht richtig war oder fehlte, oder?
schön´s Grüssle, Andi

MikePapa

Mhhh....das hättest Du vielleicht nicht schreiben sollen, Tora *g*

Hab die Datei nun mit Header- und Footer-Aufruf versehen.... jetzt erscheint nicht mehr das Bild, sondern
GIF89a(N#˜‚3@†)�<h0•�-hƒ/


Die Datei hat nun übrigens folgenden Inhalt:
<?php

if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");
$module_name basename(dirname(__FILE__));
mxGetLangfile($module_name);
$index 1;

include(
"header.php");

$query "select bild,format from nuke_milranks where id='95'";
$result = @SQL_QUERY($query,$dbi);
if($result){
list($bild,$format)=sql_fetch_row($result,$dbi);
if ($bild && $format){
$prefs=@explode(":",$format);
$type=$prefs[4];
header("Content-type: $type");
#echo stripslashes($bild);
echo $bild;
exit;
}
}

include(
"footer.php");

?>



OK, der 1. Schritt funktioniert ja nun (das Aufrufen des Bildes aus der DB), nun fehlt "nur" noch die Integration ins vkp ;)

Hast Du eine Idee oder siehst Du den Fehler, den ich so hartnäckig übersehe??

Gruß

"MikePapa"

Andi

hehehe, hast nen kleinen Denkfehler drin.

Die Ausgabe dieser Datei ist kein HTML-Quelltext, sondern das eigentliche Bild.
Um es anzuzeigen musst due es ganz normal per imagetag anzeigen:

<img src="modules.php?name=modulname&file=dieneuedatei&id=333">
schön´s Grüssle, Andi

MikePapa

Ohne es sofort umzusetzen: ja, ich habe den leichten Schlag auf den Hinterkopf bemerkt :)

Danke, Tora.