Location: PHPKode > projects > HTMLresourceKit > documentation/mysql_table_main.html
<html>
<head>
	<title>HTMLresKit - mysql_table</title>
	<link rel="stylesheet" href="docstyle.css" type="text/css">
</head>
<body>
<a name="top"><h1>HTMLresourceKit - mysql_table</h1></a>

<p><b>mysql_table.php</b> dient zum dynamischen Erzeugen von HTML-Tabellen. Der Funktion wird eine SQL-Abfrage zugrunde gelegt, die alle einzubeziehenden Felder enthält. Ausserdem können Spaltenbeschriftungen, benutzerdefinierte Spalten und andere Gestaltungselemente definiert werden. Ein Highlight von <b>mysql_table.php</b> ist die Navigationsautomatik. Mit ihrer Hilfe werden automatisch Navigationslinks für das Blättern durch grössere Datenbestände erzeugt.</p>

<a name="a1"><h2>1) Vorbereitungen</h2>
<p>Wie beim HTMLresKit üblich, müssen vor der Verwendung von mysql_table.php die Systembibliothek mysql_system.php und die eigentliche Klassenbibliothek mysql_table.php eingebunden werden.</p>
<p>Jetzt muss nur noch die Datenbankverbindung mit den üblichen PHP-Mitteln aufgebaut werden und los geht das dynamische Tabellenrendering.</p>
<p>Die Beispiele gehen davon aus, daß die verwendeten Tabellen bzw. Felder tatsächlich in der gewählten Datenbank existieren. Gegebenenfalls müssen diese an Ihre Umgebung angepasst werden.</p>

<a name="a2"><h2>2) Objektkonstruktor</h2>
<p>Zuerst muss natürlich mal ein <b>Objekt</b> her. Das erledigt man am besten mit dem dafür vorgesehenen Konstruktor <b>mysql_table</b> (anders wird´s wohl nichts werden...):</p>
<p class="code">$mytable = <b>new</b> mysql_table("<b>SELECT * FROM kunden</b>",5);</p>
<p>Der erste Parameter enthält hier ein handelsübliches SQL-Statement. Sie können hier sehr viel eintragen, sollten allerdings über <b>SELECT ... FROM ... WHERE ...</b> nicht hinausgehen, das mysql_table sich unter Umständen erdreistet, eigenen LIMIT oder ORDER BY-Klauseln anzuhängen. Dies ist z.B. für die Navigationsautomatik notwendig.</p>
<h4>Hinweis:</h4>
<p class="hinweis">Das Statement braucht <b>nicht</b> mit Aliasen arbeiten, da mysql_table alle Felder über die voll qualifizierten (also in der Form <i>tabellenname.feldname</i>) Feldnamen anspricht.</p>
<p>Der zweite Parameter ist optional und gibt nicht mehr an, als die maximale Anzahl an Datensätzen, die die Tabelle enthalten soll. Wird er weggelassen oder ist negativ, dann werden alle Datensätze der Abfrage dargestellt.</p>

<a name="a3"><h2>3) Tabellenausgabe</h2>
<p>Theoretisch kann das Tabellenobjekt jetzt schon ausgegeben werden. Zwar wird es Ihren Vorstellungen noch nicht ganz genügen, aber wir machen´s trotzdem einmal:</p>
<p class="code">echo $mytable->output();</p>
<p>output() liefert den ganzen HTML-Code für die Tabelle. Sie können den Inhalt auch in einer Variablen speichern, oder in einer Datei ablegen. In der Regel wollen wir aber eine Tabelle auf der Seite haben und geben sie deshalb mit dem <b>echo-Befehl</b> aus.</p>

<a name="a4"><h2>4) Layoutveränderungen</h2>
<p>Natürlich wird die Tabelle in dieser Form nicht sehr schön aussehen. Vor allem die voll qualifizierten Feldnamen als Spaltenbeschriftungen sind nicht sehr benutzerfreundlich. Oder vielleicht möchten Sie ja auch eine Spalte, die für jeden Datensatz einen Link zu einer Bearbeitungsseite enthält. All dies können Sie mit den folgenden Funktionen erledigen. Diese fügen Sie einfach zwischen dem Konstruktor und der eigentlichen Ausgabe ein.</p>

<a name="a4-1"><h3>Spaltenbeschriftung</h3></a>
<p>Wenn Sie die Beschriftung für eine Spalte ändern möchten, verwenden Sie die <b>caption-Methode</b>:</p>
<p class="code">$mytable-><b>caption</b>("kunden.name","Kunde");</p>
<p>Hiermit ändern Sie die Beschriftung für das "<i>name</i>"-Feld in der Tabelle "<i>kunden</i>". Denken Sie daran, daß Sie immer den <b>voll qualifizierten</b> Feldnamen in der Form <b>tabellenname.feldname</b> verwenden müssen.</p>

<a name="a4-2"><h3>Spalte verbergen</h3></a>
<p>Wenn Sie ein Datenfeld zwar in der Abfrage benötigen (z.B. für ein Benutzerfeld, sh. weiter unten), es aber nicht anzeigen möchten, so kommt Ihnen die <b>hide-Methode</b> gerade recht:</p>
<p class="code">$mytable-><b>hide</b>("kunden.id");</p>
<p>Dadurch wird das Feld bei der HTML-Erzeugung ignoriert. Denken Sie wie immer an <b>tabellenname.feldname</b>!</p>

