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] Formulier checken op niet ingevulde velden

Peter Hoogendoorn
4 antwoorden
  • Ik (PHP-beginner 8) ) heb een formulier gebouwd. Verzenden enzo lukt allemaal. Nu wilde ik een check inbouwen zodat ik ervoor kan zorgen dat bepaalde velden moeten worden ingevuld. Daar gaat het fout.

    [quote:81e3924097]
    <?php
    $recipient = "fffff@fff.com
    $subject = "Formulier via site";
    $header = "From: " . $email . "
    ";
    -Etc..-
    mail($recipient, $subject, $mail_body, $header);
    if($Submit) {
    if(strlen($voornaam) == 0) {
    $error_msg .= "Voer alstublieft uw voornaam in.<br>";
    }
    if(strlen($achternaam) == 0) {
    $error_msg .= "Voer alstublieft uw achternaam in.<br>";
    }
    if(strlen($email) == 0) {
    $error_msg .= "Voer alstublieft uw e-mailadres in.<br>";
    }
    if(strlen($tekst) == 0) {
    $error_msg .= "Laat ons alstublieft weten wat u ons wilt vragen.<br>";
    }

    if($error_msg) {
    // Een van de velden werd niet goed ingevuld
    echo "Uw vraag kon om de volgende redenen helaas niet worden verwerkt:<br><br>";
    echo $error_msg;
    echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Vorige</a> en vul alle velden in.";
    if($error_msg) {
    // Een van de velden werd niet goed ingevuld
    echo "Uw vraag kon om de volgende redenen helaas niet worden verwerkt:<br><br>";
    echo $error_msg;
    echo "<br>Klik alstublieft op <a href=javascript:history.back(1)>Vorige</a> en vul alle velden in.";
    }
    else
    {
    // Formulier uitgevoerd: melding weergeven
    echo "Hartelijk dank voor uw reactie.";
    }}
    else
    {
    // Formulier nog niet uitgevoerd: formulier opnieuw weergeven
    ?>
    -Formuliercode-
    </form>
    <?php
    }
    ?>[/quote:81e3924097]

    1. Bij elke oproep van de pagina wordt een mail verzonden
    2. De check werkt niet
  • Je moet natuurlijk eerst checken en dan pas mail sturen, nu doe je het sowieso andersom en dat kan niet goed zijn.

    Verder haal je waarden van een formulier op met $_POST['naam'], dus om als voorbeeld die $voornaam te nemen:[code:1:89b7cf67b1]if(!isset($_POST['voornaam'])
    {
    $error_msg .= "Voer alstublieft uw voornaam in.<br>";
    }[/code:1:89b7cf67b1]
  • Het formulier werkt alleen nu doet ook het volgende probleem zich voor :{

    De pagina is nogal zwaar en daarom maak ik gebruik van het volgende:
    [quote:d2a1b749db]
    <?php
    switch ($_GET['page'])
    {
    case home:
    include ("code/home.php");
    break;
    case ontwerp:
    include ("code/ontwerp.php");
    break;
    case ontwerpschetsen:
    include ("code/ontwerpschetsen.php");
    break;
    case onderhoud:
    include ("code/onderhoud.php");
    break;
    case contact:
    include ("code/contact.php");
    break;
    default:
    ?>
    [/quote:d2a1b749db]

    Allemaal leuk enzo en het werkt maar als ik nu op verzenden klik dan gooit ie de check er niet in. Die check verwijst 'm namelijk door naar een andere pagina en die pagina is dus de default.
    Draai ik contact.php afzonderlijk dus www.url.com/contact.php dan werkt ie wel prima.
    Hoe kan dit worden opgelost?
  • is dit probleem opgelost??

    ik had hetzelfde probleem..

    je gebruikt zeker PHP_SELF als formhandler??

    Je verwacht dat hij dan weer teruggaat naar contact.php.

    Stel jij hebt index.php?page=contact, dan gaat hij terug naar index.php

    ik heb het opgelost met
    [code:1:e91125fd1a]
    <form action="<?php echo $PHP_SELF ?>?page=contact" name="contact" method="POST">[/code:1:e91125fd1a]

    Oftewel ?page=contact er gewoon achtergeplakt.

    Ik weet niet of dit de beste manier is maar het werkt wel :wink:

Beantwoord deze vraag

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