2017-02-15 79 views
1

我有一個需要用戶填寫一份表格。它有必填字段,其他字段不是必需的。例如,需要員工信息字段被填滿和配偶,不需要孩子和孩子的生日。每當我試圖將數據保存在數據庫中,同時使配偶和子女清空數據庫也節省了一個空值和孩子的生日字段其datepickers節省了默認日曆值1970-01-01。 這是在數據庫中保存我的PHP代碼。空字段保存空值在數據庫

if (!empty($_POST['child']) && !empty($_POST['ch_DateOfBirth'])) { 
 

 
     $selectEmp=$dbcon->query("Select Emp_ID from employee"); 
 
     $count=$selectEmp->num_rows; 
 

 
     if ($count>0) { 
 
       while($row=$selectEmp->fetch_array()){ 
 
        $emp_id="".$row['Emp_ID'].""; 
 
       } 
 

 
     $child_name=$_POST['child']; 
 
     $count=count($child_name); 
 

 
      for ($i=0; $i < $count ; $i++) { 
 
       $child_bday=date('Y-d-m', strtotime($_POST['ch_DateOfBirth'][$i])); 
 
       $sql6="INSERT into tbl_children (Emp_ID, Ch_Name, Ch_Bdate) values ('".$emp_id."', '".$child_name[$i]."', '".$child_bday."') "; 
 
       $dbcon->query($sql6); 
 
      } 
 
     } 
 

 
}

這就是數據庫顯示。

enter image description here

+2

它設置爲null。 – nogad

+0

日期必須在$ child_bday = date('Y-m-d',strtotime($ _ POST ['ch_DateOfBirth'] [$ i])); – kannan

回答

0

使用array_filter()值從公佈數組中刪除空值。

$child_names = array_filter($_POST['child']); 
foreach($child_names as $key => $child_name){ 

    $child_bday = (isset($_POST['ch_DateOfBirth'][$key]))?date('Y-d-m', strtotime($_POST['ch_DateOfBirth'][$key])):NULL; 

    $sql6="INSERT into tbl_children (Emp_ID, Ch_Name, Ch_Bdate) values ('".$emp_id."', '".$child_name."', '".$child_bday."') "; 
      $dbcon->query($sql6); 
} 
+0

謝謝!這工作。 – Laurie

2

允許空值在數據庫即設置默認值null,例如,

`CREATE TABLE emptable(
`empname` VARCHAR(30) NOT NULL, 
`dob` date DEFAULT NULL);` 
1

默認日曆值輸入到數據庫中,因爲空值轉換爲1970-01-01當你執行date('Y-d-m', strtotime($_POST['ch_DateOfBirth']

所以,檢查日期爲空,然後將其轉換爲日期格式只有在它裏面

for ($i=0; $i < $count ; $i++) { 
       $child_bday=""; 
       //converts to date format only if the date field is not empty..else its null 
       if(!empty($_POST['ch_DateOfBirth'][$i]) 
       { 
       $child_bday=date('Y-d-m', strtotime($_POST['ch_DateOfBirth'][$i])); 
       } 
       $sql6="INSERT into tbl_children (Emp_ID, Ch_Name, Ch_Bdate) values ('".$emp_id."', '".$child_name[$i]."', '".$child_bday."') "; 
       $dbcon->query($sql6); 
      } 
0

沒錯:你需要改變你的表列 「Ch_Bdate」

ALTER TABLE table_name CHANGE `Ch_Bdate` `Ch_Bdate` DATETIME NULL DEFAULT NULL; 
相關問題