Bild aus Datenbank erzeugen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bild aus Datenbank erzeugen

    Hallo Leute.

    also ich sitze da schon etwas länger dran und ich komme nicht auf die Lösung.
    Ich weiß ein Bild in die Datenbank zu stopfen ist nicht zu empfeheln sondern nur die URL. Trotzdem möchte ich gerne Favicons in die Datenbank tun. Da ich auch die Größe prüfe werden die nicht alzu groß sein. Also sollte es nicht das Problem sein.

    Nun ich habe erstmal testweise irgendein Bild hochgeladen. Ist alles drinne in der Datenbank. Nun möchte ich das ganz gerne auslesen.

    Wie ich das machen soll weiß ich nicht. Daten wurden mit htmlspecialchars() und addslashes eingegeben und und mit decode und strip ausglesen bzw. in Variable gespeichert. So, nun habe ich
    PHP Code:
    echo '<img src="' $favicon '">'
    eingegben: Hat natürlich nicht geklappt, wäre auch zu schön gewesen um wahr zu sein

    Na ja nun habe ich das ganze So gemacht:
    PHP Code:
    if($favicon != "" && isset($favicon))
                    {
                        echo 
    '<div id="uploadimage"><img src="makeimage.php?id=' $id '"</div>';
                    } 
    die Datei makeimage:
    PHP Code:
    $id $_GET['id'];
    $db DB_CONNECT($DB_HOST$DB_USER$DB_PASSWORT$DB_NAME);
    $abfrage "SELECT seiten.favicon FROM seiten WHERE seiten.id = '$id'";
    $result $db->query($abfrage);
    $result =  $result->fetch_assoc();
    $favicon htmlspecialchars_decode($result['favicon']);
    $favicon stripslashes($favicon);
    $db-close();
    header ("Content-type: image/jpeg");
    $im ImageCreateFromJPEG($favicon);
    ImageJPEG($im); 
    Tja, falsch ist es scheinbar trotzdem

    Was mache ich falsch! Bitte um Hilfe.

    Vielen Dank

    André

  • #2
    Fehlermeldungen? Testausgaben gemacht? Wie sieht das Ergebnis bisher aus?

    Fragen über Fragen

    Grüße
    Nieder mit der Camel Case-Konvention

    Comment


    • #3
      Na ja, eben halt nichts.

      Es ist der Bereich im Imagetag der leer im Opera ist und in Mozilla ein rotes x anzeigt! Sprich es wird angezeigt, dass da ein Bild sein sollte jedoch wird nichts angezeigt.
      AUch wenn ich die Datei einzeln aufrufe klappt das net. id wird übergeben, die Daten existieren.

      Ich bin ja der Meinung, dass ich irgendwas mit dem makeimage falsch gemacht habe.

      Comment


      • #4
        Und Testausgaben? Was gibt
        PHP Code:
        echo '<pre>' print_r($resulttrue) . '</pre'>; 
        aus?
        Wie speicherst du das Bild in der Datenbank?
        Nieder mit der Camel Case-Konvention

        Comment


        • #5
          PHP Code:
          Array
          (
              [
          favicon] => /tmp/phpaA8z4C

          wird ausgegeben.

          Ich speichere das Bild als BLOB ab.
          PHP Code:
          if(isset($_FILES['favicon']['tmp_name']) && $_FILES['favicon']['tmp_name'] != '')
                              {
                                  
          // Hier unbedingt noch mal überprüfen, ob es sich um die richtige Größe etc. handelt!
                                  // Alles andere löschen!
                                  
          $favicon $_FILES['favicon']['tmp_name'];
                                  
          $favicon htmlspecialchars($favicon);
                                  
          $favicon addslashes($favicon);
                              } 
          und hier wird es eingetragen:
          PHP Code:
          $db DB_CONNECT($DB_HOST$DB_USER$DB_PASSWORT$DB_NAME);
                              
          $select "INSERT INTO seiten VALUES ('" $id "', '" $name "', '" $menuname ."', '" 
          $menu "', '" $inhalt "',
           '" 
          $favicon "', '" $meta_name ."', '"
           
          $meta_keys ."', '" $meta_author "', '" $meta_beschreibung "', '"
           
          $meta_titel ."','" $guestbook ."')";
                              
          $doIt $db->query($select); 
          André
          Last edited by aSkInG; 29-05-2008, 23:08.

          Comment


          • #6
            Nimm mal das imagecreatefromjpeg und imagecreate raus. Hast du die Datein tatsächlich in binärer Form in der Datenbank, sollte es echo $result['favicon'] heissen.

            Und bitte Code umbrechen. Der erzeugt eine schreckliche Überbreite.
            Nieder mit der Camel Case-Konvention

            Comment


            • #7
              Okay, ich habe jetzt anstelle
              PHP Code:
              $id $_GET['id'];
              $db DB_CONNECT($DB_HOST$DB_USER$DB_PASSWORT$DB_NAME);
              $abfrage "SELECT seiten.favicon FROM seiten WHERE seiten.id = '$id'";
              $result $db->query($abfrage);
              $result =  $result->fetch_assoc();
              $favicon htmlspecialchars_decode($result['favicon']);
              $favicon stripslashes($favicon);
              $db-close();
              header ("Content-type: image/jpeg");
              $im ImageCreateFromJPEG($favicon);
              ImageJPEG($im); 
              folgendes stehen:
              PHP Code:
              include("../config/config.php");//Nur da, damit test durchgeführt werden kann
              include("../includes/functions.php");//auch nur zum test da
              $id $_GET['id'];
              $db DB_CONNECT($DB_HOST$DB_USER$DB_PASSWORT$DB_NAME);
              $abfrage "SELECT seiten.favicon FROM seiten WHERE seiten.id = '$id'";
              $result $db->query($abfrage);
              $result =  $result->fetch_assoc();
              $favicon htmlspecialchars_decode($result['favicon']);
              $favicon stripslashes($favicon);

              echo 
              $result['favicon'];
              echo 
              "<br>" $favicon;
              echo 
              "<br>" '<img src="'.$favicon.'">'
              leider zeigt die ausgabe zweimal den Inhalt der Variable, aber nicht das Bild und nr.3 zeigt wieder ein Bildbereich an, ohne Bild

              André

              Comment


              • #8
                Original geschrieben von aSkInG
                [B]
                PHP Code:
                Array
                (
                    [
                favicon] => /tmp/phpaA8z4C

                Dann hast du nicht den Inhalt der hochgeladenen Datei,sondern nur ihren Namen im temporären Uploadverzeichnis des Servers gespeichert.

                Comment


                • #9
                  ok, das kann sein. Das kann sogar sehr gut sein

                  Wie LADE ich denn explizit die datei hoch?

                  André

                  Comment


                  • #10
                    move_uploaded_file und Konsorten.
                    Beispiele gibts im PHP-Handbuch im Kapitel "Uploads".

                    Comment


                    • #11
                      Danke, werde ich mal sehen.
                      Aber mit move_uploaded_files kann ich die Datei auch in die Datenbank kopieren?
                      Das wusste ich noch nicht.

                      Danke nochmals

                      André

                      Comment


                      • #12
                        Nein kopieren nicht, aber in dein Verzeichnis holen, damit du sie weiterverarbeiten kannst.

                        Das Übernehmen in die Datenbank machst du dann mit fopen() und fread().

                        Comment


                        • #13
                          Ok, also ich schiebe die Datei erstmal in einen Ordner. Dann schiebe ich die datei mit fopen und fread in die Datenbank? Und anstelle einer Datei gebe ich dann die Datenbank an?

                          Sorry, aber ich verstehe das gerade nicht. Habe auch schon im Handbuch nachgesehen. Aber ich glaube ich bin auch zu müde.

                          Wenn du vielleicht so lieb wärst, könntest du mir das dann einmal erklären? Vielen Dank.

                          André

                          Comment


                          • #14
                            Nein, du mußt das Bild mit fread() auslesen und dann mit einem mysql_query() ganz normal mit "INSERT INTO...." in ein Datenbankfeld schreiben.

                            Comment


                            • #15
                              Gut, also soweit klappt alles. Habe nun wirklcih das Bild hochgeladen.

                              Nun habe ich aber noch Probleme mit dem auslesen.
                              Ich habe nur die Variable ausgegeben im script makeimage.
                              Ich bekomme auch schon ein Bereich angezeigt der die richtige größe hat, auch die Farbtiefe von 8bits wird mir angezeigt und auch, dass es mit adobe erstellt worden ist.

                              Soweit so gut. Aber das Bild ansich wird mir NICHT angezeigt!

                              Woran mag das liegen?

                              Danke

                              André

                              Comment

                              Working...
                              X