Verplicht contact formulier

Status
Niet open voor verdere reacties.

Paulh9

Gebruiker
Lid geworden
2 nov 2009
Berichten
31
Hey allemaal,

Momenteel ben ik bezig met een inschrijfformulier.
Hierbij moet een deel verplicht in te vullen zijn.
Alleen nu lukt het niet helemaal.
Als je de verplichte invulvelden niet invult geeft hij dit aan in de php file, maar verstuurd het formulier wel.

Het mooiste zou zijn dat als je een invoerveld vergeet in te vullen, de border hieromheen rood word en in het veld aangeeft dat deze verplicht is.

Zou iemand me kunnen helpen hiermee? Want ik loop er helemaal vast op.

Hieronder een stuk van de HTML code:
* is verplicht in te vullen

HTML:
<fieldset>
	<legend>Persoonlijke gegevens</legend>
	<label><span class="verplicht">*</span>Roepnaam</label>
	<input type="text" name="Roepnaam">
	<label><span class="verplicht">*</span>Voorletter(s)</label>
	<input type="text" name="Voorletters">
	<label>Tussenvoegsel</label>
	<input type="text" name="Tussenvoegsel">
	<label><span class="verplicht">*</span>Achternaam</label>
	<input type="text" name="Achternaam">
	<label><span class="verplicht">*</span>Geboortedatum (dd-mm-jjjj)</label>
	<input type="text" name="Geboortedatum">
	<label><span class="verplicht">*</span>Geslacht</label>
	<input type="radio" name="Geslacht[]" value="man" class="radio">
	<label class="radiolabel">Man</label>
	<input type="radio" name="Geslacht[]" value="vrouw" class="radio">
	<label class="radiolabel">Vrouw</label>
	<label><span class="verplicht">*</span>Nationaliteit</label>
	<input type="text" name="Nationaliteit">
	<label><span class="verplicht">*</span>Sofinummer</label>
	<input type="text" name="Sofinummer">
	<label><span class="verplicht">*</span>Straat</label>
	<input type="text" name="Straat">
	<label><span class="verplicht">*</span>Huisnummer</label>
	<input type="text" name="Huisnummer">
	<label>Toevoeging</label>
	<input type="text" name="Toevoeging">
	<label><span class="verplicht">*</span>Postcode</label>
	<input type="text" name="Postcode">
	<label><span class="verplicht">*</span>Woonplaats</label>
	<input type="text" name="Woonplaats">
	<label><span class="verplicht">*</span>Mobielnummer</label>
	<input type="text" name="Mobielnummer">
	<label>Vastnummer</label>
	<input type="text" name="Vastnummer">
	<label><span class="verplicht">*</span>ICE nummer</label>
	<input type="text" name="ICEnummer">
	<label><span class="verplicht">*</span>E-mailadres</label>
	<input type="text" name="Emailadres">
</fieldset>

Hieronder de PHP code

PHP:
<?php
	if(empty($_POST['Roepnaam'])){echo"Roepnaam invullen";}
	if(empty($_POST['Voorletters'])){echo "Voorletters invullen";}
	if(empty($_POST['Achternaam'])){echo"Achternaam invullen";}
	if(empty($_POST['Geboortedatum'])){echo"Geboortedatum invullen";}
	if(empty($_POST['Geslacht'])){echo"Geslacht kiezen";}
	if(empty($_POST['Nationaliteit'])){echo "Nationaliteit invullen";}
	if(empty($_POST['Sofinummer'])){echo"Sofinummer invullen";}
	if(empty($_POST['Straat'])){echo"Straat invullen";}
	if(empty($_POST['Huisnummer'])){echo"Huisnummer invullen";}
	if(empty($_POST['Postcode'])){echo"Postcode invullen";}
	if(empty($_POST['Woonplaats'])){echo"Woonplaats invullen";}
	if(empty($_POST['Mobielnummer'])){echo"Mobielnummer invullen";}
	if(empty($_POST['ICEnummer'])){echo"ICEnummer invullen";}

else{
	echo "Uw e-mail is succes vol verstuurd!";
	mail($to, $subject, $body);
	}
?>

Hoop dat een van jullie mij kan helpen.

Alvast bedankt.

Groeten Paul Heijmans
 
