Door
Wilfried Acke
op 26-06-2016 13:54
gewijzigd op 27-06-2016 10:21
2.995 views
Ik probeer al een week om volgende 2 scripts samen te voegen. Heb al van alles geprobeerd maar krijg altijd een wit scherm.
De scripts heb ik gevonden bij phptuts.
Het gaat over de datum controle checkdate die ik in het eerste script wil invoegen.
<?php include('connect.php'); ?>
<div id="onlineboeking">
<?php
//ini_set('display_errors', 1);
//error_reporting(E_ALL);
session_start();
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Zorgen dat de array met errors leeg is.
$_SESSION['errors'] = array();
$_SESSION['input'] = array();
// Velden in het formulier definiëren
$formuliervelden = array(
'dag'=> 'select',
'maand'=> 'select',
'jaar'=> 'select',
'tocht' => 'select',
'naam' => 'text',
'straat' => 'text',
'postcode' => 'text',
'woonplaats' => 'text',
'land' => 'text',
'telefoon' => 'text',
'telthuis' => 'text',
'geboortejaar' => 'select',
'lengte' => 'text',
'gewicht' => 'text',
'email' => 'text',
'fb' => 'text',
'mv' => 'radio',
'vlucht' => 'radio',
'idnummer' => 'text',
'akkoord' => 'checkbox'
);
// Velden waar geen controle op uitgevoerd hoeft te worden.
$no_check = array('idnummer');
// Loop alle elementen uit de $_POST array langs
foreach($formuliervelden as $veld => $type)
{
if($type == 'checkbox')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 'Je moet de checkbox "'.$veld.'" aanvinken';
}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}
elseif($type == 'radio')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 'Kies een optie bij "'.$veld.'"';
}
}
else
{
if(isset($_POST[$veld]))
{
// Spaties voor en achter input verwijderen
$value = trim($_POST[$veld]);
// Ingevulde waarden in een sessievariabele zetten.
$_SESSION['input'][$veld] = $value;
// Controle van verschillende velden.
// Velden waar geen controle op uitgevoerd hoeft te worden overslaan.
if(in_array($veld, $no_check))
{
continue;
}
// Controle op geldige postcode (4 cijfers + 2 letters).
elseif($veld == 'postcode')
{
if(!preg_match('/^[0-9]{4}[[:space:]]?[a-z]{2}$/i', $value))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 'Je hebt geen geldige postcode ingevuld.';
}
}
// Controle of rest van de velden ingevuld is.
else
{
if(empty($value))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 'Je bent vergeten het veld '.$veld.' in te vullen.';
}
}
}
else
{
$errors[] = 'Het veld '.$veld.' ontbreekt aan het formulier';
}
}
}
[size=xsmall][i]Toevoeging op 26/06/2016 13:55:56:[/i][/size]
En nu het tweede dat ik wil invoegen in het eerste:
// Datum controle
if(isset($aData['maand'], $aData['dag'], $aData['jaar']) && checkdate($aData['maand'], $aData['dag'], $aData['jaar']))
{
$sDatum = $aData['dag'].'-'.$aData['maand'].'-'.$aData['jaar'];
}
else
{
$aErrors[] = 'Dit is geen geldige datum';
}
?>
Bedankt. Maar vermoedelijk heb ik jouw code verkeerd gezet. Ik krijg geen wit scherm nu maar als ik bv. als datum 31 2 2000 invul zou ik een foutmelding moeten krijgen en die krijg ik niet.