Quellcode für Tabelle 4

« zurück zur Ausgabe

PHP-Code


<?php
// Zahlen in Tabelle schreiben

// Einbindung der Templateklasse:
require_once("pb-tpl.php");
// Instanz der Klasse erzeugen:
$t = new pb_tpl("templates/tabelle4.tpl");

//nur Vorbereitung ==================================
// Tabellendaten generieren
// Tabelle mit 10 * 10 Zahlen von 1 - 100;
$data_arr = array();
$tmp_arr = array();
for ($i = 1; $i <=100; $i++) {
    $tmp_arr[] = $i;
    if ($i % 10 == 0) {
       $data_arr[] = $tmp_arr;
       $tmp_arr = array(); //Array leeren
    }
}

//Darstellungslogik und Templatehandling:
$tb_rows_buffer="";
$nr = 0; //Zähler für die Reihen
foreach ($data_arr as $line_arr) {
   $tb_row = ""; //Buffer für die Zeile
   $cnr=0;
   foreach ($line_arr as $val) {

       if ($cnr == 0) {
          $cclass = ""; //CSS-Klasse bleibt neutral
       } else {
           if ($nr == 0) {
               $cclass="a"; //CSS-Klasse bekommt den Anhang a
           } else {
               $cclass="b"; //CSS-Klasse bekommt den Anhang b
           }
       }

       $csr = array ('col' => $cclass,
                     'wert' => $val);
       $tb_row .= $t->fill_tpl("cell", $csr);
       $cnr++;
       if ($cnr == 2) $cnr = 0; //$cnr ist 1 oder 0
   }

   $sr = array ('nr' => $nr, //CSS-Klasse für die Reihen bekommt
                             //den Anhang 0 oder 1
               'cells' => $tb_row);
   $tb_rows_buffer .= $t->fill_tpl("row", $sr);
   $nr++;
   if ($nr == 2) $nr = 0; //$nr ist 1 oder 0

}

$se_re['tablerows'] = $tb_rows_buffer;

// "Füllen des Haupttemplates und Ausgabe der Seite
echo $t->fill_tpl("main", $se_re);
?>


HTML-Template


# Haupttemplate
[main]
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Templatetest</title>
<link rel="stylesheet" href="pb-tpl.css" type="text/css">
<style type="text/css">
<!--
tr.row0 {
   color:#000000;
   background-color:#FFFFFF;
}
tr.row1 {
   color:#000000;
   background-color:#EFEFEF;
}
td.cola {
   color:#000000;
   background-color:#FFFFCC;
}
td.colb {
   color:#000000;
   background-color:#E1E2A7;
}
-->
</style>
</head>

<body>
<h1>Werte in Tabellenzeile einlesen und ausgeben</h1>
<p><a href="sourcecode/s-tabelle4.html">Quellcode ansehen &raquo;</a></p>
<p>Hier werden die Reihen zur besseren Übersicht abwechseln mit weißem und grauem Hintergrund
ausgegeben und außerdem jede zweite Zelle in gelb bzw. graugelb, wenn sie in einer grauen
Zeile liegt.</p>
<p>Das Beispiel soll zeigen, dass man auch für komplizierte Fälle jegliche Logik aus dem
Template heraushalten kann. Ziel ist es, das Template für den Nicht-Programmierer
verständlich zu halten. Um die Wenns und Abers kümmert sich der Programmierer, der stets
vollen Zugriff auf alle Templatschnipsel hat und diese nach Belieben manipulieren kann.</p>
<table border="1">
{TABLEROWS}
</table>

<hr>
<p><a href="tabelle3.php">zurück</a> | <a href="index.html">Index</a> | <a href="tabelle5.php">weiter</a> </p>

</body>
</html>


# In diesen Templates ist jetzt jeweils nur ein Platzhalter auszutauschen

# Template für Tablerows ###############
[row]
<tr class="row{NR}">{CELLS}</tr>

# Template für Zellen
# Die Klasse wird nur jedes zweite Mal geschrieben, sonst bleibt das Attribut leer.
[cell]
<td class="col{COL}">{WERT}</td>

« zurück zur Ausgabe