Foutmeldingen in/bij formuliervelden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cobol Developer

Dit ga je doen Als Cobol Ontwikkelaar zal je gaan meebouwen aan een onderdeel van het backend systeem waarbij je het functionele ontwerp vertaald naar een technische oplossing die geïntegreerd kan worden in de huidige omgeving. Je zorgt ervoor dat de bedrijfsprocessen op een efficiënte manier worden uitgevoerd en werkt proactief aan het verbeteren hiervan. Samen met jouw collega’s reviewen jullie elkaars code en test je je eigen code. Je werkt nauw samen met andere ontwikkelaars, testers en functioneel ontwerpers. Taken pakket: Beheren en doorontwikkelen van de bestaande omgeving; Vertalen van een functionele vragen naar een technische oplossing; Doorvoeren van

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

Bekijk vacature »

SQL Database Ontwikkelaar

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je houdt je bezig met het ontwerp en de ontwikkeling van MS SQL server databases, dit doe je met T-SQL als programmeer laag. De begeleiding van projecten van A tot Z, je zult aansluiten bij meetings met

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van de warehouses. Op dit moment wordt er nog gebruik

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

Lead Java Developer

Dit ga je doen Je taken bestaan onder andere uit: Het aansturen van een development team bestaande uit 8 collega's op technisch maar ook HR gebied; Het maken van strategische keuzes omtrent de (nieuw)bouw van deze applicatie; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java, Spring, Angular, REST); Reviewen van code en feedback geven op collega developers. Hier ga je werken Als Lead Software Developer ben je verantwoordelijk voor één van de vier Agile Java ontwikkelteams die bouwen aan technologie die duizenden instanties wereldwijd verbindt. Dit Agile team, data Jira en Confluence gebruikt en

Bekijk vacature »

Full stack Javascript ontwikkelaar

Functie Benieuwd hoe jouw dag eruit ziet? Je komt binnen rond een uur of 10 en dat start je met de morning call. Dit doen we vanaf het hoofdkantoor of op het lab, ligt eraan welk project je mee bezig bent. Na de call en het verdelen van de tickets ga je met je team aan de slag. Rond een uur of 12 is er een goede lunch en ga je smiddags weer lekker door met je werk. De ene keer maak jij een game voor een groot merk om de interactie tussen product en eindgebruiker te vergroten. De andere

Bekijk vacature »

Junior Front-End Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale oplossingen van Coolblue. Wat doe je als Junior Front-End Developer bij Coolblue? Als Junior Front-End Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen. Op dat moment komt je wil om te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te maken. Je sterk analytisch vermogen komt dan goed van pas! Ook Junior Front-End Developer worden bij Coolblue?

Bekijk vacature »

API Developer Red Hat Fuse

Dit ga je doen Als API Developer zal je verantwoordelijk zijn voor het: het maken van API's en het correct laten draaien van de API's op het platform. Hierdoor kom je in aanraking met Red Hat Fuse, Springt Boot, 3Scale, Red Hat SSO, Openshift en Azure DevOps; zorgen voor de kwaliteit van de ontwikkeling, integratie en prestaties van de API's; zorgen voor een stabiel integratieplatform. Hier ga je werken Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap dat hoofdzakelijk op OpenShift, Azure en

Bekijk vacature »

Software Developer C++ en Perl

Ben je een slimme en enthousiaste universitair opgeleide bèta die graag bij een relatief klein softwarebedrijf wil werken waar de sfeer goed is en eigen inbreng gewaardeerd wordt? Wij, IntelliMagic in Leiden, ontwikkelen technisch hoogwaardige software op het gebied van IT infrastructuur performance analytics. Het type software zorgt voor intellectueel interessante uitdagingen. We ontwerpen de producten zelf en verkopen deze als off-the-shelf software aan grote bedrijven in Europa en de VS. Wij zoeken een ervaren C++ software engineer met kennis van Perl voor een van onze ontwikkelteams. Werkzaamheden Samen met de andere ontwikkelaars specificeren, ontwerpen en implementeren van nieuwe functionaliteit

Bekijk vacature »

PHP developer (Laravel/Vue.js)

Functie Het team telt momenteel 20 collega’s, bestaande uit developers (front- en backend) en het operations team, waaronder ook het management en twee scrum masters vallen. Ze zijn op zoek naar een PHP developer die in staat is zelfstandig te werken. Je komt te werken in één van de drie scrumteams en gaat aan de slag met een project voor de klant. Het fijne hieraan is dat je wel afwisseling hebt qua werk, maar tegelijkertijd doorlopend werkt voor bestaande klanten. Hierdoor krijg je ook de kans om echt de diepte in te gaan en innovatieve technische oplossingen neer te zetten.

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een gewaardeerde werkgever in regio Tilburg waar jij de tijd en ruimte krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je houdt je bezig met het creëren en bouwen van MS SQL server databases; Je gaat projecten vanaf het begin tot het eind begeleiden. Je sluit aan bij meetings met klanten om hun processen in kaart te brengen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt

