Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

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

Anoniem
John
6 antwoorden
  • 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>
    ");}
    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
  • Probeer eens [code:1:448ed8aa25]if($_POST){[/code:1:448ed8aa25]Dus zonder !empty.

    - Bas
  • 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
  • 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).
  • 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]
  • 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

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.