Something like
$error_message='';
if(empty($_POST['guest_no'])
{ $error_message .= 'No number of Guest number. ';
}
elseif(!is_numeric($_POST['guest_no'] || $_POST['guest_no']<0 || $_POST['guest_no']>7)
{ $error_message .= 'Guest number out of range. ';
if(empty($_POST['zip_no'])
{ $_POST['zip_no']=''; // Zip is optional
}
elseif(!preg_match('/\d{5}-\d{4}/', $_POST['zip_no']))
{ $error_message .= 'Zip number invalid. ';
//etc.etc.
if($error_message=='')
{ //Form successfully validated
}
else
{ // Form invalid. $error_message sez wot's wrong
}
preg_match('/(\d\d)-(\d\d)-(\d\d)/', $date, $bits)
will match yy-mm-dd, with $bits[1]..$bits[3] being the - well, the pairs of digits in question. check_date() can be used to see if it's valid (Eg., 03-02-29 is not).
One thing I don't understand is why date of last stay and date of reservation are in different formats.