Bild aus Datenbank erzeugen

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

  • 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

    Kommentar


    • #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.

      Kommentar


      • #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

        Kommentar


        • #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é
          Zuletzt geändert von aSkInG; 30.05.2008, 00:08.

          Kommentar


          • #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

            Kommentar


            • #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é

              Kommentar


              • #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.

                Kommentar


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

                  Wie LADE ich denn explizit die datei hoch?

                  André

                  Kommentar


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

                    Kommentar


                    • #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é

                      Kommentar


                      • #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().

                        Kommentar


                        • #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é

                          Kommentar


                          • #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.

                            Kommentar


                            • #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é

                              Kommentar

                              Lädt...
                              X