2016-05-26 19 views
1

データベースにデータを挿入するフォームを作成しました。 私はこれらがqueryDb.phpというファイルに配置され、データを取得し、それを表示するには、二つの機能を与えられてきた:PHPデータベースにデータを書き込む

function addCustomer($fname, $lname, $address, $phone) { 
    $db = new MyDB(); 
    if(!$db){ 
     echo '<script type="text/javascript">alert("'.$db->lastErrorMsg().'");</script>'; 
    } else { 
     //echo "Opened database successfully\n"; 
    } 

    $sql ='INSERT INTO CUSTOMERS (FIRSTNAME, LASTNAME, ADDRESS, PHONE) VALUES ("'.$fname.'", "'.$lname.'", "'.$address.'", "'.$phone.'");'; 
    $db->query($sql); 
} 

get関数:私のreviewsubmit.phpで

function getCustomers($searchTerm = null) {  
    $db = new MyDB(); 

    if(!$db){ 
     echo '<script type="text/javascript">alert("'.$db->lastErrorMsg().'");</script>'; 
    } else { 
     //echo "Opened database successfully\n"; 
    } 

    if(!$searchTerm) { 
     $sql ='SELECT * from CUSTOMERS;'; 
    } else { 
     $sql ='SELECT * FROM CUSTOMERS WHERE FIRSTNAME LIKE "'.$searchTerm.'" OR LASTNAME LIKE "'.$searchTerm.'" OR ADDRESS LIKE "'.$searchTerm.'" OR PHONE LIKE "'.$searchTerm.'"'; 
    } 
    $ret = $db->query($sql); 
    $array = []; 

    if(!$ret){ 
     echo $db->lastErrorMsg(); 
     return []; 
    } else { 
     while($row = $ret->fetchArray(SQLITE3_ASSOC)){ 
      $array[] = $row; 
     } 
     $db->close(); 
     return $array; 
    } 
} 

私はトップにこれを持っている:

<?php 
    require_once "queryDb.php"; 
    $firstname = $_POST["firstname"]; 
    $lastname = $_POST["lastname"]; 
    $address = $_POST["address"]; 
    $phone = $_POST["phone"]; 
    addCustomer($firstname, $lastname, $address, $phone); 
?> 

をそして、これは私のフォームです:

<form action="reviewsubmit.php" method="post"> 
<label for="firstname">First name:</label> 
<input type="text" id="firstname" name="firstname" placeholder="Enter First name" required /><br> 
<label for="lastname">Last Name:</label> 
<input type="text" id="lastname" name="lastname" placeholder="Enter Last name" required /><br> 
<label for="address">Address:</label> 
<input type="text" id="address" name="address" placeholder="Enter Address" required /><br> 
<label for="phone">Phone:</label> 
<input type="text" id="phone" name="phone" placeholder="Enter Phone" required /><br> 
<input type="submit" name="Submit" value="Submit" /> 
</form> 

問題は、私は「送信」をクリックします初めてです、私がクリックしたとき、それは、データベースに空の値を置くことは私が入力した実際の値置く二回「送信」: image

何を空の値をデータベースに追加していますか?

答えて

0

行がデータベースにページをロードする最初の時間を挿入され、この

<?php 
require_once "queryDb.php"; 
if(isset($_post['Submit')){ 
$firstname = $_POST["firstname"]; 
$lastname = $_POST["lastname"]; 
$address = $_POST["address"]; 
$phone = $_POST["phone"]; 
addCustomer($firstname, $lastname, $address, $phone); 
} 
?> 
0

で試してみてください。これはフォームが実際に提出されたかどうかを確認していないために起こります。

フォームがすでに転記されているかどうかを確認する必要があります。

0

提出された値が空でないか、またはnullでないことを確認してから、データベースに挿入することをお勧めします。

<?php 
     require_once "queryDb.php"; 
     $firstname = isset($_POST["firstname"])? htmlspecialchars(trim($_POST["firstname"])) : null; 
     $lastname = isset($_POST["lastname"]) ? htmlspecialchars(trim($_POST["lastname"])) : null; 
     $address = isset($_POST["address"]) ? htmlspecialchars(trim($_POST["address"]))  : null; 
     $phone  = isset($_POST["phone"]) ? htmlspecialchars(trim($_POST["phone"]))  : null; 

     // CHECK THAT YOU DON'T HAVE NULL OR EMPTY FIELD VALUES BEFORE INSERTING ANYTHING INTO DATABASE 
     if(!is_null($firstname) && !is_null($lastname) && !is_null($address) && !is_null($phone)){ 
      addCustomer($firstname, $lastname, $address, $phone); 
     } 

    ?> 
0

addCustomer関数を呼び出す前に、$ _POST ['Submit']が設定されていて、$ _POSTが空でないことを確認できます。 PHP関数emptyissetがこれを助けるかもしれません。

関連する問題