Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Bilder aus mysql Datenbank mit php auslesen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Bilder aus mysql Datenbank mit php auslesen

    Hallo,

    hab folgendes Problem, möchte mehrere Bilder + Text aus der Datenbank auslesen.
    Bei dem unteren code bekomme ich aber nur Binärcode ausgegeben.
    Wäre nett wenn mir einer helfen könnte.

    PHP-Code:
    <?php

    error_reporting
    (E_ALL);

    function 
    dbimages($land)
    {

        
    $mysqli = new mysqli('localhost','user','password','datenbank');

        if(!
    $mysqli)
        {
            die(
    'Es war keine Verbindung zur Datenbank möglich');
        }

        if(
    $mysqli_stmt $mysqli->stmt_init())
        {
            
    $sql = ('SELECT t1.imgdata, t1.imgtype, t2.user FROM images AS t1, user_tab AS t2 WHERE t1.imagename =\''.$land.'\' AND t1.imagename = t2.land '); 
            
            
    $result mysqli_query($mysqli,$sql);
        
            echo 
    '<table border="0">';
            while(
    $row mysqli_fetch_assoc($result))
            {
                
    header("Content-type: {$row['imgtype']}");
                echo 
    '<tr>';
                foreach(
    $row as $val)
                {
                    echo 
    '<td>'.$val.'</td>';
                }
                echo 
    '</tr>';
            }
            echo 
    '</table>';

        }
        else
        {
            die(
    'Das PS-Objekt konnte nicht erzeugt werden.');
        }
    $mysqli->close();
    }

    $land "germany"

    dbimages($land);


    ?>
    Gruß xyw


  • #2
    Kein Wunder...
    So funktioniert das nicht !
    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

    Kommentar


    • #3
      Du kannst nicht einfach die Bilddaten mitten in einem HTML-Dokument ausgeben - klar, dass da nur murks rauskommt. Entweder ist der Content-Type nunmal text/html oder er ist image/irgendwas - mischmasch geht nicht.
      Du brauchst also eine zweites PHP-Script, dass dir die Bilder ausgibt. Dann kannst du dieses ganz normal über <img src="http://www.php.de/php-einsteiger/..." /> einbinden...


      (ganz abgesehen davon: Dein Code hat ein paar unnötige und ein paar unschöne Zeilen )
      Create your own quiz show.

      Kommentar


      • #4
        Hallo,
        eine andere alternative wäre es das Bild erst in einer Temp Datei zwischen zu speichern.
        PHP-Code:
        $location './img/tmp.png';
        $file fopen($location"a+");
        fwrite($file$img);
        fclose($file);
        echo 
        '<img src="' $location '">'
        $img entspricht dann deinem Abruf aus der Datenbank.
        Mfg Nightmares

        Kommentar


        • #5
          hallo,

          ein einziges Bild kann ich auslesen.
          Mein Problem ist halt das es immer mehrere Bilder + Text sein werden.

          Als Ergebniss sollte in einer Tabelle:

          1. Bild + User_Name
          2. Bild + User_Name
          3. Bild + User_Name
          usw...

          erscheinen.

          PHP-Code:
          seite1.php
          ... 
          //functionsaufruf
          dbimages('germany');
          ... 

          PHP-Code:
          seite2.php

          function dbimages($land)
          {
              
          $mysqli = new mysqli('localhost','user','password','datenbank');

              if(!
          $mysqli)
              {
                  die(
          'Es war keine Verbindung zur Datenbank möglich');
              }

              if(
          $mysqli_stmt $mysqli->stmt_init())
              {
                  
          $sql = ('SELECT t1.imgdata, t1.imgtype, t2.user FROM images AS t1, user_tab AS t2 WHERE t1.imagename =\''.$land.'\' AND t1.imagename = t2.land '); 
                  
                  
          $result mysqli_query($mysqli,$sql);
              
                  {
                        ... 
          wie muss der Code hier lauten.... 
                  }
              }
              else
              {
                  die(
          'Das PS-Objekt konnte nicht erzeugt werden.');
              }
          $mysqli->close();

          Wäre nett wenn mir Jemand mit Code Beispielen helfen könnte.

          Gruß xyw

          Kommentar


          • #6
            Zitat von xyw Beitrag anzeigen
            ein einziges Bild kann ich auslesen.
            Mein Problem ist halt das es immer mehrere Bilder + Text sein werden.
            Warum ist das ein Problem ...?

            Du weißt, wie Bilder in HTML-Dokumente eingebunden werden?
            Gut, dann brauchst du doch nur das zu machen - und dabei jeweils als Quelle ein Script angeben, welches die Daten des gewünschten Bildes ausliest und ausgibt.


            Dass Bilder in Datenbanken eher weniger gut aufgehoben sind, sollte dir aber klar sein.

            Kommentar


            • #7
              hallo,

              aber ich weiß ja vorher nicht wieviele Bilder erscheinen werden.

              Ich will ja jetzt nicht für jedes Bild das erscheinen kann:

              <img src="....">

              ausführen!

              Die Ausgabemenge ändert sich ja hin und wieder wenn sich z.B.
              neue User eingetragen haben.

              Kommentar


              • #8
                Ansatz

                Ich würde das ganze etwas anders aufbauen.
                Voralledem du hast eine Tabelle die Images heißt und bennenst die Felder nochmal mit "bild". Ich garantiere nicht dafür, dass das Script da unten Funktioniert, von der Idee her sollte es aber. Die Bilder gibst du einfach per Schleife eins nach dem anderen aus und dazu die anderen Daten.

                PHP-Code:
                // tabellenstruktur für images
                // id (primary index, auto increment) | data (varchar) | type (varchar) | country (varchar) | name (varchar)


                // funktion
                function img_table($country) {
                    
                $mysqli = @new mysqli('localhost','user','password','datenbank');
                    
                    
                $query $mysqli->query("SELECT * FROM images WHERE country='$country'");
                    
                    echo 
                '<table';
                    
                    while (
                $row $query->fetch_object()){
                        
                $location './img/tmp.' $row->type;
                        
                $file fopen($location"a+");
                        
                fwrite($file$row->data);
                        
                fclose($file);
                        
                        echo 
                '<tr>
                                <td>
                                    <img src="' 
                $location '">
                                </td>
                                <td> Sonstige Felder zb. name oder Nutzer ' 
                $row->name ' </td>
                            </tr>'
                ;
                    }
                    echo 
                '</table>';

                Kommentar


                • #9
                  Hallo,

                  @Nightmares, riesen DANKE, es geht, genau das hab ich gesucht.

                  Gruß xyw

                  Kommentar


                  • #10
                    Kein Ding, konnte es nur gerade leider nicht testen.

                    Kommentar


                    • #11
                      Damit werden jetzt also jedes Mal die Bilddaten aus der DB gelesen, und auf Platte geschrieben - was sollen sie dann überahupt noch in der DB ...?

                      Kommentar


                      • #12
                        Gute Frage. Eig. gehören Bilder auch nicht in eine Datenbank... andererseits musst du um das Bild auszugeben es irgentwo einmal als Bild zwischenspeichern. (Du könntest das Bild auch dynamisch generieren, PHP-Datei die du im <img src="bild.php?parameter=xxx> aufrufst und dann mit Content-type: <was auch immer> die Bilder ausgeben... (ok ich geb zu das wäre ne bessere Möglichkeit).

                        Kommentar

                        Lädt...
                        X