Beste mensen,

Ik heb een verzendformulier dat prima werkt en helemaal naar wens is. Maar als ik de naam vergeet in te vullen, geeft hij dat mooi aan, maar verzend wel het formulier. Ik krijg dan de tekst:

"U bent uw naam vergeten in te vullen.

Bedankt voor het invullen van het aanmeldingsformulier.
U zult binnenkort de eerste nieuwsbrief ontvangen."

Het is de bedoeling dat de onderste regels niet verschijnen en dat het bericht niet verstuurd wordt. Ik heb al vanalles geprobeerd en op internet nagezocht, maar ik kom er niet uit. Kan iemand me hierbij helpen?
Hieronder mijn script.

<form method="POST" action="nieuwsbrief.php" name="form" onSubmit="return checkform(this);">
<table cellspacing="5" cellpadding="2" border="0" width="544" height="98">
<tr>
<td height="26" colspan="2"><span class="style2">U kunt zich hier aanmelden voor de nieuwsbrief </span></td>
</tr>
<tr>
<td width="147" height="26"><span class="style16 style3">Naam:</span></td>
<td width="374" height="26" bordercolor="#FFCCCC"><font size="2" face="Arial, Helvetica, sans-serif">
<input name="naam" type="text" style="font-family: sans-serif" size="44">
*</font></td>
</tr>
<tr>
<td height="26"><span class="style16 style3">E-mail:</span></td>
<td height="26"><font size="2" face="Arial, Helvetica, sans-serif">
<input name="email" type="text" style="font-family: sans-serif" size="44">
</font></td>
</tr>
</table>
<p class="style1"> <font size="2">
<input type="submit" value="Formulier verzenden" name="bericht_verzenden">
<input type="reset" value="Formulier wissen" name="bericht_wissen">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
* = Verplicht</font></p>
</form></td>
</tr>
</table><?php
if ($_POST['bericht_verzenden']) {

$naar = "[email protected]";
$onderwerp = "AANMELDINGSFORMULIER";
$naam_veld = $_POST['naam'];
$email_veld = $_POST['email'];
$FromThisEmail = $email_veld;
$data = "Aanmeldingsformulier:\n\nNaam: $naam_veld\nEmail: $email_veld";

if(isset($_POST['bericht_verzenden']))
{

if($naam_veld == "")
{echo "<br> - U bent uw naam vergeten in te vullen";}
if($email_veld == "")
{echo "<br> - U bent uw email-adres vergeten in te vullen";}

else {
mail($naar, $onderwerp, $data, "FROM: " . $FromThisEmail);
echo "<br>Bedankt voor het invullen van het aanmeldingsformulier.<br>U zult binnenkort de eerste nieuwsbrief ontvangen.";
}
}
}

?>
Je moet de controles niet na het submitten uitvoeren maar ervoor. Hier zijn simpele javasciptjes voor te vinden die in je html worden geintegreerd.

Voorbeeld:

<script type="text/javascript">
<!--
function validate_form_2( form )
{
    if( form.elements['naam'].value=="" ) { alert("Naam is niet ingevuld"); form.elements['naam'].focus(); return false; }
    if( form.elements['adres'].value=="" ) { alert("Adres is niet ingevuld"); form.elements['adres'].focus(); return false; }
    if( form.elements['postcode'].value=="" ) { alert("Postcode is niet ingevuld"); form.elements['postcode'].focus(); return false; }
    if( form.elements['plaats'].value=="" ) { alert("Plaats is niet ingevuld"); form.elements['plaats'].focus(); return false; }
    if( form.elements['telefoon'].value=="" ) { alert("Telefoon is niet ingevuld"); form.elements['telefoon'].focus(); return false; }
    if( isNaN( parseInt( form.elements['telefoon'].value ) ) ) { alert("Voer een getal in."); form.elements['telefoon'].focus(); return false; }
    if( form.elements['email'].value=="" ) { alert("Email is niet ingevuld"); form.elements['email'].focus(); return false; }
    if(!ValidateEmail(form.elements['email'].value)) { alert("Emailadres onjuist"); form.elements['email'].focus(); return false; }
    if( form.elements['aantal'].value=="" ) { alert("Aantal gasten niet ingevuld"); form.elements['aantal'].focus(); return false; }
    if( isNaN( parseInt( form.elements['aantal'].value ) ) ) { alert("Voer een getal in."); form.elements['aantal'].focus(); return false; }
    return true;
}



je plaatst dit in de header van je html en de form in de body:
<form id="form_2" name="reserveren" onsubmit="return validate_form_2(this)" action="......

Het controleren gebeurt dan meteen en de gebruiker krijgt een pop-up wanneer iets fout is.
Kijk eens naar dit voorbeeldje wat ik voor je geschreven heb.


<?PHP

# Errors
error_reporting(E_ALL);

# Error is false
$Error = false
# Array voor messages
$Message = array();

# Kijken of er gepost wordt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	# Kijken of naam leeg is
	if(empty($_POST['naam']))
	{
		# Hé, geen naam ingevuld
		$Message[] = 'Vul A.U.B een naam in.';
		# Error is true
		$Error = true;
	}
	
	# Kijken of email leeg is
	if(empty($_POST['email']))
	{
		# Hé, geen email adres ingevuld
		$Message[] = 'Vul A.U.B een email adres in.';
		# Error is true
		$Error = true;
	}
	
	# Kijken of error false is
	if($Error == false)
	{
		$Message[] = 'Alle velden zijn ingevuld.';
	}
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?PHP

# Kijken of er message(s) zijn
if(!empty($Message))
{
	# Message(s) weergeven
	foreach($Message as $Msg)
	{
		echo $Msg.'<br/>';
	}
}

?>
<form id="form1" name="form1" method="post" action="">
  <p>Naam:
    <label>
      <input type="text" name="naam" id="naam" />
    </label>
  </p>
  <p>Email: 
    <label>
      <input type="text" name="email" id="email" />
    </label>
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit" />
    </label>
  </p>
</form>
</body>
</html>


Lees de oranje text ook maar even, dan leer je er weer wat van.

Let wel op dat je er meer controle's in moet gaan bouwen. Denk bijvoorbeeld aan het controleren of het email adres daadwerkelijk geldig is.

@ John & Hanneke

Houdt er wel rekening mee dat Javascript uit gezet kan worden, als je het dan doet doe het dan op beide manieren.
Alvast hartelijk bedankt voor de reacties. Ik ga weer aan het puzzelen.

Reageren