2016-08-03 58 views
-1

我目前正在使用php和mysql開發一個項目。我對PHP很陌生,我希望能夠在表單操作完成之前檢查表單是否有錯誤。 (表單動作發送信息到mySQL數據庫)。PHP MySQL表單驗證

if(isset($_POST['SendOrder'])) { 

$FirstName1Err = $LastName1Err = $Email1Err = $Phone1Err = $productsErr = $Size1Err = $Quantity1Err = $Price1Err = ""; 

if (empty($_POST['FirstName1'])) { 
$FirstName1Err = "Your first name is required"; } 

if (empty($_POST['LastName1'])) { 
$LastName1Err = "Your last name is required"; } 

if (empty($_POST['Email1'])) { 
$Email1Err = "Your email is required"; } 

if (empty($_POST['Phone1'])) { 
$Phone1Err = "Your phone number is required"; } 

if (empty($_POST['products'])) { 
$productsErr = "Choosing a product is required"; } 

if (empty($_POST['Size1'])) { 
$Size1Err = "Choosing a size is required"; } 

if (empty($_POST['Quantity1'])) { 
$Quantity1Err = "Choosing a quantity is required"; } 

if (empty($_POST['Price1'])) { 
$Price1Err = "Choosing a price is required"; } 

} 

session_start(); 
require 'NFTconnect2.php'; 

$epr=''; 
$msg=''; 

if(isset($_GET['epr'])) 
$epr=$_GET['epr']; 



if($epr=='save') 
    { 
     $FirstName1 = $_POST['FirstName1']; 
     $LastName1 = $_POST['LastName1']; 
     $Email1 = $_POST['Email1']; 
     $Phone1 = $_POST['Phone1']; 
     $products = $_POST['products']; 
     $Size1 = $_POST['Size1']; 
     $Quantity1 = $_POST['Quantity1']; 
     $Price1 = $_POST['Price1']; 

$a_sql=mysqli_query($con, "INSERT INTO Inventory VALUES('','$FirstName1','$LastName1', '$Email1', '$Phone1', '$products', '$Size1', '$Quantity1', '$Price1')"); 

     if($a_sql) 
      $msg='Your order was successful!'; 
     else 
      $msg= 'Your order was not successful! '; 

    } 

基本上我的問題是:我怎麼能寫一個「如果」的聲明,這樣我可以先檢查表單驗證,如果驗證通過,那麼我可以運行代碼的第二部分。在此先感謝

+0

你的session_start()應該放在文件的bigin中。 –

+0

if($ err1 || $ err2 || ...) –

+0

看看我的回答:) –

回答

0

在所謂$hasError = false;

對於每次添加一個錯誤行開頭添加一個變量,設置$hasError = true;這樣的:

if (empty($_POST['FirstName1'])) { 
$FirstName1Err = "Your first name is required"; 
$hasError = true;} 

if (empty($_POST['LastName1'])) { 
$LastName1Err = "Your last name is required"; 
$hasError = true;} 

//ETC 

然後,包你的代碼中的第二部分if像這樣:

if (!$hasError) { //If hasError is still false 
    //Do stuff 
} 

我覺得有必要提一提,有驗證EAC的更有效的方法雖然這不是你的關注,也不是你的問題,所以我會留下我的答案是:)

0

而不是檢查你的所有input是否從一堆if陳述是空的帖子,把所有您input S的到一個數組的名字:

$required = array('input1', 'input2', 'input3'); // change input1, input2... to what you require 

然後,使用foreach循環來檢查,以瞭解任何輸入是否是空的(這是$required陣列的內部:

foreach($_POST as $key=>$value){ 
    if(empty($value) && in_array($key, $required){ 
     $errors = true; // set errors to true 
     echo $key . 'Is required.' // output error 
    } 
} 

現在,要檢查驗證是否已通過,只需檢查是否未設置$errors

if(!$errors){ 
    // validation passed 
} 

很明顯,您可以根據您的需要定製此代碼。但是,如果您需要任何幫助,只需發表評論,我會盡我所能幫助您理清它:)

希望這有助於您並節省一點時間!

-2

我建議使用Javascript進行驗證,而不是在後端進行驗證。 。

實施例:


功能validateForm(){
變種validateFname = document.forms [ 「myForm會」] [ 「FIRSTNAME1」]值;
if(validateFname == null || validateFname ==「」){
alert(「Name must be filled out」);
return false;
}
}

+0

客戶端驗證不能被信任,他仍然需要做後端驗證 – dramzy

+0

不是他想做什麼...... haha​​ha – JohnStands