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

<p><b>mysql_form.php</b> kann HTML-Formulare anhand von MySQL-Tabellen erzeugen. Die Formulare können mit Werten vorbelegt werden, benutzerdefinierte Felder enthalten und automatisch validiert werden.</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_form.php eingebunden werden.</p>
<p>Jetzt muss nur noch die Datenbankverbindung mit den üblichen PHP-Mitteln aufgebaut werden und schon kann ein Formular erzeugt werden.</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>Wie immer muss zuerst mal ein Objekt erzeugt werden. Dies geht mit dem Konstruktor <b>mysql_form</b> am besten:</p>
<p class="code">$myform = new <b>mysql_form</b>("kunden");</p>
<p>Das einzige Argument, das hier zu übergeben ist, beinhaltet den Namen der Tabelle, auf deren Grundlage gearbeitet werden soll.</p>

<a name="a3"><h2>3) Ausgabe</h2>
<p>Wir könnten das Formular nun schon mal ausgeben lassen. Dazu gibt es auch wieder eine output()-Methode. Allerdings wird in der aktuellen Version vorher noch der Aufruf der validate()-Methode benötigt:</p>
<p class="code">$myform-><b>validate</b>();<br>echo $myform->output();</p>
<p>Mit Validate wird die automatische Validierung aktiviert. Output arbeitet wie sein Pendant der mysql_table-Klasse: es liefert einen String zurück, der den HTML-Code für das Formular enthält. Dieser wird dann mit <b>echo</b> ausgegeben.</p>

<a name="a4"><h2>4) Anpassungen</h2>
<p>In der vorliegenden Form ist das Formular wahrscheinlich nicht sehr "usable". Man möchte es vielleicht mit Werten vorbelegen, einige Felder verstecken oder auch das Layout ein wenig anpassen. Die folgenden Funktionen bauen Sie einfach irgendwo zwischen dem Konstruktor und der Ausgabe ein.</p>

<a name="a4-1"><h3>Formularverhalten festlegen</h3></a>
<p>mysql_form kann nicht nur Formulare erzeugen, sondern diese auch gleich verarbeiten. Sie können ein Formular als "update"-,"copy"- oder als normales Einfügeformular verwenden. Die Aktion legen Sie mit der entsprechenden Methode fest:</p>
<p class="code">$myform-><b>update</b>("id","3");</p>
<p>Dieser Befehl würde ein Formular erzeugen, welches die Daten des Datensatzes mit dem Wert "3" in der Spalte "id" enthält und nach dem Abschicken diesen Datensatz mit den Benutzereingaben aktualisiert.</p>

<p class="code">$myform-><b>copy</b>("id","3");</p>
<p>Das Formular würde zwar die Daten des Datensatzes mit dem Wert "3" in der Spalte "id" enthalten, allerdings würde nach dem Abschicken ein neuer Datensatz erzeugt werden.</p>

<p>Wenn Sie keinen dieser beiden Schalter angeben, wird mit den Benutzereingaben einfach ein neuer Datensatz in die Tabelle geschrieben.</p>

<a name="a4-2"><h3>Felder transportieren</h3></a>
<p>Wenn Sie mit den oben genannten Methoden für die vorbelegung eines Formulars arbeiten, möchten Sie evtl. bestimmte Werte als versteckte Formularfelder einfach nur transportieren.</p>
<p class="code">$myform-><b>transport</b>("id");</p>
<p>Dies generiert nun ein verstecktes Formularfeld mit dem Namen "id" und dem Wert aus der Datenbank.</p>

<a name="a4-3"><h3>Eingabepflicht bestimmen</h3></a>
<p>Die derzeit einzige Prüfung, die der eingebaute "Formularvalidator" übernimmt ist die Eingabeprüfung. Standardmässig sind alle Felder, die in der MySQL-Tabellendefinition "not null" gekennzeichnet sind erforderlich, um den Validator milde zu stimmen. Dies kann mit der set_required()-Methode leicht geändert werden:</p>
<p class="code">$myform-><b>set_required</b>("erstkontakt",true);</p>
<p>Damit wird das Feld "erstkontakt" eingabepflichtig. Umgekehrt können mit false für das zweite Argument Felder als optional definiert werden.</p>

<a name="a4-4"><h3>Felder beschriften</h3></a>
<p>Wie auch bei mysql_table steht bei mysql_form die caption()-Methode zur Verfügung, um Feldern andere Namen als in der Tabellendefinition zu geben:</p>
<p class="code">$myform-><b>caption</b>("name","Firmenname");<br>$myform->caption("adresse","Anschrift");<br>$myform->caption("erstkontakt","Erstkontakt");</p>

<a name="a4-5"><h3>Subselect-Felder einfügen</h3></a>
<p>Nein, wir haben <b>nicht</b> den MySQL-Kern Subselect-fähig gemacht! Mit der subselect()-Methode können aber Listenfelder aus anderen SQL-Abfragen generiert werden:</p>
<p class="code">$myform-><b>subselect</b>("mitarbeiter","SELECT id,name FROM mitarbeiter");</p>
<p>Damit würde dem Benutzer zwar ein Listenfeld mit den Namen der Mitarbeiter zur Verfügung stehen, in der Tabelle würde aber nur die ID des Mitarbeiters eingetragen werden. Dies entspricht dem relationalen Datenbankmodell schon sehr viel mehr, als den ganzen Namen in die Spalte zu schreiben, gell!?</p>

<a name="a4-6"><h3>HTML-Attribute verändern</h3></a>
<p>Wie bei mysql_table können Sie am HTML-Code noch ganz schön viel rumwerkeln. Dazu stehen die selben Methoden bereit:</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 umschliessende TABLE-Tag</td>
 <td><p class="code">"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 Formularobjekt anwenden und das Name/Wert-Paar übergeben:</p>
<p class="code">$myform->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="footer"><h2><a href="#top">nach oben</a></h2></a>
<p>HTMLresourceKit 0.0.1 - Dokumentation by Achim Schrepfer 05/2001</p>

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