Formulieren automatiseren mbv Classes door T. H.
Dit artikel is erg verouderd en bevat misschien onjuiste informatie.
Kijk op de wiki voor nieuwere artikelen.
Als je met PHP bezig bent, moet je veel werken met formulieren in HTML.
Dit is geen fijn karweitje, zeker niet als je er veel moet maken.
Als je bijvoorbeeld bezig bent met een webapplicatie, moet je veel formulieren maken.
"Hier moet iets op te vinden zijn", d8 ik... tijd om maar weer eens een class te bouwen.
Op www.phpbuilder.com stond geloof ik ook een artikel over formulieren automatiseren.
Deze werke niet bij mij en ik vond het een heel ingewikkeld artikel.
Voorkennis en benodigdheden
Ik ben er vanuit gegaan dat je de volgende kennis hebt:
- basiskennis php
- mysql met php
- array's in php
- basiskennis van functions
- html
Verder ga ik ervan uit dat de gegevens voor het forulier uit een MySQL database komen. Ook ben
ik er van uit gegaan dat er al een database connectie is gemaakt voordat de class wordt aangeroepen.
Let's begin
Oke, we gaan dus een class bouwen waarmee we makkelijk een formulier kunnen genereren.
Ik bespreek in dit artikel slechts enkele velden. Dit kan makkelijk uitgebreid worden.
Mijn versie van deze class bevat bijvoorbeeld een veld om een datum te selecteren.
Zulke velden ga ik in dit artikel niet inbouwen. Dit mag je zelf doen (is echt niet zo moeilijk).
We gaan de volgende velden maken:
- textField
- selectField
- checkbox
- textArea
We maken voor ieder veld een functie aan waarmee we het veld genereren.
Oke, laten we maar eens wat code neerzetten. We beginnen met het makkelijkste: de textField.
<?
class myForm {
/* hier komt de hele inhoud in te staan totdat we flushen */
var $output;
/* hierin komt de 'row' waar de velden in komen te staan */
var $row;
/* het tabel einde */
var $tblEnd;
function myForm () {
/* begin maken aan tabel en hidden veld meesturen om te checken of het formulier gesubmit is */
$this->output =
"<form method='post' action='' name='main'>".
"<input type='hidden' name='posted' value= 'posted'>\n".
"<table cellspacing=0 cellpadding=0 border=0>\n";
/* de opmaak van de veld-rijen voor in de tabel */
$this->row =
" <tr>\n".
" <td valign=top><b>%omschrijving%</b></td>\n".
" <td valign=top><b>:</b></td>\n".
" <td>%veld%</td>\n".
" </tr>\n";
$this->tblEnd = "</table>\n";
}
function textField($naam, $omschrijving, $err = "", $size = 15, $maxlengte = 40) {
/* gegevens bij het veld invullen */
$veld = "<input type='text' name='". $naam."' value='' maxlength=".$maxlengte.">". $err;
/* veld en omschrijving bij de row invullen en row bij output stoppen */
$str = str_replace("%omschrijving%", $omschrijving, $this->row);
$this->output .= str_replace("%veld%", $veld, $str);
}
}
?>
Je ziet dat ik meer functies heb toegevoegd dan alleen textField. Ik zal ff uitleggen wat ik gedaan heb.
We beginnen met de variabele output.
Hierin komen alle velden te staan totdat we gaan flushen (deze functie maken we zometeen).
Vervolgens heb ik een variabele row gemaakt. Deze row gebruiken we bij elk veld.
Deze wordt gedefinieerd in de functie myForm. Hier staat het 'uiterlijk' van de row.
Op deze manier kunnen we gemakkelijk het uiterlijk van het formulier wijzigen.
Daaronder zie je de funtie myForm. Deze wordt uitgevoerd zodra de class word aangeroepen omdat deze hetzelfde heet
als de class. Hier maken we een begin van de tabel.
Tot slot zie je de functie textField. We roepen deze aan met de volgende gegevens:
- naam van het veld,
- omschrijving welke de gebruikers te zien krijgen,
- foutmelding als het veld verkeer is ingevuld(optioneel),
- groote van het veld(optioneel),
- maximale input(optioneel)
Oke, nu we het beginnetje gemaakt hebben, gaan we verder met het selectField.
Hier maak ik alleen de functie, die we later in de class zetten.
De gegevens welke weergegeven worden in het selectfield moeten worden meegegeven in een array.
<?
function selectField($naam, $omschrijving, $values, $err = "", $arrKey = false) {
/* veld de naam geven */
$veld = "<select name='".$naam."'>\n";
/* de array keys ophalen */
$keys = array_keys($values);
$i = 0;
foreach($values as $arr) {
/* of de key van de array als value gebruikt moet worden, of de naam van de optie zelf */
$value = ($arrKey) ? $keys[$i] : $arr;
/* opties invullen en bij het veld toevoegen */
$veld .= " <option value='". $value."'>".$arr."</option>\n";
$i++;
}
$veld .= " </select>\n ". $err;
/* veld en omschrijving bij de row invullen en row bij output stoppen */
$str = str_replace("%omschrijving%", $omschrijving, $this->row);
$this->output .= str_replace("%veld%", $veld, $str);
}
?>
De functie hierboven geeft je de mogelijkheid om de gegevens uit een array in een selectField te stoppen.
De waarden kunnen de array-keys zijn of de waarden die je ook te zien krijgt in het selectiefield.
Standaard staat deze opie op de waarde die je ziet.
Je roept de functie met de volgende gegevens aan:
- naam van het veld,
- omschrijving,
- de waarden van het veld (moet array zijn),
- de foutmelding als de input verkeerd is (optioneel),
- true(alleen als je de array keys als waarde wilt gebruiken)
| 1 | 2 | 3 | 4 | Volgende »
|