Inloggen
Username:
Password:



Password vergeten?
Menu
Home
Forums
Wiki
Script Library
Forum tracker
RSS Feed
Sponsoren
Vacature plaatsen

Aanmelden
Huisregels
Vereniging

Adverteren
Disclaimer
Zoeken

In:
Aantal leden
PHPFreakz kent momenteel 50394 geregistreerde leden.
Opties
Printversie
Formulieren automatiseren mbv Classes
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 »

Commentaar op dit artikel
TitelDoorDatum
RE: RE: RE: RE: RE: Reactie op artikel Peter de Kok 09-07-2007 23:32
includes johan holwerda 11-10-2005 15:48
RE: RE: RE: RE: Reactie op artikel Crypton X 20-09-2005 20:12
RE: RE: RE: Reactie op artikel T. H. 19-09-2005 23:32
RE: RE: Reactie op artikel Crypton X 19-09-2005 22:04
RE: Reactie op artikel T. H. 03-02-2005 08:33
Reactie op artikel The Half-Blood Prince 16-12-2004 18:29
Zeer goed! MvdBo WeCreate-IT.nl 16-12-2003 16:28
FormHandler ONLINE!!! T. H. 04-11-2003 10:16
PEAR:QuickForm of OOH_Form is een beter idee Joran :P 23-09-2003 11:11
Idee ? Hans de Jong 10-09-2003 18:42
Zéér goed R Korebrits 21-08-2003 22:20
COMPLETE OMSCHRIJVING! T. H. 06-08-2003 20:37
RE: Bijzonder interessante benadering T. H. 16-06-2003 15:24
Bijzonder interessante benadering Tristan Wiechert 16-06-2003 15:21
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: Pfffff T. H. 14-05-2003 10:04
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: Pfffffffff Reuel van der Steege 14-05-2003 09:12
hulde Arjen Schumacher 06-05-2003 11:48
simplekes Tom Kuilder 21-04-2003 00:00
No REMORSE - =: Matr!X := - 10-04-2003 13:43
RE: RE: RE: RE: RE: RE: RE: RE: RE: RE: Pfffffffff Mark Snijders 10-04-2003 13:32
Top C4d Freak 01-03-2003 12:35
RE: RE: RE: RE: RE: RE: RE: RE: RE: Pffffffffff - T. H. 27-02-2003 08:36
RE: RE: RE: RE: RE: RE: RE: RE: Pffffffffff - secu Ron Thijssen 26-02-2003 22:27
RE: RE: RE: RE: RE: RE: RE: Pffffffffff - security T. H. 15-02-2003 19:25
RE: RE: RE: RE: RE: RE: Pffffffffff - security zui Melvyn Sopacua 15-02-2003 17:49
RE: RE: RE: RE: RE: Pffffffffff - security zuigt w T. H. 15-02-2003 12:01
RE: RE: RE: RE: RE: Pffffffffff - security zuigt w T. H. 15-02-2003 11:33
RE: RE: RE: RE: Pffffffffff - security zuigt weer Melvyn Sopacua 14-02-2003 21:03
RE: RE: RE: Pffffffffff - security zuigt weer es Melvyn Sopacua 14-02-2003 20:51
RE: RE: Pffffffffff - security zuigt weer es T. H. 14-02-2003 13:46
RE: Pffffffffff - security zuigt weer es T. H. 14-02-2003 13:32
Pffffffffff - security zuigt weer es Melvyn Sopacua 14-02-2003 12:26
Voorbeeld T. H. 30-12-2002 10:45
RE: RE: Weer een vraagje :) Wouter van G 24-12-2002 16:12
RE: Weer een vraagje :) T. H. 24-12-2002 14:05
Weer een vraagje :) Wouter van G 24-12-2002 13:02
RE: RE: RE: RE: RE: RE: OOP wordt niet goed toegep T. H. 24-12-2002 10:24
RE: RE: RE: RE: RE: OOP wordt niet goed toegepast Rémy van Duijkeren 24-12-2002 10:20
RE: RE: RE: RE: OOP wordt niet goed toegepast T. H. 23-12-2002 23:55
RE: RE: RE: OOP wordt niet goed toegepast Rémy van Duijkeren 23-12-2002 18:30
RE: RE: OOP wordt niet goed toegepast Peter Jonk 23-12-2002 12:06
RE: OOP wordt niet goed toegepast T. H. 22-12-2002 17:38
OOP wordt niet goed toegepast Rémy van Duijkeren 22-12-2002 16:07
RE: RE: RE: Vraagje -> aangepast Mart php 22-12-2002 15:38
RE: RE: Vraagje Wouter van G 22-12-2002 14:52
RE: Vraagje T. H. 22-12-2002 14:30
Vraagje Wouter van G 22-12-2002 12:42
Thnx! Wouter van G 21-12-2002 12:31
Recente topics
Website layout hu...
selecteer tekst t...
Weergaven form in...
Website Hulp gezocht
Refresh na invoeren.
Weeknummers selec...
jquery table sort...
Meerdere menu's i...
jQuery slide content
HTML SELECT met 2...
TCPDF geeft é nie...
session_id(); > b...
Nieuwe regel
Variabele analyseren
heleboel foutmeld...
Recente Wiki's
JavaScript: High Performance
MagicQuotes
Escapen
Datamanipulatie
RabbitVCS
Continuous integration
Apache Veilig Maken
Charactersets
Het Wiel Uitgevonden:Formulieren
XSD

Meer wiki ...
Recente Scripts
Unieke `random` n...
twitterPHP 0.1 (a...
CSS minifier
PINI - PHP >>INI<...
Sudoku [StateSolver]
base64 file encoder
Session class

Meer scripts ...
Gehost door
RedKnot Hosting