anoniem Geplaatst: 8 september 2003 Delen Geplaatst: 8 september 2003 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 Quote Link naar reactie
anoniem Geplaatst: 8 september 2003 Auteur Delen Geplaatst: 8 september 2003 Probeer eens [code:1:448ed8aa25]if($_POST){[/code:1:448ed8aa25]Dus zonder !empty. - Bas Quote Link naar reactie
anoniem Geplaatst: 8 september 2003 Auteur Delen Geplaatst: 8 september 2003 Het resultaat bijft hetzelfde. Maar in ieder geval bedankt. Overigens, een r-print geeft ook de tekstinputvelden weer met een lege string er achter. John Quote Link naar reactie
anoniem Geplaatst: 8 september 2003 Auteur Delen Geplaatst: 8 september 2003 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). Quote Link naar reactie
anoniem Geplaatst: 8 september 2003 Auteur Delen Geplaatst: 8 september 2003 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] Quote Link naar reactie
anoniem Geplaatst: 9 september 2003 Auteur Delen Geplaatst: 9 september 2003 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 Quote Link naar reactie
anoniem Geplaatst: 9 september 2003 Auteur Delen Geplaatst: 9 september 2003 Mensen, hardstikke bedankt allemaal weer voor het meedenken, meezoeken en alle tips. Dank zij jullie ben ik er in geslaagd om het hele script zo te laten werken als ik het in gedachten had. En belangrijker nog, heb ik weer veel opgestoken van de werking van sommige PHP-functies. John Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen