• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bild aus einer MySql Datenbank anzeigen

Arco2726

Neues Mitglied
Guten morgen.

Ich habe da ein Problem mit der Anzeige eines Bild aus einer MySql Datenbank.
Hier mal der Code den ich benutze :

PHP:
<?php

require_once 'server/server.php';

   $sql = 'SELECT img1data FROM angebote WHERE id = 2';
   $result = mysql_query($sql);
   $bild = mysql_fetch_row($result);

  Header("Content-Type: image/jpeg");
  echo $bild[0];
        

?>

Soweit wird mir das Bild auch angezeigt.
Nur kann ich keine weiteren informationen auf der Seite anzeigen lassen.
Ich wollte das eigentlich so machen, das ich auf der Seite eine Tabelle habe, wo in der ersten Zeile der Name, zweite Zeile das Datum
und in der dritten Zeile das Bild angezeigt bekomme.
Wie gesagt, wenn ich nur das Bild aufrufe, funktiniert alles.
Kommt da aber noch ein echo Befehl hinzu, bekomme ich immer eine Fehlermeldung.
Was muss ich ändern ???

Gruß

Roland

P.s.
Mir ist schon klar, das die meisten sagen, das ich die Bilder lieber nicht in die Datenbank speichern soll, weil die DB sonst zu gross wird.
 
Die Fehlermeldung ist wohl geheim, oder warum sagst du sie uns nicht ;)? Du setzt den Header doch auf image/jpeg.. ich denke da liegt das Problem.
 
Das Bild gehört nicht in die Datenbank, nicht nur weil sie dadurch zu groß wird, sondern weil solche Daten einfach nicht effizient in einer Datenbank ausgelesen werden können (und auch nicht geschrieben). Gib dort den Dateinamen an und binde das Bild damit ein.
Damit verlierst du keine halbe Stunde, um zu analysieren, welchen Header du benötigst (denn image/jpeg ist nicht für jedes Bild der richtige).

Fehlermeldungen sind übrigens dazu da, den Fehler zu verstehen, den man begangen hat. Ohne die Meldung können wir dir nicht helfen. :roll:
 
Problem gelöst ;Jump.

Die Fehlermeldung reiche ich nach :-)
Der Header muss so bleiben. Gebe ich den Header nicht an, bekomme ich nur
den Code der Bilddatei angezeigt. Und das sieht garnicht schön aus.

Das Problem lag nur daran, das ich das script :
PHP:
 <?php

require_once 'server/server.php';

   $sql = 'SELECT img1data FROM angebote WHERE id = 2';
   $result = mysql_query($sql);
   $bild = mysql_fetch_row($result);

  Header("Content-Type: image/jpeg");
  echo $bild[0];
        

?>

in eine eigenständige Datei packen muss (z.b. bild.php).
Dann das Bild mit dem Befehl :
HTML:
<script src="bild.php">

aufrufen. Und Schon kann ich das Bild in der Tabelle da hinhauen, wo ich es haben mag.

Gruß

roland
 
Das Bild gehört nicht in die Datenbank, nicht nur weil sie dadurch zu groß wird, sondern weil solche Daten einfach nicht effizient in einer Datenbank ausgelesen werden können (und auch nicht geschrieben). Gib dort den Dateinamen an und binde das Bild damit ein.
Damit verlierst du keine halbe Stunde, um zu analysieren, welchen Header du benötigst (denn image/jpeg ist nicht für jedes Bild der richtige).

Fehlermeldungen sind übrigens dazu da, den Fehler zu verstehen, den man begangen hat. Ohne die Meldung können wir dir nicht helfen. :roll:

Guten morgen.

wie schon gesagt, die Fehlermeldung reiche ich nach. Sitze gerade am Rechner im Büro. Da habe ich kein zugriff auf die Datei :-(
Das mit dem Header habe ich so gelöst, das beim speichern des Bildes in die DB der Header automatisch gespeichert wir. Dafür gibt es dann eine neue Spalte die nennt sich dann img1typ.
Und beim lesen der Bilddatei wird dann auch der Header mit gelesen.
Dafür ändere ich dann die Zeile :
PHP:
Header("Content-Type: image/jpeg");
ab in :
PHP:
Header("Content-Type: $row->img1typ");

Ich würde es auch gerne anders machen. Nur habe ich noch keinen Plan wie ich es machen soll.
Ich wollte erst einen Ordner mit dem Namen Bilder anlegen. Dort sollen dann alle Bilder gespeichert werden.
Nur wie sieht es nun aus, wenn der Name des Bildes schon vergeben ist. Dann wird das vorhandene Bild ersetzt, oder ???
Eigentlich ist der Name der Datei egal. Kann gerne eine fortlaufende Nummer sein.
Nur wie ich das dan hinbekomme, habe ich keinen Plan.

Gruß

Roland
 
Hallo,

leider ist mir nicht bekannt wie groß deine Programmier Erfahrungen sind, daher kann ich nicht beurteilen, ob du ein Problem falsch angehst oder du derzeit ein fortgeschrittenes Problem hast.

Ich geh mal davon aus, dass dir die Basics in HTML fehlen?

Ich möchte dir mal ein mit einem kleinen Beispiel demonstrieren, wie es einfacher wäre die Bilder anzuzeigen.

Datenbank MySQL

Tabelle: angebote

Struktur:

[ id ] [ name ] [ bild ] [ beschreibung ]

[ 1 ] [ Laptop Preisknüller! ] [ laptop_angebot_0513120 ] [ Das Brandneue Intel Octus Maximus... ... ]


Hier der Code womit du es leicht ausliest:

PHP:
<?php
    $sql = mysql_query( 'SELECT `id`, `name`, `bild`, `beschreibung` FROM `angebote` WHERE `id`="1" ' );
    $row = mysql_fetch_assoc( $sql );
?>
    <table>
        <tr>
           <td>Name:</td><td><?=$row[ 'name' ];?></td>
        </tr>
        <tr>
           <td>Beschreibung:</td><td><?=$row[ 'desc' ];?></td>
        </tr>
        <tr>
           <td>Bild:</td><td><img src="<?=$row[ 'bild' ];?>" alt="<?=$row[ 'name' ];?>" /></td>
        </tr>
    </table>

Kurze Erklärung:

Die Funktion mysql_fetch_**** ( **** = assoc oder array oder object ) gibt die genau 1 Zeile, von der SQL-Query die man Ihm gibt, zurück.
In dem Fall das was in der Funktion mysql_query( {Das_Hier} ) angibt.

Die SQL-Query sucht explizit nach der Zeile wo "id" gleich 1 ist. Das ist nur einmal der Fall, also wird nur eine Zeile zurück gelieft, also kein Problem. Lässt man das WHERE `id`= "1" raus, so werden alle Inhalte ausgeben. Beginnend mit der ersten Zeile die gefunden wurde.
Will man daher mehrere Zeilen ausgeben, so kann man das wie folgt ausgeben:

PHP:
 $sql = mysql_query( 'SELECT `id`, `name`, `bild`, `beschreibung` FROM `angebote` );
 while( $row = mysql_fetch_assoc( $sql ) ){
     ?>
      <table>
        <tr>
           <td>Name:</td><td><?=$row[ 'name' ];?></td>
        </tr>
        <tr>
           <td>Beschreibung:</td><td><?=$row[ 'desc' ];?></td>
        </tr>
        <tr>
           <td>Bild:</td><td><img src="<?=$row[ 'bild' ];?>" alt="<?=$row[ 'name' ];?>" /></td>
        </tr>
    </table>
    <hr />

    <?php
 }

Das wär ein Beispiel.
 
Zurück
Oben