Probeer het onderstaande eens, is niet getest en ziet er niet uit. Maar zou moeten werken.
PHP:
<?php
    $error = FALSE;
    if(empty($_POST['Roepnaam'])){$error = TRUE; echo"Roepnaam invullen";}
    if(empty($_POST['Voorletters'])){$error = TRUE; echo "Voorletters invullen";}
    if(empty($_POST['Achternaam'])){$error = TRUE; echo"Achternaam invullen";}
    if(empty($_POST['Geboortedatum'])){$error = TRUE; echo"Geboortedatum invullen";}
    if(empty($_POST['Geslacht'])){$error = TRUE; echo"Geslacht kiezen";}
    if(empty($_POST['Nationaliteit'])){$error = TRUE; echo "Nationaliteit invullen";}
    if(empty($_POST['Sofinummer'])){$error = TRUE; echo"Sofinummer invullen";}
    if(empty($_POST['Straat'])){$error = TRUE; echo"Straat invullen";}
    if(empty($_POST['Huisnummer'])){$error = TRUE; echo"Huisnummer invullen";}
    if(empty($_POST['Postcode'])){$error = TRUE; echo"Postcode invullen";}
    if(empty($_POST['Woonplaats'])){$error = TRUE; echo"Woonplaats invullen";}
    if(empty($_POST['Mobielnummer'])){$error = TRUE; echo"Mobielnummer invullen";}
    if(empty($_POST['ICEnummer'])){$error = TRUE; echo"ICEnummer invullen";}
 
    if(!$error){
    echo "Uw e-mail is succes vol verstuurd!";
    mail($to, $subject, $body);
    }
?>
 
Dan zou ik het eerder met een array oplossen:

PHP:
$error = array();
if(empty($_POST['Roepnaam'])) { $error[] = "Roepnaam invullen"; }
if(empty($_POST['Voorletters'])) { $error[] = "Voorletters invullen"; }
if(empty($_POST['Achternaam'])) { $error[] = "Achternaam invullen"; }
if(empty($_POST['Geboortedatum'])) { $error[] = "Geboortedatum invullen"; }
if(empty($_POST['Geslacht'])) { $error[] = "Geslacht kiezen"; }
if(empty($_POST['Nationaliteit'])) { $error[] = "Nationaliteit invullen"; }
if(empty($_POST['Sofinummer'])) { $error[] = "Sofinummer invullen"; }
if(empty($_POST['Straat'])) { $error[] = "Straat invullen"; }
if(empty($_POST['Huisnummer'])) { $error[] = "Huisnummer invullen"; }
if(empty($_POST['Postcode'])) { $error[] = "Postcode invullen"; }
if(empty($_POST['Woonplaats'])) { $error[] = "Woonplaats invullen"; }
if(empty($_POST['Mobielnummer'])) { $error[] = "Mobielnummer invullen"; }
if(empty($_POST['ICEnummer'])) { $error[] = "ICEnummer invullen"; }

if(count($error) > 0) {
  echo 'De volgende fouten zijn gevonden';
  echo '<ul>';
  foreach($error AS $melding) {
    echo '<li>'. $melding .'</li>';
  }
  echo '</ul>';
} else {
  if(mail($to, $subject, $body)) {
    echo 'Uw e-mail is succesvol verstuurd!';
  } else {
    echo 'Het verzenden van de e-mail is mislukt!';
  }
}
 
Wat ik gedaan heb was ook maar ff snel wat plakken.
want als je het dan helemaal netjes zou willen doen, dan zou je de errors in een session zetten en de pagina terug sturen naar de form en daar de errors achter de bij behorende velden laten zien.
Maar dat was niet allemaal de vraag. HI en als we hier alles voorkauwen dan leer men nix meer ;)
 
Bedankt voor jullie antwoorden.
Omdat ik het zelf wil leren heb ik wat tutorials gevolgd.

Nu kwam ik tot deze code:

PHP:
<?php

	if(isset($_POST['roepnaam'], $_POST['voorletters'], $_POST['tussenvoegsel'], $_POST['achternaam'], $_POST['geboortedatum'], $_POST['nationaliteit'], $_POST['sofinummer'], $_POST['straat'], $_POST['huisnummer'], $_POST['toevoeging'], $_POST['postcode'], $_POST['woonplaats'], $_POST['mobielnummer'], $_POST['vastnummer'], $_POST['icenummer'], $_POST['emailadres']))
	{
		$errors = array();
			
		$roepnaam = $_POST['roepnaam'];
		$voorletters = $_POST['voorletters'];
		$tussenvoegsel = $_POST['tussenvoegsel'];
		$achternaam = $_POST['achternaam'];
		$geboortedatum = $_POST['geboortedatum'];
		//$geslacht = $_POST['geslacht'];
		$nationaliteit = $_POST['nationaliteit'];
		$sofinummer = $_POST['sofinummer'];
		$straat = $_POST['straat'];
		$huisnummer = $_POST['huisnummer'];
		$toevoeging = $_POST['toevoeging'];
		$postcode = $_POST['postcode'];
		$woonplaats = $_POST['woonplaats'];
		$mobielnummer = $_POST['mobielnummer'];
		$vastnummer = $_POST['vastnummer'];
		$icenummer = $_POST['icenummer'];
		$emailadres = $_POST['emailadres'];

		if (empty($roepnaam) || empty($voorletters) || empty($achternaam) || empty($geboortedatum) || empty($nationaliteit) || empty($sofinummer) || empty($straat) || empty($huisnummer) || empty($postcode) || empty($woonplaats) || empty($mobielnummer) || empty($icenummer) || empty($emailadres))
		{
			$errors[] = 'De velden met * een zijn verplicht';
		}
		else
		{

			if(strlen ($roepnaam) <2)
			{
				$errors[] = 'Naam is te kort';
			}
			
			if(!is_numeric($geboortedatum))
			{
				$errors[] = 'Geboortedatum moet cijfers zijn';
			}
			else 
			{
				if($geboortedatum <= 0)
				{
					$errors[] = 'Cijfers moeten positief zijn';
				}
			}

			if(!is_numeric($sofinummer))
			{
				$errors[] = 'Sofinummer moeten cijfers zijn';
			}
			
			if(!is_numeric($huisnummer))
			{
				$errors[] = 'Huisnummer moet cijfers zijn';
			}

			if(!is_numeric($mobielnummer))
			{
				$errors[] = 'Mobielnummer moet cijfers zijn';
			}
			
			if(!is_numeric($icenummer))
			{
				$errors[] = 'ICEnummer moet cijfers zijn';
			}
			
			if(filter_var ($emailadres, FILTER_VALIDATE_EMAIL) ===FALSE)
			{
				$errors[] = 'Geef een valid emailadres op';
			}

		}

		if (!empty($errors))
		{
			foreach($errors as $error)
			{
				echo '<strong>', $error,'</strong><br />';
			}
		}
		else
		{
			echo 'gelukt';
		}
		
	}
