2016-05-26 6 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); 
} 

прибудет функция:

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; 
    } 
} 

В моем reviewsubmit.php у меня это до вершины:

<?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> 

Проблема в первый раз, когда я нажимаю «Отправить», он помещает пустые значения в базу данных, когда я нажимаю «Отправить» второй раз, когда он помещает фактические значения I набранные: 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

Строка вставляется в базу данных в первый раз при загрузке страницы. Это происходит потому, что вы не проверяете, действительно ли форма была отправлена.

Вам нужно будет проверить, если форма уже отправлена. Вы можете сделать это так:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    IF (isset($_POST['submit'])) { 
     // Do the database stuff 
    } 
} 

// Your form here 
0

Проверка, что представленные значения не являются пустыми или нуль, прежде чем вставлять их в базу данных является лучшим выбором.

<?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

Вы можете проверить, если $ _POST [ 'Submit'] установлено и $ _POST не является пустым перед вызовом функции addCustomer. Функции PHP empty и isset могут помочь вам в этом.

Смежные вопросы