Ga naar inhoud

[PHP] !EMPTY($_POST) probleem (=OPGELOST)


anoniem

Aanbevolen berichten

Mensen, ik heb een probleempje met de !EMPTY functie In een PHP form heb ik de volgende code staan: [code:1:0b5fb3791f] <?php if(!empty($_POST)){ reset($_POST); While (list($element, $waarde)=each($_POST)){ if ($element != "Submit"){echo("Veld: <b>$element</b>, ingevulde waarde: <b>$waarde</b><br>\n");} else {echo("SubmitButton");} } } else{ echo("U heeft geen gegevens ingevuld!<br>"); echo("<a href=\"info_form.html\">Terug naar het formulier</a>"); } ?> [/code:1:0b5fb3791f] Wanneer ik dit laat runnen krijg ik als resultaat nooit terug dat er geen gegevens zijn ingevoerd. Alle tekstvelden worden door de while lus netjes weergegeven (wat volgens mij niet zou moeten wanneer ik niets invul) de gegevens van Checkboxes worden wel correct weergegeven. De gebruikte HTML pagina kan je vinden op www.capady.nl/info_form.html ik neem aan dat jullie slim genoeg zijn om daar ook de broncode te kunnen bekijken :-) Wie helpt me om dit probleempje op te lossen ? Alvast bedankt, John
Link naar reactie
Je controleerd of $_POST leeg is, maar deze is 'geset' bij het versturen van het formulier, ondanks dat de velden leeg zijn (maar hier was je zelf al achter). Hier kun je dus niet op controleren. Je dient de velden die je ingevuld wilt hebben te controleren of die geen lege string hebben (evt. kun je dit ook in javascript doen, voordat je het formulier verstuurd, maar dit is niet waterdicht).
Link naar reactie
Is dit wat? Je zal zelf nog even al je velden moeten invoeren, ik heb een klein beginnetje gemaakt. Nu heb je dus aan 1 PHP pagina genoeg! Veel plezier ermee. Owja en vergeet niet om de tabelnaam in het onderstaande script aan te passen! [code:1:31f1622fa1]<? // Databeestverbinding include ("config.php"); // Controleren of er gesubmit is if ($submit) { // De geposte variabelen ff op een rijtje zetten, lekker overzichtelijk $email = $_POST["email"]; $netnummer = $_POST["netnummer"]; $abonneenr = $_POST["abonneenr"]; // Dit verder zelf aanvullen... // Controle of alle velden ingevuld zijn if ($email=="" || $netnummer=="" || $abonneenr=="") { echo "Vul alle velden in"; } else { $toevoegen = " INSERT INTO tabelnaam (email,netnummer,aboneenr) VALUES ('$email','$netnummer','$aboneenr')"; mysql_query($toevoegen) or die (mysql_error()); // Als dat allemaal goed gaat komt er dit te staan, met een overzichtje van wat je hebt ingetypt echo " <b>E-mail:</b> $email<br><br> <b>Telefoon:</b> $netnummer-$aboneenr "; } } // Als er niet gesubmit is dan komt het formulier er te staan else { echo " <form method='post' action='info_form.php'> E-mail: <br> <input type='text' name='email'> <br> Telefoon: <br> <input type='text' name='netnummer'> - <input type='text' name='aboneenr'> <br>En dit natuurlijk uitbreiden <input type='submit' name='submit' value='Voeg toe'> "; } ?> [/code:1:31f1622fa1]
Link naar reactie
Op php.net staat hetvolgend commentaar over empty(): [quote:ee1a473b1c]I do not use empty() nor isset() to check form input. When I want to know if some field has been filled in, I simply check if $field!=''. My reasons are: -empty() fails if the field has 0 (the zero value), which may be a value I need. -isset() always returns true for a POST var, even if the form field was empty. So instead of... if (!empty($field)) {...} // bad ...or... if (isset($field)) {...} // bad ...I use if ($field != '') {...} // good! [/quote:ee1a473b1c] Uiteraard kun je door je velden heen loopen met: foreach($_POST as $VeldNaam => $VeldWaarde) if $VeldWaarde = '' { echo "$VeldNaam niet gevuld"; } Nou ja, iets van die strekking (niet gecontroleerd) maar 't idee zal je wel duidelijk zijn
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...