vLIB Einführung

vLIB Logo

8. einfache Datenbankausgabe

Ich verwende LOOPS fast ausschließlich für Datenbankausgaben. Legen Sie bitte eine beliebige Datenbank plus Tabelle mit folgenden Spalten an:

Wir wollen in unserem ersten einfachen Beispiel zwei der Spalten in einer HTML-Tabelle ausgeben. Dieses geht relativ leicht mit der Methode setdbloop(), die Rückgabewerte eines RDBMS sofort in einem Template ausgeben kann.

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

   $tmpl = new vlibTemplate('tmpl/db_simple.htm');

   // 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, city FROM $db_table";
   $result = mysql_query($select);

   $tmpl->setdbloop('table_data', $result);
   $tmpl->pparse();

   mysql_close();

Mit setdbloop() lassen sich die Daten nur ungefiltert aus der Datenbank ausgeben. Konvertierungen im Template sind mit vLIB nicht möglich, dazu ist der Befehl array_push() notwendig. Um das zu demonstrieren werden wir im nächsten Beispiel das Datum mit vlibDate formatiert ausgeben.
Wie man am Template sehen kann, ist hier keine Logik hinterlegt. Das ist der Ansatz, der von vLIB konsequent verfolgt wird: Alle (Programmier)Logik sollte im PHP-Skript erfolgen.

Template
   <table border="1" width="70%" summary="MySQL data in a table using TMPL_LOOP and SETDBLOOP">
   <caption>MySQL data in a table using TMPL_LOOP and SETDBLOOP</caption>
   <thead>
      <tr>
         <th align="left">name</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='city'}</td>
      </tr>
    </tmpl_loop>
   </tbody>
</table>

Die Datei "db_config.php" enthält alle notwendigen Variablen um die Verbindung zum RDBMS und der Datenbank herzustellen. Die Datei könnte beispielsweise folgenden Inhalt haben:

PHP-Skript "db_config.php"
<?php
	$db_host = 'localhost';
	$db_name = 'vlib';
	$db_user = 'admin';
	$db_pw = 'admin123';
	$db_table = 'vlibtemplate';
?>
$select und $result
... sind Datenbankvariablen. Sie werden gebraucht, um die Datensätze aus der Datenbank zu extrahieren. Die genaue Funktionsweise kann man auf php.net oder #php/QuakeNet nachlesen.
Die Templatevariablen "name" und "city"
Wir wollen die Spalten "name" und "city" ausgeben. Deswegen definieren wir im Template
{tmpl_var name='name'}
und
{tmpl_var name='city'}.
Die Templatevariablen müssen mit den Spaltennamen übereinstimmen. Die Methode "setdbloop" funktioniert nur dann, wenn wir genau wissen, welche Spalten wir von der Tabelle zurück erhalten. Ein "SELECT * FROM tabelle" würde also nur dann funktionieren, wenn wir die Struktur der Tabelle im Template abbilden. Bitte beachten Sie, dass der SELECT die Spalten "name" und "city" selektiert und diese IDENTISCH im Template hinterlegt sind. Auch Groß- und Kleinschreibung muss in diesem Fall beachtet werden.

Wenn man im Template keine Logik hinterlegen kann, ist es dann überhaupt möglich mit setdbloop() Daten aus einer Tabelle zu manipulieren? Ja und Nein. Nein, weil die Methode das nicht hergibt. Ja, weil String-, Datums- und sonstige Funktionen mit SQL sehr wohl zu realisieren sind. Selbst IF-Strukturen, die zwei Datenbankfelder miteinander vergleichen, sind mit MySQL möglich.