dedda: Dynamische Tabellen

Guten Abend,

ich habe eine mysql Datenbank. In der Datenbank habe ich nur eine Spalte. Der Inhalt der Spalte sind Dateinamen von irgendwelchen Bildern.

Ich möchte folgendes erreichen:

Wenn in der Datenbank nur ein Eintrag in ist, soll die Tabelle so aussehen:

1.Zeile:
Bild1

wenn aber in der Datenbank sieben Einträge sind, soll die Tabelle dann so aussehen:

1.Zeile:
Bild1  Bild2  Bild3

2. Zeile:
Bild4  Bild5  Bild6

3. Zeile:
Bild7

Also kurz gesagt, sollen immer drei Bilder prozeile Angzeigt werden... Anfängerkenntnisse in sachen PHP habe ich, sprich Abfragen und etc. sind kein Problem... Mir fehlt ein Ansatz.

Viele Grüße und vielen Dank
dedda

  1. Hello,

    Also kurz gesagt, sollen immer drei Bilder prozeile Angzeigt werden... Anfängerkenntnisse in sachen PHP habe ich, sprich Abfragen und etc. sind kein Problem... Mir fehlt ein Ansatz.

    Zerlege die Aufgabe in Einzelaufgaben und schreibe Funktionen dafür.

    1.  Pfade der Bilder aus der Datenbank holen,
    2.  kontrollieren und in Array speichern und zählen
    3.  Tabellenbreite bestimmen
    4a. Tabellenkopf bauen
        5. Tabellenzeilen bauen ($cols, $_picture_path)
    4b. Tabellenfuß bauen

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. Auch einen guten Abend!

    Ich möchte folgendes erreichen:

    Wenn in der Datenbank nur ein Eintrag in ist, soll die Tabelle so aussehen:

    1.Zeile:
    Bild1

    wenn aber in der Datenbank sieben Einträge sind, soll die Tabelle dann so aussehen:

    1.Zeile:
    Bild1  Bild2  Bild3

    1. Zeile:
      Bild4  Bild5  Bild6

    2. Zeile:
      Bild7

    Mir fehlt ein Ansatz.

    Also ein möglicher Ansatz wäre:

    • Daten aus der DB holen
    • Tabellen-Kopf erstellen (<table><tr>)
    • In einer Schleife (bspw. per foreach, falls du die Daten in ein Array eingelesen hast) die Daten abarbeiten (<td>Bilddaten</td>). Innerhalb der Schleife einen Zähler. Nach jedem Durchlauf prüfen, ob der Zähler bspw. bei 3 (hängt vom Startwert ab) angekommen ist. Falls ja, Tabellen-Reihe schließen (</tr>) und, falls noch weitere Daten vorhanden, neue Reihe (<tr> beginnen. Und weiter in der Schleife - Zähler zurücksetzen nicht vergessen! Falls nein, dann einfach weiter in der Schleife, und auch hier nicht vergessen: Zähler erhöhen.
    • Zum Schluss die aktuelle Reihe und die Tabelle schließen (</tr></table>) - fertig!

    So, oder so ähnlich sollte es recht einfach umzusetzen sein.

    Gruß Gunther

  3. Wenn in der Datenbank nur ein Eintrag in ist, soll die Tabelle so aussehen:

    Auch wenn es nervt... warum eine Tabelle? Ich meine gut... der Ansatz, den ich präsentiere ist ebenso für Tabellen geeignet, aber ich würde ein anderes Block-Element vorziehen, z.B. so:

    <?php  
    $HTML_output = '';  
    include ('BildURLs_aus_Datenbank_holen.php');  
    foreach ($bilder_array as $key => $value) {  
      if ($key % 3 == 0) {  
        $HTML_output.= '<div class="bilderzeile">';  
      }  
      $HTML_output.= '<img alt="Bild'.$key.'" src="'.$value.'" />';  
      if ($key % 3 == 2) {  
        $HTML_output.= '</div>';  
      }  
    }  
    echo ($HTML_output);  
      
    ?>
    

    Oder (schlampiger)

    <?php  
    $HTML_output = '';  
    include ('BildURLs_aus_Datenbank_holen.php');  
    foreach ($bilder_array as $key => $value) {  
      $HTML_output.= '<img alt="Bild'.$key.'" src="'.$value.'" />'.($key % 3 == 2 ? '<br />':'');  
    }  
    echo ($HTML_output);  
    ?>
    

    oder so... man kann auch lustige float&clear-Spiele spielen oder das ganze in Listen packen (ist es eine Bilder-Liste?) vieles ist denkbar.
    Wenn deine Bilder stark unterschiedliche Formate/Größen haben würde ich das in deiner Datenbank dazu speichern, dann kannst du ebenso dynamisch Breite und Höhe der Bilder so anpassen, dass sie zueinander passen.
    Dann könntest du die neue Zeile anstatt nach "drei Bildern" zum Beispiel nach "800 Pixeln" machen oder so... was dann vielleicht drei im Querformat oder vier im Hochformat wären.

    --
    sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
    1. hallo,

      vielen dank für eure unterstüzung.

      gruß
      dedda.