?>

<form action="index.php" method="POST">
	<fieldset>
		<legend>Persoonlijke gegevens</legend>
		<label><span class="verplicht">*</span>Roepnaam</label>
		<input type="text" name="roepnaam">
		<label><span class="verplicht">*</span>Voorletter(s)</label>
		<input type="text" name="voorletters">
		<label>Tussenvoegsel</label>
		<input type="text" name="tussenvoegsel">
		<label><span class="verplicht">*</span>Achternaam</label>
		<input type="text" name="achternaam">
		<label><span class="verplicht">*</span>Geboortedatum (dd-mm-jjjj)</label>
		<input type="text" name="geboortedatum">
		<label><span class="verplicht">*</span>Geslacht</label>
		<input type="radio" name="geslacht[]" value="man" class="radio">
		<label class="radiolabel">Man</label>
		<input type="radio" name="geslacht[]" value="vrouw" class="radio">
		<label class="radiolabel">Vrouw</label>
		<label><span class="verplicht">*</span>Nationaliteit</label>
		<input type="text" name="nationaliteit">
		<label><span class="verplicht">*</span>Sofinummer</label>
		<input type="text" name="sofinummer">
		<label><span class="verplicht">*</span>Straat</label>
		<input type="text" name="straat">
		<label><span class="verplicht">*</span>Huisnummer</label>
		<input type="text" name="huisnummer">
		<label>Toevoeging</label>
		<input type="text" name="toevoeging">
		<label><span class="verplicht">*</span>Postcode</label>
		<input type="text" name="postcode">
		<label><span class="verplicht">*</span>Woonplaats</label>
		<input type="text" name="woonplaats">
		<label><span class="verplicht">*</span>Mobielnummer</label>
		<input type="text" name="mobielnummer">
		<label>Vastnummer</label>
		<input type="text" name="vastnummer">
		<label><span class="verplicht">*</span>ICE nummer</label>
		<input type="text" name="icenummer">
		<label><span class="verplicht">*</span>E-mailadres</label>
		<input type="text" name="emailadres">
	</fieldset>
	<p>
		<input type="submit" value="register">
	</p>
</form>

Maar nu heb ik de volgende problemen.
Ten eerste waar voeg ik nu toe waar het formulier naar toe moet?
Ten tweede hoe kan ik ervoor zorgen dat het script ook het geslacht controleert?
En als laatste, als er een verplicht invoerveld vergeten of verkeerd ingevuld, hoe kan ik erdan voor zorgen dat de border dan rood word.

Alvast bedankt!
 
1..echo 'gelukt' zou je kunnen vervangen met een header("Location: map/map/bedankt.php") dit stuurt de gebruiker door naar een andere pagina waar je ze bv kunt bedanken voor het invullen.

2.. <input type="radio" name="geslacht" value="man" class="radio" CHECKED>
CHECKED zorgt ervoor dat man nu standaard ingevuld is, ook is het bij de name niet nodig dat je [] achter zet, want je kunt maar 1 keuze krijgen met een radio button.
Als je CHECKED niet wilt gebruiken, dan zou je in je script moeten kijken of isset($_POST['geslacht']){ // doen als wel ingevuld } else { // doe als geen keuze is gemaakt }
3..
PHP:
<?PHP
$error = array('roepnaam' => 'Moet allemaal letters zijn', 'telefoon' => 'Moet allemaal cijfers zijn');

$okey = "okey";
$fout = "error";
?>
<label><span class="<?= (isset($error['roepnaam']) ? $fout : $okey; ?>">*</span>Roepnaam</label>
        <input type="text" name="roepnaam">

Dit is een klein voorbeeldje hoe je het zou kunnen aanpakken.
je moet dan van je $error array een assoc array maken, dus $error['roepnaam'] = 'blahblahblah'
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan