Вот как я бы сделал это без проверки JavaScript, вроде как урезано, потому что я не собираюсь писать все для вас:
<?php
//various form validation functions for checking if an input is numeric, or a valid email, or whatever
function Post_Error(&$error,$name)
{
if(is_array($error) && array_key_exists($name,$error))
{
echo '<span class="error">' . $error[$name] . '</span>';
}
}
/* or you could do this
function Post_Error($name)
{
global $error;
if(is_array($error) && array_key_exists($name,$error))
{
//yadda yadda
}
}
and then not pass the $error array each time*/
function Post_Fill($field)
{
if(is_array($_POST) && array_key_exists($field,$_POST))
{
echo $_POST[$field];
}
}
$error = array(); //Initialize error array outside of if statements, important because we are gonna be passing it below if there are errors or not, and if it is created inside one of the ifs then it might not be there when needed.
if($_POST['submit'])
{
if(!Valid_Name($_POST['cname'])) //Valid_Name() is one of the fictional validation functions from above, could also do it manually
{
$error['name'] = 'Name not valid. Field Required. Blah blah blah.';
}
if(!Valid_Email($_POST['cmail'])) //Could also have a single validate() function that validates everything sent through $_POST, and returns an array of errors
{
$error['email'] = 'Email not valid. Field Required. Must be longer than 5 characters. Whatever.';
}
//etc. etc. for all the fields
}
if($_POST['submit'] && count($error) == 0)
{
//Send Mail
echo '<h1>Mail Sent!</h1>'; //Or whatever message to user that mail was sent
}
else
{
?>
<form method="post" action="#" name="emailform">
<div class="rel">
<div class="confor nab"><input class="cname" type="text" name="name" value="<?php Post_Fill('name');?>"/><?php Post_Error($error,'name');?></div>
<div class="confor emb"><input class="cmail" type="text" name="email" value="<?php Post_Fill('email');?>"/><?php Post_Error($error,'email');?></div>
<div class="confor phb"><input class="cphone" type="text" name="phone" value="<?php Post_Fill('phone');?>"/><?php Post_Error($error,'phone');?></div>
<div class="confor evb"><input class="ceven" type="text" name="event" value="<?php Post_Fill('event');?>"/><?php Post_Error($error,'event');?></div>
<div class="confor wdb"><input class="cwed" type="text" name="wdate" value="<?php Post_Fill('wdate');?>"/><?php Post_Error($error,'wdate');?></div>
<div class="confor whb"><input class="chow" type="text" name="where" value="<?php Post_Fill('where');?>"/><?php Post_Error($error,'where');?></div>
<div class="confort nob"><textarea class="ctho" name="notes" cols="" rows=""><?php Post_Fill('notes');?></textarea><?php Post_Error($error,'notes');?></div>
<input name="submit" class="contactsend" type="submit" value="SEND" /></div>
</form>
<?php
} //Close else
?>
О, также, это своего рода вставной типВо-первых, вы бы включили его в страницу, на которую пошла бы форма, так что у вас уже есть все элементы <head>
и остальная часть макета страницы, внешняя по отношению к форме PHP.
Что будет делать этот код, так это то, что форма отправляется на ту же страницу, которая выполняет проверку, и либо удаляет форму и выдает сообщение о том, что письмо было отправлено пользователю, если на входе не было ошибок,или отобразить ошибки (в интервале class = "error") рядом с входами для тех входов, которые не были должным образом проверены при сохранении их предыдущего ввода для всех полей.