2015-09-12 3 views
2

Я думаю, что это очень просто, но я не знаю, как его выполнить.ошибки проверки и отображения формы php

У меня есть форма с некоторыми данными, и я создал другой файл php для проверки данных формы, но я не могу отобразить сообщение об ошибке обратно в форму, если проверка не удалась. Я приложил оба файла, но я не знаю, жарко, чтобы выполнить это :(

Мой form.php выглядит

<form name="form1" method="post" action="process/process_add_page.php"> 
    <fieldset> 
    <legend>Add Page</legend> 
    <table width="1056" height="365" border="1"> 
     <tr> 
     <th width="77" scope="col">Page Title</th> 
     <th width="962" scope="col"><label for="page_title"></label> 
     <input type="text" name="page_title" id="page_title"><span style="color:#FF0000">* <?php echo $titleerror;?></span></th> 
    </tr> 
    <tr> 
    <th scope="row">Page Description</th> 
    <td><label for="page_description"></label> 
    <textarea name="page_description" class="ckeditor" id="page_description" cols="100" rows="5"></textarea></td> 
    </tr> 
    <tr> 
    <th scope="row">Seo Title</th> 
    <td><label for="seo_title"></label> 
    <input type="text" name="seo_title" id="seo_title"></td> 
    </tr> 
    <tr> 
    <th scope="row">Seo Description</th> 
    <td><label for="seo_description"></label> 
    <textarea name="seo_description" class="ckeditor" id="seo_description" cols="45" rows="5"></textarea></td> 
    </tr> 
    <tr> 
    <th scope="row">Page Order</th> 
    <td><label for="page_order"></label> 
    <input type="text" name="page_order" id="page_order"></td> 
    </tr> 
    <tr> 
    <th scope="row">Page Status</th> 
    <td><label for="page_status"></label> 
     <select name="page_status" id="page_status"> 
     <option value="1">Active</option> 
     <option value="0">Inactive</option> 
    </select></td> 
    </tr> 
    <tr> 
    <th colspan="2" scope="row"><input type="submit" name="btnsubmit" id="btnsubmit" value="Submit"></th> 
    </tr> 
</table> 
<p>&nbsp;</p> 
    </fieldset> 
</form> 

и мой process_add_pages.php выглядит следующим образом

<?php 

require_once('../../classes/database.php'); 
require_once('../../classes/pages.php'); 
require_once('../../classes/redirect.php'); 

$objPage=new Page(); 

$titleerror=''; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(empty($_POST['page_title'])){ 
     $titleerror = "Title is required"; 
     echo $titleerror; 


    }else 
    { 
     $page_title=mysqli_real_escape_string($objPage->conxn,$_POST['page_title']); 
    if (!preg_match("/^[a-zA-Z ]*$/",$page_title)) { 
     $titleerror = "Only letters and white space allowed"; 

      } 
    } 

$page_description=mysqli_real_escape_string($objPage-  >conxn,$_POST['page_description']); 
$seo_title=mysqli_real_escape_string($objPage->conxn,$_POST['seo_title']); 
$seo_description=mysqli_real_escape_string($objPage->conxn,$_POST['seo_description']); 
$page_order=mysqli_real_escape_string($objPage->conxn,$_POST['page_order']); 
$page_status=mysqli_real_escape_string($objPage->conxn,$_POST['page_status']); 
} 


$objPage->setPage_title($page_title); 
$objPage->setPage_description($page_description); 
$objPage->setSeo_title($seo_title); 
$objPage->setSeo_description($seo_description); 
$objPage->setPage_status($page_status); 

if($objPage->addPage()){ 
    new Redirect('../index.php?page=page&action=view&success=The page has been created'); 
}else{ 
new Redirect('../index.php?page=page&action=view&error=The page could not be created'); 
} 



?> 
+0

Почему вы используете два разделенных файла? –

+0

coz У меня есть все файлы обработки формы в папке onle, которая управляет кодом –

