Zudila AG

Webseiten-Erstellung
Webseiten-Programmierung
Webseiten-Wartung
8057 Zürich
Tel: +41 44 310 14 25
Fax: +41 44 310 14 26
Mob: +41 79 691 87 58
vCard, Skype: juergzuerich Skype: juergzuerich

PHP & MySQL: Tabellenspalten v1.2



Browser: Firefox!
Umfrage

Hat Ihnen dieses Script geholfen?

ja

teilweise

wenig

nein



Tabellenspalten aus MySQL füllen

Oft sollten Tabellen aus Datenbankabfragen gefüllt werden. Dabei stellt sich das Problem, wie soll der Spaltenwechsel erstellt werden, insbesondere wenn der Datenbankinhalt ändert und die Tabelle immer noch richtig dargestellt werden soll?
Das folgende Beispiel verdeutlicht die Fragestellung.

Beispiel

Titel der Fotos
Foto 1
Text 1
Foto 2
Text 2
Foto 3
Text 3
Foto 4
Text 4
Foto 5
Text 5
Foto 6
Text 6
Foto 7
Text 7
 

Es gibt mehrere Lösungsansätze. Der Schönste und Einfachste bedient sich der mathematischen Funktion Modulo.
Das bedeutet: 10 Modulo 3 ergibt 1, oder: 10 geteilt durch 3 ergibt den Rest 1.
Damit lassen sich die Reihenumbrüche am leichtesten berechnen.

Das folgende Script enthält die entscheidende Passage aus einer entsprechenden Webseite.
Beispielhaft ist der Code für 5 Spalten erstellt. Die Anpassung an eine beliebige Spaltenzahl ist erklärt.


Code Tabellenspalten

PHP & MySQL: Tabellenspalten v1.2

  1. ...
  2.  
  3. <table width="100%">
  4.   <colgroup>
  5.     <col width="20%"/>
  6.     <col width="20%"/>
  7.     <col width="20%"/>
  8.     <col width="20%"/>
  9.     <col width="20%"/>
  10.   </colgroup>
  11.   <tr><th colspan="5"><h2>Sub-Titel</h2></th></tr>
  12.   <tr>
  13. <?php
  14. // Verbindung mit xy für Einträge anzeigen
  15. $query = "SELECT * FROM xy " ;
  16. $result = mysql_query($query,$conn);
  17. $num = mysql_num_rows($result);
  18. for ($i = 0; $i < $num; $i++){
  19.   $row = mysql_fetch_array($result);
  20.  
  21.   // Modulo ermitteln zur Tabellendarstellung
  22.   $rest = $i % 5 ;
  23.  
  24.   // die Werte aus der Datenbank
  25.   echo '
  26.  <td>
  27.    '.$row['bild'].''.$row['text'].'
  28.  </td>
  29.  ' ;
  30.   // Kommt neue Spaltenreihe?
  31.   if ( $rest == 4 ) {
  32.     echo '</tr>' ;
  33.     if ( $i != $num - 1 ) {
  34.       echo '<tr>';
  35.     }
  36.   }
  37. }
  38.  
  39. // Angefangene Reihe mit Leerzellen füllen
  40. switch ($rest) {
  41.   case 0:
  42.     echo '<td colspan="4">&#160;</td></tr>';
  43.     break;
  44.   case 1:
  45.     echo '<td colspan="3">&#160;</td></tr>';
  46.     break;
  47.   case 2:
  48.     echo '<td colspan="2">&#160;</td></tr>';
  49.     break;
  50.   case 3:
  51.     echo '<td>&#160;</td></tr>';
  52.     break;
  53. }
  54. ?>
  55.  
  56.   </tr>
  57. </table>
  58.  
  59. ...
  60. <!--
  61. Quelle Script: http://www.zudila.ch/scripte/php_tabellenspalten.php
  62. Zudila Tabellenspalten v1.2, GPL
  63. -->
  64.  
Script Update: 29.04.08

Erklärungen zum Code

Zu den Zeilen:

1: Der Code vor der Tabelle.

3: Der Tabellenanfang wird definiert.

4 - 10: Mit "colgroup" und "col" definieren wir die Tabelle fünfspaltig mit einer Spaltenbreite von je 20%. Diese Methode ermöglicht dem Browser eine sofort richtige Spaltenbreite zu erkennen, dadurch erfolgt der Seitenaufbau schneller. Zusätzlich muss nun nicht in jeder Zelle die Breite angegeben werden, was den Code verkürzt.

11: Titel der Tabelle.

15: Die zu erstellende Definition des MySQL Zugriffes.

16: Die Variable "$conn" müsste so definiert sein, wie unter MySQL Datenbankzugang erklärt.

17: Die Anzahl der entsprechenden Datenbankeinträge wird ermittelt.

18 - 33: Die Schleife mit den Eintragungen wird in die Tabelle gestellt.

22: Der erste entscheidende Punkt. Mit der PHP-Funktion "%" ermitteln wir den Rest (Modulo). Dazu wird die Laufvariable "$i", die pro Schleifendurchgang je um eins erhöht wird, durch die Spaltenzahl 5 geteilt und der Rest in die Variable "$rest" abgespeichert.

25 - 29: Hier folgt die Ausgabe mit dem Inhalt der einzelnen Tabellenzellen.
Beispielhaft wurden zwei mögliche Werte angegeben.

31 - 36: Der zweite entscheidende Punkt. Nun wird geprüft, ob der Modulowert "$rest" gleich 4 ist. Ist dies der Fall, wird das Ende einer Tabellenreihe eingefügt.
Der Wert 4 muss eins kleiner sein als die Spaltenzahl.

33 - 35: Muss eine weitere Tabellenreihe eingefügt werden?

Damit würde unsere Tabelle eigentlich bereits funktionieren. Um aber eine validierbare richtige Tabelle zu erhalten, müssen in der angefangenen Tabellenreihe noch die nicht vorhandenen Leerzellen erstellt werden.

40 - 53: Wir bedienen uns der PHP-Funktion "switch". Da der Modulo-Wert den Wert von 0 - 3 haben kann, prüfen wir mit "case" entsprechend und geben den passenden HTML-Text mit "echo" aus.
Zudem wird die Tabellenreihe beendet.

42: Beispielhaft könnten hier nicht die erforderlichen 4 Zellen mit "colspan" zusammengefasst werden, sondern einzeln ausgegeben werden.


Copyright © 1998 - 2010, Zudila AG, CH 8057 Zürich Diese Seite (www.zudila.ch/scripte/php_tabellenspalten.php) wurde aktualisiert: 23.10.08

Besucher heute: 159 Seitenaufrufe heute: 503 gerade online: 4
Besucher gestern: 220 Seitenaufrufe gestern: 470 max. online: 135
Besucher pro Tag: 206,52 Seitenaufrufe pro Tag: 680,50 Eigene Seitenaufrufe: 1
Valid XHTML 1.0! Valid CSS! Valid WCAG 1.0, WAI-AAA! ICRA Best viewed with any browser

www.zudila.ch   info@zudila.ch

nach oben
Herr Jürg Dieter Lüthard Jürg D. Lüthard Zudila AG www.zudila.ch Krokusweg 6 Switzerland 8057 Zürich Zürich +41 44 310 14 25 +41 79 691 87 58 +41 44 310 14 26
N 47º 24.2416 O 8º 32.9866
business Webseiten erstellen, programmieren, warten /
Web pages provide, program, wait /
Les pages Web fournissent, programment, attendent