2016-08-03 11 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! '; 

    } 

基本的に私の質問は:どのように私は、「IF」文を書くことができます検証に合格した場合、私が最初にして検証するためのフォームを確認することができるように、私はコードの2番目の部分を実行することができます。事前

+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

ifの文章の投稿からinputがすべて空であるかどうかを調べるのではなく、配列へのごinput秒の名前:

$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(){
するvar validateFname = document.forms [ "あるmyForm"] [ "FIRSTNAME1さん"]の値。
if(validateFname == null || validateFname == ""){
alert( "Name is fill out");
falseを返します。
}

+0

クライアント側の検証は信頼できませんが、彼は依然としてバックエンドの検証を行う必要があります – dramzy

+0

彼は何をしようとしていません... – JohnStands