2017-02-15 3 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

установить его в нуль. – 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; 
Смежные вопросы