برای این که شما باید ابتدا ولیدیشن کردن ایمیل رو بلد باشید که فکر کنم بلدین چون در این زمینه سوال نکردین...
یک فرم داریم شامل نام و ایمیل فرو رو با ارسال به همون صفحه ای که هست میفرستیم یعنی action فرم میشه خود صفحه ای که توش هست یا همون که مقدارش خالی باشه همین میشه عملا...
مقدار فیلدها رو برابر با @$_POST['thisFieldName'] میذاریم یعنی چی؟ یعنی مثلا برای ایمیل مینویسیم value="<?php echo @$_POST['email']?>"
و فیلدهای دیگه هم به همین صورت...
فرم که ارسال میشه بالای فرم ولیدیشن فرم رو انجام میدین حالا فرضا ولیدیشن انجام شد و تشخیص دادید که ایمیل اشتباست...
یک متغیر تعریف میکنید که مثلا اگر ولیدیشن اشتباه بود مقدارش مثلا بشه -1 اگر ولیدیشن ها درست بود مقدارش بشه 1...
اگر مقدار این متقیر یا فلگ برابر 1 بود که کدهای درج یا ویرایش یا هرکاری که میخواید انجام بدین رو انجام میدین...
اگر نبود دوباره فرم رو باید نمایش بدین که کاربر خطا رو درست کنه و دوباره فرم رو ارسال کنه وقتی فرم رو اینجا نمایش بدین مقادیر هرکدوم از فیلهای فرم برابر مقداری هست که قبلا ارسال شده همین کدی که نوشتم چون خودمون گفتید بهش بار اول چون مقداری ارسال نمیشه خالیه ولی بار دوم مقداری که ارسال شده جایگزین میشه...
حالا اگر میخواید واسه هرکدوم از این فیلدها شرط بذارید که اگر اشتباه بود خالی بشه برای هرکدوم از فیلدها موقع ولیدیشن یک فلگ یا متقیر تعریف میکنید مثل قبلی مثلا اگر ولیدیشن ایمیل اشتباه بود متغیر $validEmail=-1;
میشه...
حالا بخش value فیلد ایمیل هم به این صورت که بشه اگر اون فیلد خطایی داشته باشه اونوقت میاد خالیش میکنه که کاربر دوباره وارد کنه:value="<?php echo @$validEmail==-1?'':@$_POST['email']?>"
میگیم اگر خطا داشت مقدار خالی رو نمایش بده اگر نه مقداری که اگر ارسال شده رو نمایش بده...
$validEmail=0;
if(formSend){
if(email has error)
{
$err=-1;
$validEmail=-1
}
}
if($err!=-1&&formSend){everything is ok
do insert or update or ......
}
else{
//form not sended or an error hapend
<input name="email" value="@$validEmail==-1?'':@$_POST['email']?>">