tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
415
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    smyle smyle ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    217
    Hallo ich habe folgende Tabelle,
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    CREATE TABLE IF NOT EXISTS `accounts` (
    `ID` INT(11) NOT NULL AUTO_INCREMENT,
    `username` VARCHAR(50) DEFAULT NULL,
    `password` VARCHAR(50) DEFAULT NULL,
    `imagename` VARCHAR(30) DEFAULT NULL,
    `imagetype` VARCHAR(30) DEFAULT NULL,
    `imagesize` INT(11) DEFAULT NULL,
    `imagecontent` mediumblob,
    `session` VARCHAR(32) DEFAULT NULL,
    `aenderung` VARCHAR(50) NOT NULL,
    PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=81 ;

    und folgender php Code:

    HTML-Code:
    <?php
    include '..\..\lib\mysql.inc.php';
    
    //$id = $_GET['id'];  
    $id = "1";
    
    $query = mysql_query("SELECT * FROM `accounts` WHERE ID='".$id."'");
    $row = mysql_fetch_array($query);
    $content = $row['imagecontent'];
    
    header('Content-type: image/jpg');
         echo $content;
    
    ?>
    <html>
    <head></head>
    <body>
    <?php
    echo "<img src='show_image.php?id=1' width='150px'/>";  
    ?>
    </body>
    </html>
    Ich kann das Bild mit echo $content am bestehenden Ort ausgeben.

    Wenn ich jedoch das $content im Body ausgeben möchte, funktioniert das nicht. Ich erhalte immer folgende Meldung:

    Die Grafik „http://localhost/projekt1/management...how_image.php“ kann nicht angezeigt werden, weil sie Fehler enthält.


    Wie ihr im Code sehen könnt habe ich es auch schon mit img versucht. Hat aber nichts gebracht. Wisst ihr warum das so ist?

    Ich habe auch schon verschiedene Tutorials aus dem Internet versucht.
    Auch habe ich sehr viele Informationen zu diesem Thema gefunden, aber leider hat keine funktioniert.
    Ich weiss leider nicht mehr wo suchen und was versuchen.

    Was kann ich in meinem Code ändern, damit ich das Bild im Body ausgeben kann?

    Danke im Voraus für die Hilfe

    Gruss
    Smyle :-*
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    du kannst das Bild nicht direkt im Body ausgeben, das geht so nicht. Du kannst im Body auf ein Bild referenzieren, jedoch nicht direkt ausgeben.

    Teile deinen Code in 2 Dateien auf, dann gehts:
    PHP-Code:
    <?php
    // show_image.php
    include '..\..\lib\mysql.inc.php';

    //$id = $_GET['id'];  
    $id "1";

    $query mysql_query("SELECT * FROM `accounts` WHERE ID='".$id."'");
    $row mysql_fetch_array($query);
    $content $row['imagecontent'];

    header('Content-type: image/jpg');
    echo 
    $content;
    ?>
    HTML-Code:
    <!-- ansicht.html -->
    <html>
    <head></head>
    <body>
    <img src="show_image.php?id=1" width="150px" />
    </body>
    </html>
    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    smyle smyle ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    217
    Hallo

    Ich habe nun das
    HTML-Code:
    <img src="show_image.php?id=1" width="150px" />
    in einer anderen Datei eingefüht. Welche sich im selben Ordner befindet wie die Show_image.php Datei. Auf der Homepage zeigt es mir zwar keinen Fehler mehr an (denn vorher hat es mir immer irgendwelche Zeichen angezeigt), aber auch kein Bild. Irgendetwas ist noch falsch.

    Muss man die schow_image.php im Header noch über include verbinden oder reicht das nur wenn ich das als img angebe?

    Mir ist noch aufgefallen:

    Im IE wenn ich den direkten Pfad zur show_image Datei eingebe, dann fragt es mich ob ich es öffnen oder speichern möchte.
    Wenn ich auf öffne gehe, dann öffnet sich ein neuer IE Browser und das Bild wir angezeigt. Jedoch ist der Link der aus den Temporay Internet Files und nicht mein show_image Link.

    Wenn ich den direkten Pfand im Firefox eingebe, dann wird das Bild direkt angezeigt.

    Vielleicht hilft dieses Wissen etwas.
    Geändert von sheel (22.11.11 um 12:11 Uhr) Grund: Doppel
     

  4. #4
    smyle smyle ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    217
    Konnte das Problem lösen, war ein Fehler im Pfad. Habe jedoch ein anderes Problem. Da nicht alle Zeilen ein Bild haben, möchte ich einen Platzhalter setzten.
    Das heisst wenn das $Conntent Null ist (denn in der Datenbank ist es NULL) dann soll es ein anderes Bild, welches ich in meinem Ordner habe, übernehmen.

    Wie kann ich das machen?

    Ich habe es mit folgendem Code versucht, hat aber nicht funktioniert
    PHP-Code:
    <?php
    include '..\..\lib\mysql.inc.php';

    $id $_GET['id'];  
    //$id = "1";

    $query mysql_query("SELECT * FROM `accounts` WHERE ID='".$id."'");
    $row mysql_fetch_array($query);
    $content $row['imagecontent'];

    header('Content-type: image/jpg');
     
    //echo $content;
     
     
    if($content === NULL)
     {
      echo
    "NEIN";
     }
     else
     {
       echo 
    $content;
     }

    ?>
     

  5. #5
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    dein Ansatz ist zwar richtig, aber dein Codeschnipsel oben funktioniert so nicht. Text ist kein Bild, daher wird auch nichts angezeigt.

    Über die "header()" Zeile teilst du dem Browser mit: "Achtung, hier kommt ein Bild!". Daher ist das "echo" ein paar Zeilen weiter unten falsch / ungültig, da dies ja ein Text und kein Bild ist.

    Im if-Teil musst du also dein Alternativ-Bild auslesen und ausgeben. Hierfür kannst du die Funktion readfile() verwenden.

    Beispiel:
    PHP-Code:
    if($content == NULL) {
      
    readfile("alternativ.jpg");
    } else {
      echo 
    $content;

    //Edit: Noch ein Verbesserungsvorschlag um dich gegen SQL-Injection abzusichern:
    PHP-Code:
    // entweder: (Mein Favorit wenn eine Zahl erwartet wird)
    $id intval($_GET['id']);

    // oder weiter unten: (Alternativ, auch für Strings gültig)
    $query mysql_query("SELECT * FROM `accounts` WHERE ID='"
               
    mysql_real_escape_string($id) . "'"); 
    Gruß
    BK
    Geändert von Bratkartoffel (22.11.11 um 13:08 Uhr) Grund: Siehe edit-Teil
    smyle bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  6. #6
    smyle smyle ist offline Mitglied Gold
    Registriert seit
    Jun 2008
    Beiträge
    217
    Supersache hat funktioniert Danke
     

Ähnliche Themen

  1. Background-image im Body soll bei hover wechseln
    Von knutkowalski im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 20.08.09, 13:25
  2. Image Typ ausgeben
    Von partyspezial im Forum PHP
    Antworten: 3
    Letzter Beitrag: 01.12.06, 19:24
  3. Alles vor <body> u. nach </body> löschen
    Von online-markus im Forum PHP
    Antworten: 3
    Letzter Beitrag: 05.03.05, 14:20
  4. RegEx-Hilfe Nur BODY einer HTML ausgeben
    Von Act of Fate im Forum PHP
    Antworten: 8
    Letzter Beitrag: 20.08.04, 12:03
  5. Antworten: 2
    Letzter Beitrag: 19.07.01, 11:11