Bekijk vacature »

Software Programmeur PHP

Functie Wij zijn op zoek naar een PHP programmeur voor een leuke opdrachtgever in omgeving Alblasserdam. Heb jij altijd al willen werken bij een bedrijf dat veilige netwerkverbindingen levert door middel van veilige oplossingen? Lees dan snel verder. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op het gebied van geleverde software en webapplicaties. Tevens

Bekijk vacature »

Delphi developer

Functie Als Delphi developer ga jij aan de slag in een team met twee andere ervaren Delphi programmeurs waaronder de Hoofd programmeur. Als team zijn jullie verantwoordelijk voor de doorontwikkeling van jullie bestaande applicatie. Daarnaast zijn jullie verantwoordelijk voor het onderhouden van deze applicatie en het oplossen van eventuele bugs. Eisen - HBO werk en denk niveau; - Minimaal één jaar ervaring met Delphi; - Goede beheersing van de Nederlandse taal in woord en geschrift; - Jij bent zelfstandig, maar kan ook in team verband werken. Aanbod - €3000,-- €4000,- op basis van jouw kennis en ervaring; - 8% vakantiegeld;

Bekijk vacature »
Krist Ensing

Krist Ensing

20/08/2013 16:46:05
Quote Anchor link
Ik heb een formulier gemaakt volgens OOP principe. Ik wil dat de Error message in het formulier getoond wordt op de plek waar het veld fout is. Hoe kan ik dit regelen?

