login  Naam:   Wachtwoord: 
Registreer je!
 Forum

formulier werkt niet correct

Offline Shortmaster - 30/01/2006 14:29 (laatste wijziging 30/01/2006 14:32)
Avatar van ShortmasterNieuw lid Ik heb een formulier.php met het formulier. Dit werkt correct. Als er op de Submit knop wordt gedrukt wordt hij naar verwerken.php gestuurd. Daar wordt hij verder behandeld. Alleen nu werkt de $error niet, als ik bij geen een veld iets invul bijvoorbeeld, ook als ik bij 1 veld niets invul werkt hij ook niet! Zie hieronder verwerken.php, waarschijnlijk is er iets mis met isset($error), want deze wordt niet weergegeven!

  1. <?php
  2. //Als er op de Submit knop is gedrukt van het formulier
  3. if (isset($_POST['Verzenden']))
  4. {
  5. if (!isset($_POST['naam'])) {
  6. $error = "Naam is niet ingevuld <br>";
  7. }
  8. if (!isset($_POST['email'])) {
  9. $error .= "E-mail adres is niet ingevuld <br>";
  10. }
  11. if (!isset($_POST['onderwerp'])) {
  12. $error .= "Geen onderwerp ingevuld <br>";
  13. }
  14. if (!isset($_POST['bericht'])) {
  15. $error .= "Geen bericht geschreven";
  16. }
  17. if (isset($error)) { //Als er een $error bestaat wordt deze weergegeven
  18. echo $error;
  19. }
  20.  
  21.  
  22. else {
  23. echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden
  24. }
  25. }


Hopelijk moet het anders en is het bij jullie bekend hoe. bedankt alvast!

2 antwoorden

Gesponsorde links
Offline Button - 30/01/2006 14:35 (laatste wijziging 30/01/2006 14:51)
Avatar van Button PHP ver gevorderde je moet i.p.v. isset() -> empty() gebruiken. Het is namelijk zo dat als je isset() gebruikt, je postvar wel kan bestaan, maar nog geen waarde heeft en toch zal hij true retourneren! empty() daarintegen test wel degelijk of de var een waarde heeft en zal op basis daarvan true of false retourneren

edit: dus zo:
  1. <?php
  2. //Als er op de Submit knop is gedrukt van het formulier
  3. if (isset($_POST['Verzenden']))
  4. {
  5. if (empty($_POST['naam'])) {
  6. $error = "Naam is niet ingevuld <br>";
  7. }
  8. if (empty($_POST['email'])) {
  9. $error .= "E-mail adres is niet ingevuld <br>";
  10. }
  11. if (empty($_POST['onderwerp'])) {
  12. $error .= "Geen onderwerp ingevuld <br>";
  13. }
  14. if (empty($_POST['bericht'])) {
  15. $error .= "Geen bericht geschreven";
  16. }
  17. if (isset($error)) { //Als er een $error bestaat wordt deze weergegeven
  18. echo $error;
  19. }
  20.  
  21.  
  22. else {
  23. echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden
  24. }
  25. }


en er klopt nog iets niet. bij elke foutmelding buiten $error = "Naam is niet ingevuld gebruik je $error .= "foutmelding hier"; wel als hij de gebruiker nu wel degelijk een naam heeft ingevuld, maar bv. geen email kan je een een notice : Undefined variable: error op r ... van php krijgen dat $error nog niet bestaat( snap je? omdat je dan eigenlijk de foutmelding-string optelt bij een var die niet bestaat) dus als ik van jou was zou ik het zo doen :

  1. <?php
  2. //Als er op de Submit knop is gedrukt van het formulier
  3. $error=NULL;//maak de variable aan met NULL
  4. if (isset($_POST['Verzenden']))
  5. {
  6. if (empty($_POST['naam'])) {
  7. $error .= "Naam is niet ingevuld <br>";
  8. }
  9. if (empty($_POST['email'])) {
  10. $error .= "E-mail adres is niet ingevuld <br>";
  11. }
  12. if (empty($_POST['onderwerp'])) {
  13. $error .= "Geen onderwerp ingevuld <br>";
  14. }
  15. if (empty($_POST['bericht'])) {
  16. $error .= "Geen bericht geschreven";
  17. }
  18. if (isset($error)) { //!!Omdat $error nu al bestaat, wil dat niet zeggen dat hij hem hier gaat afdrukken omdat NULL bij de isset()-functie FALSE retourneert! handig toch ;)
  19. echo $error;
  20. }
  21.  
  22.  
  23. else {
  24. echo "Dit is gewoon niets want ik bespaar jullie de rest van het script want dat is niet nodig in dit topic bij deze vraag"; //Geen error gevonden
  25. }
  26. }

(het laaste stuk code is dus het beste)
edit: oh ja juist, ik had gwn isset() vervangen 
Offline Shortmaster - 30/01/2006 14:48
Avatar van Shortmaster Nieuw lid Ja dank je wel.. het werkt!
Alleen moet het uitroepteken wel weggehaald worden voor empty. Anders krijg je precies het omgekeerde ;)

Maar bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.218s