OOP Form: Button-name geeft foutmelding

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart C

Bart C

23/11/2010 09:43:12
Quote Anchor link
Hoi,

ik heb het "oude" scriptje van Jan Koehoorn overgenomen om een aantal formulieren in elkaar te flansen. In de comment van zijn script zelfs geeft hij aan dat hij geen waarde meegeeft voor de id en name van een submit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
//Opbouw van html in de klasse
case 'submit':
 $this->html .= PHP_EOL . '<p>';
 $this->html .= PHP_EOL . '<input type="submit" value="' . $this->value . '" />';
 $this->html .= PHP_EOL . '</p>';
break;

//Aanroepen van formulierelement in het object
'Verstuur' => new formelement (false , false , 'submit' , 'Verstuur' , REQUIRED)
?>


Dat gaat allemaal lekker maar ik zou wel een naam nodig hebben voor mijn submit omdat ik 2 submit's in één form wil stoppen (Verwijder en Verstuur). Dan kan ik werken met een if-statement:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if ($_POST['delete']) {doe dit}
else if($_POST['send']) {doe dat}
?>


Ik heb geprobeerd een id toe te voegen en daar heeft het script geen problemen mee. Met de name erbij lukt het niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
case 'submit':
 $this->html .= PHP_EOL . '<p>';
 $this->html .= PHP_EOL . '<input type="submit" id="' . $this->id . '" name="' $this->name . '" value="' . $this->value . '" />';
 $this->html .= PHP_EOL . '</p>';
break;

'Verwijder' => new formelement ('delete' , 'delete' , 'submit', 'Verwijder' , REQUIRED)
?>


Een name toevoegen geeft hier een foutmelding:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 // kijken of er met het form geklooid is
 foreach ($_POST as $key => $val) {
  if (!in_array ($key, array_keys ($formelements))) {
   array_push ($errs, 'Er is een fout opgetreden bij de veldnamen van het formulier');
  }

  else {
   verdere foutafhandeling
  }
?>


Iemand dit dit in het verleden (is al een 2 jaar oud topic) opgelost heeft of dezelfde fout tegengekomen is?

grtz
Gewijzigd op 23/11/2010 09:47:49 door Bart C
 
PHP hulp

PHP hulp

10/01/2025 08:09:03
 
Bas Cost Budde

Bas Cost Budde

23/11/2010 12:10:44
Quote Anchor link
Zonder te weten waar het "oude" scriptje van Jan Koehoorn over gaat:

Mijn geheugen zegt dat IE en Firefox verschillend omgaan met de POST-data, als er meerdere submit-elementen in een formulier voorkomen. Ik heb dat opgelost door een hidden element mee te POSTen met daarin de waarde van de uit te voeren handeling.
 
Bart C

Bart C

23/11/2010 13:08:52
Quote Anchor link
Bas Cost Budde op 23/11/2010 12:10:44:
Zonder te weten waar het "oude" scriptje van Jan Koehoorn over gaat:

Dat zou misschien inderdaad handig zijn om mee te geven. JK heeft een OOP-form ter beschikking gesteld (http://www.phphulp.nl/php/script/overig/oop-form/1253/oopform/916/)

Bas Cost Budde op 23/11/2010 12:10:44:
Mijn geheugen zegt dat IE en Firefox verschillend omgaan met de POST-data

Het probleem zit hem niet in de afhandeling van de POST maar wel in de foutcontrole van het formulier. Zelfs al doe ik niets met de POST-gegevens, dan nog geeft ie een foutmelding weer over het formulier.
Gewijzigd op 23/11/2010 13:12:22 door Bart C
 

23/11/2010 16:29:22
Quote Anchor link
Bart Clarebout op 23/11/2010 13:08:52:
Bas Cost Budde op 23/11/2010 12:10:44:
Mijn geheugen zegt dat IE en Firefox verschillend omgaan met de POST-data

Het probleem zit hem niet in de afhandeling van de POST maar wel in de foutcontrole van het formulier. Zelfs al doe ik niets met de POST-gegevens, dan nog geeft ie een foutmelding weer over het formulier.


Wat Bas zegt klopt. Sommige browsers gaan anders om met deze data. De names o.i.d. van de submit's worden niet altijd meegestuurd, daarom zal Jan zijn script vast ook kijken of er een post is gedaan met if($_SERVER['REQUEST_METHOD'] == 'POST').
Je moet dus hidden inputs doen om de forms uit elkaar te houden.
 
Bas Cost Budde

Bas Cost Budde

23/11/2010 21:45:09
Quote Anchor link
Oh Bart, nu zie ik dat je zegt dat er een fout optreedt. Welke fout is dat? De melding die je in de PHP zelf in elkaar zet?
Als ik de opzet van het script snap, dan "valideert" het het formulier door alle geleverde (POST)data te vergelijken met een array van formulierelementnamen. Zitten die knoppen van jou daar niet bij, dan klaagt het natuurlijk.

print_r() op strategische plekken vertelt je wat er gePOST wordt, en wat je verwacht.
 
Bart C

Bart C

24/11/2010 13:56:23
Quote Anchor link
Beste Bas, als ik aan de button een name geef dan wordt die inderdaad meegegeven als waarde in de array. En daardoor zegt hij dat er iets niet klopt.
 



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.