In het vogende stuk code (Ik weet niet hoe ik de stukken code van elkaar kan schreiden:
Code Form class:
Code Element class
Code Text Element
Code RegistratieForm
Code formulier.php


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
<?php


abstract class Form implements IForm {

    private $elements;
    private $id;
    private $action;
    private $method;
    private $attribs;
    private $isGeldig;
    private $errorMessages;
    private $values;

    const METH_POST = 'post';
    const METH_GET = 'get';

    public function __construct($options) {
        $this->isGeldig = true;
        $this->errorMessages = array();
        $this->values = array();
        $this->id = isset($options['id']) ? $options['id'] : 'Formulier';
        $this->action = isset($options['action']) ? $options['action'] : '#';
        $this->method = isset($options['method']) ? $options['method'] : self::METH_POST;
        //attribs zijn alle overige HTML-attributen die je aan een formulier zou willen toekennen: style, class etc.
        $this->attribs = isset($options['attribs']) ? $options['attribs'] : '';
    }


    public function add(IElement $elm) {
        $this->elements[$elm->getName()] = $elm;
    }


    public function render() {
        //PHP_EOL is een ingebouwde constante in PHP die een nieuwe regel maakt (zie je in broncode van de HTML)

        $html = "<form method='{$this->method}' action='{$this->action}' id='{$this->id}' {$this->attribs}>" . PHP_EOL;
        foreach ($this->elements as $element) {
            $html .= $element->render() . '<br />' . PHP_EOL;
        }

        $html .= "</form>" . PHP_EOL;
        return $html;
    }


    public function isValid() {
        $this->clean();
        foreach ($this->elements as $element) {
            if (!$element->isValid()) {
                $this->isGeldig = false;
                $this->errorMessages[$element->getName()] = $element->getMessages();
            }
        }


        return $this->isGeldig;
    }


    public function getMessages() {
        return $this->errorMessages;
    }


    public function clean() {
        foreach ($this->elements as $element) {
            $element->clean();
        }
    }


    public function getValues() {
        foreach ($this->elements as $key => $element) {
            $this->values[$key] = $element->getValue();
        }

        return $this->values;
    }

}

?>


code class Element
<?php

abstract class Element implements IElement {


    protected $filters;
    protected $validators;
    protected $options;
    protected $value;
    protected $name;
    protected $label;
    protected $attribs;

    protected $isGeldig;
    protected $errorMessages;

    public function __construct(array $options = array())
    {

        $this->isGeldig = true;
        $this->filters = array();
        $this->validators = array();
        $this->value = '';
        $this->setOptions($options);
    }


    public function setOptions(array $options)
    {

        $this->name = isset($options['name']) ? $options['name'] : 'standaardnaam'; //eigenlijk moet de naam worden getest; niet alle namen zijn volgens de HTML-specs toegestaan!
        $this->label = isset($options['label']) ? $options['label'] : 'label';
        $this->value = isset($options['value']) ? $options['value'] : '';
        $this->attribs = isset($options['attribs']) ? $options['attribs'] : '';
        if (isset($options['validators']) && is_array($options['validators'])) {
            foreach ($options['validators'] as $validator) {
                $this->addValidator($validator);
            }
        }

        if (isset($options['filters']) && is_array($options['filters'])) {
            foreach ($options['filters'] as $filter) {
                $this->addFilter($filter);
            }
        }
    }


    public function addValidator(Validator $validator)
    {

        $this->validators[] = $validator;
    }


    abstract public function render();

    public function addFilter(Filter $filter)
    {

        $this->filters[] = $filter;
    }


    public function isValid()
    {

        foreach ($this->validators as $validator) {
            if (!$validator->isValid($this->value)) {
                $this->isGeldig = false;
                $this->errorMessages[] = $validator->getMessages();
            }
        }

        return $this->isGeldig;
    }


    public function clean()
    {

        $localValue = $this->value;
        foreach ($this->filters as $filter) {
            $localValue = $filter->clean($localValue);
        }

        $this->value = $localValue;
    }


    public function getValue()
    {

        return $this->value;
    }


    public function getMessages()
    {

        return $this->errorMessages;
    }


    public function getName()
    {

        return $this->name;
    }


}

?>

Code Text element

<?php
/**
 * User: GJ
 * Name: TextElement.php
 * Date: 14-8-13
 * Time: 12:10
 */


class TextElement extends Element {

    public function render()
    {

        $html = '';
        $html .= '<label>' . $this->label;
        $html .= "<input type='text' name='{$this->name}' value='{$this->value}' $this->attribs>";
        $html .= '</label>';
        $html .= $this->getMessages();
        return $html;
    }
}

?>

Code RegistratieForm:

<?php

class RegistratieForm extends Form {

    public function __construct($options) {
        parent::__construct($options);

        $initials = new TextElement();
// we kunnen een element aanmaken en pas daarna de opties zetten, zoals hier:
        $initials->setOptions(array(
            'name' => 'voorletters',
            'label' => 'Uw voorlettes',
            'value' => isset($_GET['voorletters']) ? $_GET['voorletters'] : '',
            'validators' => array(
                new
InitialValidator(array() /* no options necessary */),
            ),
                )
        );


        $lastname = new TextElement();
// we kunnen een element aanmaken en pas daarna de opties zetten, zoals hier:
        $lastname->setOptions(array(
            'name' => 'achternaam',
            'label' => 'Uw achternaam',
            'value' => isset($_GET['achternaam']) ? $_GET['achternaam'] : '',
            'validators' => array(
                new
LastNameValidator(array() /* no options necessary */),
            ),

            'filters' => array(
                new
FilterStripTags(),
                new
FilterTrim()
            )
                )
        );

        $email = new TextElement();
// we kunnen een element aanmaken en pas daarna de opties zetten, zoals hier:
        $email->setOptions(array(
            'name' => 'email',
            'label' => 'Uw e-mailadres',
            'value' => isset($_GET['email']) ? $_GET['email'] : '',
            'validators' => array(
                new
EmailValidator(array() /* no options necessary */),
            ),

            'filters' => array(
                new
FilterStripTags(),
                new
FilterTrim()
            )
                )
        );


// of we maken een element en geven bij de constructie al de opties weer, zoals hier
        $password = new PasswordElement(array(
            'name' => 'password',
            'label' => 'Uw wachtwoord',
            'value' => isset($_GET['password']) ? $_GET['password'] : '',
            'validators' => array(
                new
StringLengthValidator(array('min' => 3, 'minError' => 'Het wachtwoord is te kort', 'max' => 12, 'maxError' => 'Het wachtwoord is te lang'))
            ),

            'filters' => array(
                new
FilterStripTags(),
                new
FilterTrim()
            )
                )
        );

        $submit = new SubmitElement(array(
            'value' => 'verzenden',
            'name' => 'verzenden',
                )
        );


//de gemaakte elementen toevoegen aan het formulier
        $this->add($initials);
        $this->add($lastname);
        $this->add($email);
        $this->add($password);
        $this->add($submit);
    }

}

?>

code formulier.php:

<?php

//autoloader
function __autoload($class) {
    require_once $class . '.php';
}


//het formulier aanmaken
$form = new RegistratieForm(
        array(
    'id' => 'frmRegistratie',
    'css' => 'userform',
    'method' => 'get',
    'action' => ''
        )
);


//de elementen aanmaken:


if (isset($_GET['verzenden'])) {

    $result = $form->isValid();
    if ($result == TRUE) {
        var_dump('correct', $form->getValues());
    }
else {
        var_dump('', $form->getMessages());
    }

    die();
}


$html = $form->render();


echo $html;

?>


Hopelijk kan iemand mij helpen om de foutmeldingen in het formulier te krijgen op de plek waar de waarde niet valide is. (en de rest van het formulier ingevuld houden).

Alvast bedankt!
Gewijzigd op 20/08/2013 16:53:26 door Krist Ensing
 
PHP hulp

PHP hulp

15/05/2024 03:02:33
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/08/2013 17:38:50
Quote Anchor link
zonder jouw classes helemaal gelezen te hebben, hier hoe ik het doe:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
class form
{
    private $errors;
    
    function
validate()
    {

        if($_POST['email'] == '')
            $this->errors['email'] = 'Je hebt geen emailadres ingevuld.';
        
        // en nog meer velden die je kunt valideren
        
        if(count($this->errors))
            return false;
            
        return true;
    }
    
    function
getError($id)
    {

        if(isset($this->errors[$id]))
            return $this->errors[$id];
            
        return '';
    }
};

?>
Gewijzigd op 20/08/2013 17:41:38 door Frank Nietbelangrijk
 
Krist Ensing

Krist Ensing

20/08/2013 19:27:56
Quote Anchor link
Het probleem is dat de foutmelding nu in plaats van het formulier komt dmv een vardump. MIsschien wil je toch naar me code kijken, om te zien waar ik hem moet aanpassen. Ik heb namelijk de class Form, zoals je hierboven beschrijft als een abstracte klasse. De elementen zelf worden via de abstracte klasse Element in de klasse Text element (en andere gerenderd). Hier moet ik volgens mij ergens die foutmelding in kunnen weergeven, maar dan moet ik nog wel wat doen met de code onderaan in formulier.php (staat onderaan mijn lap code).

De rendercode va TextElement.php is deze:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php


class TextElement extends Element {

    public function render()
    {

        $html = '';
        $html .= '<label>' . $this->label;
        $html .= "<input type='text' name='{$this->name}' value='{$this->value}' $this->attribs>";
        $html .= '</label>';
        $html .= $this->getMessages();
        return $html;
    }
}
[
code]

Hopelijk kun je me verder helpen!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/08/2013 20:17:41
Quote Anchor link
de form class is verantwoordelijk voor het formulier als geheel en gebruikt hierbij verschillende objecten. een extra object kan dan een 'error' object zijn. Nu heb je in de form class een functie render(). deze laat de verschillende elementen renderen. bij het aanmaken van je elementen lees je de GET variabelen uit. dat is dan dus ook de plek om error-elementen aan te maken. wellicht is het een idee om aan de basis 'element'-class een functie toe te voegen als 'setError()' die de validatie functie aanroept als er een invoer wordt afgekeurd. Binnen deze functie moet dan een nieuw Error object aangemaakt worden zodat de classes zo abstract mogelijk blijven. als de render functie van de elementen worden aangeroepen dan moet ook de render functie van het error-object aangeroepen worden. zo kun je de visualisatie van de errors later zeer simpel aanpassen. Om het compleet te maken zou ik aan de constructor van de form en/of de elementen meegeven welk error object je wilt gebruiken zodat je het error object kunt overerven.


Toevoeging op 20/08/2013 20:22:34:

een andere tip:
de $_GET en $_POST zijn gewoon arrays. je kunt gewoon $arr = $_GET doen om de hele array in één keer te kopiëren. gebruik dan in de rest van je code gewoon $arr zodat je makkelijker kan switchen van GET naar POST en eventueel SESSION.
 
Krist Ensing

Krist Ensing

20/08/2013 20:28:30
Quote Anchor link
Ik ben echt een beginneling wat betreft oo programmeren. Ik begrijp je betoog wel, maar de juiste code weet ik zo niet. Je zou me heel erg helpen om het in mijn code uit te werken, zodat ik begrijp wat er moet gebeuren.
Ik begrijp het als dat veel gevraagd is, maar hoop toch dat je het wilt doen, ik zou er enorm mee geholpen zijn.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/08/2013 21:18:49
Quote Anchor link
Morgen wil ik (misschien) wel even voor je kijken. zou handig zijn om de volledige code te hebben
 
Krist Ensing

Krist Ensing

20/08/2013 21:32:15
Quote Anchor link
Als je me een mailtje stuurt, heb ik je mailadres en zal ik de volledige code toesturen.
Gewijzigd op 20/08/2013 21:42:57 door Krist Ensing
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/08/2013 21:36:55
Quote Anchor link
geregeld
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.