Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Bild mit Textausgabe aus Datenbank!!

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Bild mit Textausgabe aus Datenbank!!

    Hallo,

    ich habe ein Problem und zwar:

    Wir haben ein Script geschrieben, dass es ermöglicht einfach eine .jpg oder .gif - Datei und dazugehörigen Text in eine Datenbank zu speichern.

    Danach haben wir ein weiteres Script geschrieben, dass es ermöglicht dieses Bild aus der Datenbank auszugeben. Das funktioniert alles wunderbar.

    Das Problem liegt darin, dass die Ausgabe nur funktioniert, wenn wir das Bild alleine ausgeben lassen! Sobald wir Bild und Text miteinander ausgeben lassen, funktioniert das Script nicht mehr, weil er als content="image/gif" hat und nicht content="text/html"!!

    Hat damit schon jemand erfahrungen gemacht??

    Bitte um Hilfe

  • #2
    Erstmal:
    http://www.php-faq.de/q/q-db-blob.html

    Wenn du trotzdem unbedingt Bilder in einer DB speichern willst, musst du eben für Text und Bild eine eigene Spalte benutzen.

    Kommentar


    • #3
      danke für die rasche antwort,

      wir wollen dass aber trotzdem durchführen, da wir maximal 4 bilder in der datenbank haben, die relativ klein sind!

      zu deinem vorschlag mit den Spalten, dass haben wir sogar so gelöst, aber die ausgabe funktioniert trotzdem nicht richtig!

      Wie könnte man das lösen, dass er in der Spalte wo er das Bild ausgeben soll den content="image/gif" hat und in der anderen spalte den content="text/html"
      ???

      Kommentar


      • #4
        Versteh ich nicht, wie möchtest du das Bild denn mit dem Text darstellen?

        Code:
        #TEXT AUS DER DB#
        [img]#BILD AUS DER DB#[/img]
        ?

        Kommentar


        • #5
          O.K. das hast du jetzt falsch verstanden,

          wir haben nicht den LINK des Bildes in der DB sondern das gesamte Bild selber!

          Die Ausgabe funktioniert kompliziert über content="image/gif", jetzt kann man da aber nur dieses eine Bild (ohne Text) aus der Datenbank auslesen!

          Hier ein Ausschnitt aus unserem Code zum Eintragen in die DB:



          PHP-Code:
          <?php
          if(!($foto_type == 'image/pjpeg' OR $foto_type == 'image/gif'))
          {
          $fehler.="
          Der Dateityp ist nicht zulässig
          "
          ;}

          }
          if(!
          $fehler)
          {
          $data addslashes(fread(fopen($foto"r"), filesize($foto)));
          $tabellenname='schueler';
          $sql="insert into $tabellenname (klasse, schueler,  dateityp, foto) values ('$klasse', '$schueler',  '$foto_type', '$data')";

          $link mysql_connect("localhost""Benutzer""Passwort");
          mysql_select_db("Tabelle"$link);
          if(!
          mysql_query($sql$link))
          {
          $fehler.="
          Der Upload ist aufgrund eines Datenbankfehler gescheitert, bitte versuchen Sie es später noch einmal
          "
          ;}
          }
          ?>

          Und hier folgt die Ausgabe (NUR DES BILDES OHNE TEXT) dazu:

          PHP-Code:
          <?php

              
          @MYSQL_CONNECT("localhost","Benutzer","Passwort");
              @
          mysql_select_db("Tabelle");
              
          $query "select * from schueler where id='17'";
              
          $result = @MYSQL_QUERY($query);
              
          $data = @MYSQL_RESULT($result,0,"foto");
              
          $typ = @MYSQL_RESULT($result,0,"dateityp");
             
          $kopf="Content-type; ".$typ;
          header($kopf);
          echo 
          $data;

          ?>
          Und hier sollten wir diese Ausgabe des Bildes einbauen:

          PHP-Code:
          <?php

          $abfrage 
          "SELECT * FROM schueler order by id LIMIT $start$eintraege_pro_seite"
          $ergebnis mysql_query($abfrage); 
          while(
          $row mysql_fetch_object($ergebnis)) 
              { 
              echo 
          "<table border = '0',  width='75%' bordercolor='#663333' align='center' cellspacing='0' cellpadding='3' rules='rows' frame='box'>";
              echo 
          "<tr><td width='33%' height='20'><center>".$row->foto."</center></td></tr>";
              echo 
          "<tr><td></td></tr><tr><td width='33%' height='20'>[b]Von links nach rechts:[/b]".$row->schueler."</td></tr>";
              echo 
          "</table>

          "
          ;
             } 


          ?>
          Bei der Variable $row->foto, sollte eigentlich dann die Ausgabe des Fotos geschehen!!

          Verstehst du jetzt unser Problem??

          Kommentar


          • #6
            Zitat von softpoint
            $kopf="Content-type; ".$typ; // <-- 1. ; falsch, : muss hin
            Also ich hab schon verstanden wie du das meinst, ihr aber offenbar nicht
            Denn ein Bild kannst du im Browser nur anzeigen, wenn du eine Datei hast, die den Binär-Code der Datei ausgibt.
            Binär-Code kannst du nicht mit HTML-Code mischen.

            Daher muss eine Datei HTML anzeigen, eine andere den Binärcode.
            Für soetwas musst du also mindestens 2 Dateien haben.

            image.php?id=#ID#
            Diese Datei holt aus der Datenbank den Binärcode der Datei. Dieser lagert offenbar in der Spalte "foto".
            Bevor der Binärcode ausgegeben wird, muss wie ihr (fast) richtig gemacht habt, der MIME-Type des Ausgabe-Streams im header() festgelegt sein.

            ausgabe.php
            Diese Datei holt alle wichtigen Informationen aus der Datenbank, BIS AUF FOTO. Das wird bereits von der image.php übernommen.
            Jetzt könnt ihr einfach einen <img>-Tag schreiben, der das entsprechende Bild anzeigt.

            PHP-Code:
            <?php
            //..
            while($row mysql_fetch_object($ergebnis)) { 
               
            printf('Das ist %s
            '
            $row->schueler);
               
            printf('[img]image.php?id=%s[/img]

            '
            $row->id);
            }
            ?>
            Prinzip verstanden?

            Kommentar


            • #7
              Ja o.k. danke für die rasche und korrekte Antwort!!!!

              Teilweise verstanden!

              Kann man das one weiters einfach so machen, dass man in den <img...> Tag bei src eine PHP-Datei einfügt??
              Wenn ja dann ist im Prinzip schon alles geklärt!!

              Und wie genau sollte man die Datei für das Bild verwenden?

              Wie gebe ich dieser Datei an, welches Bild er aus der Datenbank nehmen soll?

              Inhalt der Datei, ist also nur dieser Code:

              PHP-Code:
              <?php
              @MYSQL_CONNECT("localhost","Benutzer","Passwort"); 
                  @
              mysql_select_db("Tabelle"); 
                  
              $query "select * from schueler where id='17'"
                  
              $result = @MYSQL_QUERY($query); 
                  
              $data = @MYSQL_RESULT($result,0,"foto"); 
                  
              $typ = @MYSQL_RESULT($result,0,"dateityp"); 
                 
              $kopf="Content-type; ".$typ
              header($kopf); 
              echo 
              $data

              ?>
              Habe ich das richtig verstanden??

              So ganz blicke ich noch nicht durch, tut mir leid wenn ich jetzt ein wenig lästig bin!!

              Ein wahnsinn wäre natürlich, wenn du mir de wichtigsten Inhalte dieser Datei (image.php?id=#ID# ) posten könntest, damit ich das leichter verstehe!!

              Danke im Voraus schon!!

              Kommentar


              • #8
                Zitat von softpoint
                Kann man das one weiters einfach so machen, dass man in den <img...> Tag bei src eine PHP-Datei einfügt??
                Ja, so lange diese Datei den gültigen Binärcode für ein Bild enthält.

                Kommentar


                • #9
                  Hallo,
                  du kannst als src für den <img>-Tag irgendeine Datei reinschreiben, solange diese Datei einen dem Browser bekannten/erlaubten Bild-Typ (MIME-Type) plus gültigem Binärcode des übergebenen Bild-Types liefert. Sprich, du kannst eine PHP-Datei übergeben, solang sie ein zum Bild passenden Header liefert.

                  Im Prinzip musst du dein Skript nur dahingehend erweitern, dass du die "17" variabel machst und sie dir mit dem Dateiaufruf schicken läßt.

                  // image.php?id=#ID#
                  Code:
                  if (isset($_GET['id']) && intval($_GET['id']) > 0) {
                    @MYSQL_CONNECT("localhost","Benutzer","Passwort"); 
                      @mysql_select_db("Tabelle"); 
                      $query = "select * from schueler where id='$_GET[id]' LIMIT 1";  // Erweiterung
                      $result = @MYSQL_QUERY($query); 
                      $data = @MYSQL_RESULT($result,0,"foto"); 
                      $typ = @MYSQL_RESULT($result,0,"dateityp"); 
                     $kopf="Content-type; ".$typ; 
                    header($kopf); 
                    echo $data; 
                  } else {
                    // .. eure Entscheidung
                  }
                  Ihr müsst nur wissen was passieren soll, wenn eine falsche oder ungültige ID übergeben wird. Aber denk dran, dass die ausgabe.php davon ausgeht, dass die image.php ein Bild(!) zurückliefert. Ein "print 'Bild gibts nicht'" ist also keine sinnvolle Lösung. Am besten sendet ihr ein Standard-Bild.

                  Kommentar


                  • #10
                    Wow... Danke für die Antworten, super Forum hier!!!

                    O.K. jetzt ist mir nur mehr noch eines unklar...

                    Und zwar lassen wir in der anderen Datei in einer Schleife alle Datensätze ohne Bild ausgeben, wie soll jetzt die eine Datei mit der Bildausgabe wissen, welches Bild zu welchen Datensatz gehört??

                    Muss ich da ein Request oder so ähnlich machen??

                    Was genau macht dieser Auszug: id='$_GET[id]'
                    ?

                    Und wie gebe ich in der Schleife der ausgabedatei an, dass das Bild der id sowieso ausgibt??

                    Sorry für die blöden Fragen =)

                    Danke schon mal!!

                    Kommentar


                    • #11
                      Zitat von softpoint
                      Und zwar lassen wir in der anderen Datei in einer Schleife alle Datensätze ohne Bild ausgeben, wie soll jetzt die eine Datei mit der Bildausgabe wissen, welches Bild zu welchen Datensatz gehört??
                      Du kannst ja die entsprechende ID des Datensatz als URL-Parameter an die Datei übergeben, die das Bild erzeugt.

                      Zitat von softpoint
                      Was genau macht dieser Auszug: id='$_GET[id]'
                      ?
                      Schau dir das hier am besten mal an: http://tut.php-q.net/get.html

                      Zitat von softpoint
                      Und wie gebe ich in der Schleife der ausgabedatei an, dass das Bild der id sowieso ausgibt??
                      Die Frage verstehe ich jetzt nicht.

                      Kommentar


                      • #12
                        Danke f�r die Antwort!

                        Unser Problem ist jetzt nur mehr, dass wir nicht wissen, wie wir die Varbiable in der URL mitgeben lassen!!
                        Wir haben hier schon nachgelesen: http://tut.php-q.net/get.html
                        Aber das verstehen wir nicht ganz!!

                        Also wer k�nnte und das in ganz einfachen S�tzen beibringen wie wir in der zweiten Datei (Bildausgabe) die ID in die URL bringen?? Wenn wir es h�ndisch reinschreiben (image.php?id=9 ) dann funktioniert es schon, d.h. wir brauchen nur mehr noch den quelltext f�r die variablen�bergabe an die url!!!


                        Danke schon im voraus...

                        Kommentar


                        • #13
                          Hey, es funktioniert!!!

                          Danke an alle die Mitgewirkt haben!!

                          Kann aber sein dass noch ein paar Fragen dazu kommen!! =)

                          Kommentar

                          Lädt...
                          X