vLIB Einführung

vLIB Logo

9. Einen DB-LOOP erstellen mit ARRAY_PUSH

Wenden wir uns nun dem etwas komplizierteren Beispiel zu. Oft wird es nötig sein, Daten zu manipulieren, egal ob diese aus der Datenbank kommen oder aus einer anderen Quelle stammen. Wenn diese Daten in einen LOOP sollen, müssen wir auf den Befehl array_push() zurückgreifen.

PHP-Skript
   require_once 'vlib/vlibTemplate.php';
   require_once 'vlib/vlibDate.php';

   $tmpl = new vlibTemplate('tmpl/db.htm');
   $date = new vlibDate('de'); // you may set this to 'en' (english)

   // DATABASE variables and query
   require_once 'db_config.php';
   mysql_connect($db_host, $db_user, $db_pw);
   mysql_select_db($db_name);
   $select = "SELECT name, birthday, city FROM $db_table";
   $result = mysql_query($select);

   $table_data = array();
   while ($row = mysql_fetch_assoc($result))
   {
      array_push($table_data, array(
         'name' => $row['name'],
         'birthday' => $date->formatDate($row['birthday'], '%A, %d.%m.%Y'),
         'city' => $row['city']
         )
      );
   }
   $tmpl->setloop('table_data', $table_data);

   $tmpl->pparse();

   mysql_close();
$date = new vlibDate('de');
Dieser Befehl erstellt die Instanz $date der Klasse vlibDate. Das 'de' stellt den deutschen Sprachsatz ein. So erhalten wir "Samstag" oder "Mittwoch" (je nach Wochentag) und nicht die englischen Bezeichnungen. vlibDate ist (wie strftime) in der Lage, verschiedene Formate und Variablen zu unterstützen. Lesen Sie bitte die Dokumentation zu vlibDate, um sich über die anderen Sprachen und Möglichkeiten dieser Klasse zu informieren.
array_push($table_data, ...)
Mit array_push() werden die einzelnen LOOP-Elemente dem Array $table_data hinzugefügt. Während in unserem ersten LOOP die LOOP-Elemente nur aus einfachen Variablen bestanden haben, findet bei dieser Zuweisung:
'birthday' => $date->formatDate($row[birthday], '%A, %d.%m.%Y');
etwas Besonderes statt - dieses LOOP-Element wird vom ISO 8601 Format (2005-11-09) in ein gebräuchliches deutsches Format umgewandelt.
Template
   <table border="1" width="70%" summary="MySQL data in a table using TMPL_LOOP and ARRAY_PUSH">
      <caption>MySQL data in a table using TMPL_LOOP and ARRAY_PUSH</caption>
      <thead>
         <tr>
            <th align="left">name</th>
            <th align="left">birthday</th>
            <th align="left">city</th>
         </tr>
      </thead>
      <tbody>
       <tmpl_loop name='table_data'>
         <tr>
            <td valign="top">{tmpl_var name='name'}</td>
            <td valign="top">{tmpl_var name='birthday'}</td>
            <td valign="top">{tmpl_var name='city'}</td>
         </tr>
       </tmpl_loop>
      </tbody>
   </table>

Das Template unterscheidet sich nicht wesentlich von den vorangegangen Beispielen. Der LOOP enthält 3 Elemente, die alle über Templatevariablen ausgegeben werden.

Die Ausgabe

name birthday city
Nordheimer, Ute Samstag, 21.05.1960 Berlin
Smith, Daniel Dienstag, 22.06.1965 Salt Lake City
Pullu, Murath Donnerstag, 23.07.1970 Kairo
Leone, Gorgio Sonntag, 24.08.1975 Rom

Die Möglichkeiten von vlibDate werden hier nur leicht angekratzt. Die deutsche Formatierung ist nur einer der vielen Vorteilen dieser Klasse.