Вот как я хотел бы сделать это без проверки 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.
Что будет делать этот код, форма отправляется на ту же страницу, которая выполняет проверку, и либо удаляет форму, либо дает сообщение о том, что почта была отправлена пользователю, если на входе не было ошибок или отображается ошибки (в классе span = «ошибка») вне входных данных для тех входов, которые не были должным образом проверены при сохранении их предыдущего ввода для всех полей.
Что вы ищете - это javascript/ajax. – jeroen
ему не нужен ajax/javascript для этого, но это сделает пользователя намного приятнее! – Alfred
@ Alfred Вы можете быть правы, но это только моя интерпретация вопроса; Я думал о * другой странице * в смысле перезагрузки/обновления страницы. – jeroen