Einfügen eines Bildes in eine DB

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einfügen eines Bildes in eine DB

    Hi,
    ich möchte ein Bild in eine Datebank einfügen und habe da ein Problem:

    Mein Quellcode:

    $datei = "1.jpg";
    //$datei = "test.txt";

    $fp_read = fopen($datei,'rb') or die("Datei kann nicht geöffnet werden!");
    $bild = fread($fp_read , filesize($datei)) or die('Cannot read.');
    echo $bild;
    fclose($fp_read);

    $insert = "INSERT INTO pic_galerie (id,name,hoehe,breite,data,datum,genre) VALUES ('1','1.jpg','133','100','$bild','2002-08-10','BLA')";
    $ergebnis = mysql_query($insert);
    $rueck_ins = mysql_affected_rows();
    echo $rueck_ins;

    Wenn ich die Variante mit der test.txt nehme, wird der Inhalt in die DB eingefügt, und wenn ich die andere Variante nehme (1.jpg) wird nichts in die DB eingefügt. Warum ?
    Manus manum lavat.

  • #2
    wie ist die datenbank den formatiert. du musst in der datenbank schon angeben, dass es sich um ein bild handelt.

    bin auch noch anfänger, lass den kopf nicht hängen

    Kommentar


    • #3
      Hi,
      Danke hat sich erledigt - es lag an addslashes

      Nun ein anderes Problem. Ich habe den Binärcode des Bildes jetzt in der DB und möchte das Bild aus der DB anzeigen. Den Binärcode hole ich ein per Select-Befehl eine Variable - aber wie wird das Bild dann angezeigt ?

      Gruß
      Manus manum lavat.

      Kommentar


      • #4
        nimm beim insert/update lieber mysql_escape_string statt addslashes.

        Speicher den Mime-Typ noch in der DB

        PHP-Code:
        $res mysql_query("select mime, data from pic_galerie");
        list(
        $mime$data) = mysql_fetch_row($q);
        header("Content-Type: image/$mime");
        echo 
        $data;
        # wenn magic_quotes_runtime an ist: strip_slashes($data) 
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Hallo Titus,
          habe deine Tipps angewendet - bekomme jetzt aber eine Fehlermeldung, die so lautet:

          Warning: Cannot add header information - headers already sent by (output started at /is/htdocs/13209/www.kirchel.de/minolta/paddeln/eingabe.php:8) in /is/htdocs/13209/www.kirchel.de/minolta/paddeln/eingabe.php on line 15

          Mein Quelltext:

          <html>
          <head>
          <title>Picture Galerie</title>
          <link rel=stylesheet type="text/css" href="css/pics.css">
          </head>
          <body bgcolor="#ffffff">
          PHP-Code:
          <?
              @mysql_pconnect ("xxxxxxxxxxx","xxxxxxx","xxxx") or die ("Could not connect");
              @mysql_select_db ("kirchel_de") or die ("Datenbank zur Zeit nicht verfuegbar");
              
              $res = mysql_query("SELECT mime, data FROM pic_galerie where id = 1");
              list($mime, $data) = mysql_fetch_row($res);    
              header("Content-Type: image/$mime");
              echo $data;
              mysql_close();                
          ?>
          </body>
          </html>

          Wo sende ich denn den Header schon ?

          Gruß
          Manus manum lavat.

          Kommentar


          • #6
            Der Header wird automatisch vom Server gesendet, weil du schon eine HTML-Ausgabe machst.

            <html>
            <head>
            <title>Picture Galerie</title>
            <link rel=stylesheet type="text/css" href="css/pics.css">
            </head>
            <body bgcolor="#ffffff">
            Du solltest das Bild lieber über ein externes Script "generieren"

            also eine datei "bild.php" anlegen. Da kommt dann dein PHP-Code für das Bild rein.

            Und dann wird in die "Picture Galerie" das bild mit

            <img src=bild.php?id=$bildid>

            eingebunden.

            Kommentar


            • #7
              Hi,
              ganz verstehe ich das noch nicht ...

              Meine html-Datei sieht dann so aus:

              <html>
              <head>
              <title>Picture Galerie</title>
              </head>
              <body bgcolor="#ffffff">
              <img src="bild_gen.php?id=1">
              </body>
              </html>

              Meine bild_gen.php sieht so aus:

              PHP-Code:
              <?
                  @mysql_pconnect ("xxxxxxxxxxx","xxxxxxx","xxxx") or die ("Could not connect");
                  @mysql_select_db ("kirchel_de") or die ("Datenbank zur Zeit nicht verfuegbar");
                  
                  $res = mysql_query("SELECT mime, data FROM pic_galerie where id = $id");
                  list($mime, $data) = mysql_fetch_row($res);    
                  header("Content-Type: image/gif");
                  $data = stripslashes($data);
                  mysql_close();                            
              ?>
              Leider wird das Bild nicht angezeigt - und wenn ich auf den broken link gehe, steht dort als Eigenschaft: Type not available - was mache ich falsch ???
              Manus manum lavat.

              Kommentar


              • #8
                Also die HTML-Datei ist schon mal korrekt!

                Ist die bild_gen.php so, wie se da steht, oder kommt da noch was zu, z.B. Get Vars oder so?

                Kommentar


                • #9
                  Sie ist so, wie sie da steht
                  Manus manum lavat.

                  Kommentar


                  • #10
                    Für mal bitte dir bild_gen.php direkt im browser aus.
                    -> Gibt der nen Fehler aus? vielleicht DB?

                    Wenn nicht, dann kommentier mal den header da raus.
                    -> Und jetzt?

                    Was macht der dann?

                    Wo wird denn die $id definiert?
                    PHP-Code:
                    $res mysql_query("SELECT mime, data FROM pic_galerie where id = [B]$id[/B]"); 
                    Vielleicht mal mit GetVars?

                    Kommentar


                    • #11
                      Original geschrieben von TobiaZ
                      PHP-Code:
                      $res mysql_query("SELECT mime, data FROM pic_galerie where id = [B]$id<b>Für mal bitte dir bild_gen.php direkt im browser aus.
                      -> Gibt der nen Fehler aus? vielleicht DB?

                      Es wird kein Fehler ausgegeben !

                      Wenn nicht, dann kommentier mal den header da raus.
                      -> Und jetzt?

                      Wie kommentiere ich den Header aus  <img src="
                      https://www.php-resource.de/forum/core/images/smilies/confused.gif" border="0" alt="" title="Confused" smilieid="11" class="inlineimg" />

                      Was macht der dann?

                      Wo wird denn die $id definiert?</b>"); 
                      id ist ein Feld in der DB

                      Vielleicht mal mit GetVars? [/B]
                      Wie geht das mit GetVars?

                      Gruß
                      Manus manum lavat.

                      Kommentar


                      • #12
                        $id = $HTTP_GET_VARS[id];

                        Kommentar


                        • #13
                          Kein Wunder, dass da nix kam. Der hat in der DB nach nem Eintrag id = "" NULL gesucht. Den gibts nicht, also hat er auch nichts ausgeben können.

                          Jetzt sind wir aber n Schritt weiter, was macht der jetzt?

                          PS: Einige Leute könnten sich an sowas mal ein beispiel nehmen

                          Kommentar


                          • #14
                            Original geschrieben von TobiaZ
                            Kein Wunder, dass da nix kam. Der hat in der DB nach nem Eintrag id = "" NULL gesucht. Den gibts nicht, also hat er auch nichts ausgeben können.

                            Wo hast Du das denn gesehen ?
                            Wenn ich mir die ID anzeigen lasse ist da aber z.B. eine 2

                            Jetzt sind wir aber n Schritt weiter, was macht der jetzt?

                            PS: Einige Leute könnten sich an sowas mal ein beispiel nehmen
                            Manus manum lavat.

                            Kommentar


                            • #15
                              War die zwei auch da, bevor du getvars gemacht hast?

                              Kommentar

                              Lädt...
                              X