ответ

3

Есть несколько небольших изменений, которые вы должны сделать, чтобы заставить его работать. В вашем файле process_add_pages.php есть пара проблем.

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(empty($_POST['page_title'])){ 
     $titleerror = "Title is required"; 
     echo $titleerror; /*error part-1 */ 


    }else 
    { 
     $page_title=mysqli_real_escape_string($objPage->conxn,$_POST['page_title']); 
    if (!preg_match("/^[a-zA-Z ]*$/",$page_title)) { 
     $titleerror = "Only letters and white space allowed"; /*error part-2 */ 

      } 
    } 

$page_description=mysqli_real_escape_string($objPage-  >conxn,$_POST['page_description']); 
$seo_title=mysqli_real_escape_string($objPage->conxn,$_POST['seo_title']); 
$seo_description=mysqli_real_escape_string($objPage->conxn,$_POST['seo_description']); 
$page_order=mysqli_real_escape_string($objPage->conxn,$_POST['page_order']); 
$page_status=mysqli_real_escape_string($objPage->conxn,$_POST['page_status']); 
} 

Если что-то пойдет не так, при проверке он будет эхо-сообщение об ошибке в файле process_add_pages.php. но он также выполнит sql-запросы. поэтому, если есть какие-либо проблемы при проверке, вы можете перенаправить на страницу формы с сообщением об ошибке. вы можете попробовать этот новый формат код ...

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(empty($_POST['page_title'])){ 
     $titleerror = "Title is required"; 
     new Redirect('../index.php?error="The page need a page title"'); 


    }elseif 
    { 
     $page_title=mysqli_real_escape_string($objPage->conxn,$_POST['page_title']); 
    if (!preg_match("/^[a-zA-Z ]*$/",$page_title)) { 
     new Redirect('../index.php?error="Only letters and white space allowed"'); 

      } 
    } 
else { 
$page_description=mysqli_real_escape_string($objPage-  >conxn,$_POST['page_description']); 
$seo_title=mysqli_real_escape_string($objPage->conxn,$_POST['seo_title']); 
$seo_description=mysqli_real_escape_string($objPage->conxn,$_POST['seo_description']); 
$page_order=mysqli_real_escape_string($objPage->conxn,$_POST['page_order']); 
$page_status=mysqli_real_escape_string($objPage->conxn,$_POST['page_status']); 
    } 
} 
0

Я думаю, что это лучший способ для проверки проверки. Добавьте onsubmit в форму. Проверьте функцию CheckValidation() в теге.

<form name="form1" method="post" action="process/process_add_page.php" onsubmit="return CheckValidation()"> 
    <fieldset> 
     <legend>Add Page</legend> 
     <table width="1056" height="365" border="1"> 
      <tr> 
      <th width="77" scope="col">Page Title</th> 
      <th width="962" scope="col"><label for="page_title"></label> 
      <input type="text" name="page_title" id="page_title"> 
      <span style="color:#FF0000" style="display:none" id="RequiredTitle">* Title is required</span> 
      <span style="color:#FF0000" style="display:none" id="OnlyLetters">* Only letters and white space allowed</span> 
      </th> 
     </tr> 
     <tr> 
       <th scope="row">Page Description</th> 
       <td><label for="page_description"></label> 
       <textarea name="page_description" class="ckeditor" id="page_description" cols="100" rows="5"></textarea></td> 
     </tr> 
     . 
     . 
     . 
     //Rest of the code 
</form> 

<script> 
    function CheckValidation() 
    { 
     var Title=$('#page_title').val(); 
     if(Title=="") 
     { 
      $('#RequiredTitle').show(); 
      return false; 
     } 
     else 
     { 
      if(!preg_match("/^[a-zA-Z ]*$/",Title)) 
      { 
       $('#OnlyLetters').show(); 
       return false; 
      } 
     } 
    } 
</script> 
Смежные вопросы