<a name="a4-3"><h3>Benutzerfeld einfügen</h3></a>
<p>Schön, jetzt werden alle Daten angezeigt. Aber wenn Sie auch mit Ihnen arbeiten möchten, wäre ein aktives Element doch nicht schlecht, oder? Dafür gibt es Benutzerfelder. Ein kurzes Beispiel:</p>
<p class="code">$mytable-><b>add_left</b>(<br>&nbsp;&nbsp;&nbsp;&nbsp;"kunden.id","&amp;nbsp;","&lt;a href='edit_kunden.php?id=#value#'&gt;bearbeiten&lt;/a&gt;"<br>);</p>
<p>Hierdurch wird auf der linken Seite eine Spalte generiert, die in jeder Zeile einen Link "bearbeiten" enthält. Lediglich das Ziel des Links ist bei jedem Datensatz ein wenig anders. Es zeigt nämlich auf die Seite "<b>edit_kunden.php</b>" und hängt den Parameter "<b>id</b>" dran. Der Wert des Parameters ist aber <b>nicht</b> in jeder Zeile "<b>#value#</b>"! Dies ist nur ein Platzhalter, der durch den Wert der Spalte "<b>kunden.id</b>" (der erste Parameter) ersetzt wird. Das zweite Argument der Methode ist die Spaltenbeschriftung und was <b>add_right</b> macht, braucht wohl nicht mehr erklärt zu werden ;-)</p>

<a name="a4-4"><h3>HTML-Attribute verändern</h3></a>
<p>Die Tabelle sieht jetzt schon ganz gut aus, aber vielleicht möchten Sie sie trotzdem noch ein wenig verändern. Dazu gibt es einige Methoden, die für jeden Tabellenteil die HTML-Attribute verändern bzw. neue hinzufügen:</p>
<table class="content">
<tr class="fett">
 <td>Methode</td>
 <td>gilt für</td>
 <td>Standardwerte</td> 
</tr>
<tr>
 <td>table_attribute</td>
 <td>Das TABLE-Tag</td>
 <td><p class="code">"width" => "80%",<br>"bgcolor" => "#87CEEB",<br>"align" => "center",<br>"cellpadding" => "2",<br>"cellspacing" => "0"</p></td>
</tr>
<tr>
 <td>head_attribute</td>
 <td>Die Kopfzeile mit<br>den Spaltenbeschriftungen</td>
 <td><p class="code">"align" => "left",<br>"valign" => "top",<br>"bgcolor" => "#87CEEB",<br>"class" => "rk_head",<br>"id" => "rk_head"</p></td>
</tr>
<tr>
 <td>row1_attribute</td>
 <td>ungerade Datenzeilen</td>
 <td><p class="code">"bgcolor" => "#bbbbbb",<br>"class" => "rk_row1",<br>"id" => "rk_row1"</p></td>
</tr>
<tr>
 <td>row2_attribute</td>
 <td>gerade Datenzeilen</td>
 <td><p class="code">"bgcolor" => "#cccccc",<br>"class" => "rk_row2",<br>"id" => "rk_row2"</p></td>
</tr>
<tr>
 <td>foot_attribute</td>
 <td>die Fusszeile</td>
 <td><p class="code">"align" => "center",<br>"valign" => "top",<br>"bgcolor" => "#DEB887",<br>"class" => "rk_foot",<br>"id" => "rk_foot"</p></td>
</tr>
</table>
<p>Wenn man nun ein Attribut ändern oder hinzufügen möchte, so muss man nur die entsprechende Methode auf das Tabellenobjekt anwenden und das Name/Wert-Paar übergeben:</p>
<p class="code">$mytable->row2_attribute("bgcolor","silver");</p>
<p>Dieser Code hier würde für alle ungeraden Zeilen die Hintergrundfarbe "silver" auswählen.</p>
<p class="hinweis">Zusätzlich können Sie auch das Systemstylesheet "<b>html_rk.css</b>" an Ihre Verhältnisse anpassen. Sie können auch neue Style-Klassen definieren und diese den HTML-Tags mit den Attributmethoden übergeben. Damit ergeben sich viele gestalterische Möglichkeiten.</p>

<a name="a5"><h2>5) mehrseitige Navigation</h2>
<p>Wenn Sie bei der Objekterstellung einen Maximalwert für angezeigte Datensätze einstellen, erhalten Sie bei Überschreitung dieser Zahl Navigationslinks in der Fusszeile. Ausserdem steht ein Array bereit, welches Benutzerinformationen enthält. Die Verwendung dieses Arrays erklärt sich am besten mit diesem Beispiel:</p>
<p class="code">$nav=$mytable->navigation;<br>echo "from: ".$nav['from_row']." to: ".$nav['to_row']." ".$nav['shown_rows']."/".$nav['rows']." Seite:".$nav['page']."/".$nav['pages'];</p>
<p>Hier nochmal eine kleine Zusammenstellung der Werte:</p>
<table class="content">
<tr class="fett">
 <td>Element</td>
 <td>Inhalt</td>
</tr>
<tr>
 <td><p class="code">from_row</p></td>
 <td>Erster angezeigter Datensatz</td>
</tr>
<tr>
 <td><p class="code">to_row</p></td>
 <td>Letzter angezeigter Datensatz</td>
</tr>
<tr>
 <td><p class="code">shown_rows</p></td>
 <td>insgesamt angezeigte Datensätze</td>
</tr>
<tr>
 <td><p class="code">rows</p></td>
 <td>insgesamt vorhandene Datensätze</td>
</tr>
<tr>
 <td><p class="code">page</p></td>
 <td>Seitennummer</td>
</tr>
<tr>
 <td><p class="code">pages</p></td>
 <td>Anzahl der Seiten</td>
</tr>
</table>

<a name="footer"><h2><a href="#top">nach oben</a>&nbsp;&nbsp;<a href="mysql_table_ref.html">Klassenreferenz</a></h2></a>
<p>HTMLresourceKit 0.0.1 - Dokumentation by Achim Schrepfer 05/2001</p>

</body>
</html>
Return current item: HTMLresourceKit