2017-03-26 56 views
1

我有許多複選框項目,其中每個員工都有權訪問不同的部門。我想將選中的項目添加到數據庫中。已檢查的複選框項目需要添加到php mysql數據庫

未定義指數::door7在[自door7如果檢查

$door1 = $_POST['door1']; 
echo ' dooraccess is available for ' .$door1. '<br>'; 

$door2 = $_POST['door2']; 
echo 'dooraccess is available for ' .$door2. '<br>'; 

$door3 = $_POST['door3']; 
echo 'dooraccess is available for ' .$door3. '<br>'; 

$door4 = $_POST['door4']; 
echo 'dooraccess is available for ' .$door4. '<br>'; 

$door5 = $_POST['door5']; 
echo 'dooraccess is available for ' .$door5. '<br>'; 

$door6 = $_POST['door6']; 
echo 'dooraccess is available for ' .$door6. '<br>'; 

$door7 = $_POST['door7']; 
echo 'dooraccess is available for ' .$door7. '<br>'; 

$door8 = $_POST['door8']; 
echo 'dooraccess is available for ' .$door8. '<br>'; 

$door9 = $_POST['door9']; 
echo 'dooraccess is available for ' .$door9. '<br>'; 

$door10 = $_POST['door10']; 
echo 'dooraccess is available for ' .$door10. '<br>'; 

$door11 = $_POST['door11']; 
echo 'dooraccess is available for ' .$door11. '<br>'; 

$door12 = $_POST['door12']; 
echo 'dooraccess is available for ' .$door12. '<br>'; 

在情況下,這不是然後檢查值,將顯示錯誤如下

代碼以顯示訪問門未被檢查]

將這些值與其他值一起插入數據庫的代碼php mysql database

if(isset($_POST['submit'])) 
    { 
    $query = "INSERT INTO form_details1(firstname,secondname,location,designation,fileno,doa,doj,cardtype1,cardcolor,cardtype2,door1,door2,door3,door4,door5,door6,door7,door8,door9,door10,door11,door12,door13) VALUES('$firstname','$secondname','$location','$designation','$fileno','$doa','$doj','$cardtype1',$cardcolor,'$cardtype2','$door1','$door2','$door3','$door4','$door5','$door6','$door7','$door8','$door9','$door10','$door11','$door12')"; //query 
    if(mysqli_query($connect,$query)){ //check query executed or not 
    echo 'inserted' . '<br>' ; 
    } 

查詢不插入到數據庫中,因爲查詢有哪些沒有被選中

我要檢查使用if循環或全部檢查項目的任何其他手段,只輸入已確認這些項目的值。我怎樣才能做到這一點 ?

我的表看起來像

 
+---------+---------+-------+ 
| Id | door1 | door2 | 
+---------+---------+-------+ 
| Value 1 | Value 2 | 123 | 
| Value 2 | NULL | 123 | 
+---------+---------+-------+ 

The uncheck box will be empty in the table .

應該是什麼mysql field datatype for array having values that has been selected

回答

1

首次檢查複選框設置: $door1 = isset($POST['door1'])? 1 : 0 ;

然後將查詢的工作原理:該僱員有機會獲得有1門,其他人有0。

優化:

  1. 始終使用參數化查詢,如下所述:Parameterized Query

  2. 循環更容易在你的複選框,可以設置這樣的名字: <input type="checkbox" name="door[1]"> <input type="checkbox" name="door[2]">... 然後循環:

    ($ _ POST ['doors'] as $ num => $ value){

    }

列表項

  • 正常化數據庫(讓你把所有的門,一個門表。然後用僱員表和門表的外鍵創建表is_checked。如果存在具有員工ID和第一個門ID的條目,則該員工可以訪問第一個門。如有必要,更容易添加新門。)
  • +0

    我想將選中的值添加到數據庫 – iman

    1

    更改PHP代碼:

    function doorAccess($doorNum){ 
        return 'dooraccess is available for ' .$doorNum. '<br>'; 
    } 
    
    if(!empty($_POST['door1'])) echo ($_POST['door1']); 
    if(!empty($_POST['door2'])) echo ($_POST['door2']); 
    if(!empty($_POST['door3'])) echo ($_POST['door3']); 
    if(!empty($_POST['door4'])) echo ($_POST['door4']); 
    if(!empty($_POST['door5'])) echo ($_POST['door5']); 
    if(!empty($_POST['door6'])) echo ($_POST['door6']); 
    if(!empty($_POST['door7'])) echo ($_POST['door7']); 
    if(!empty($_POST['door8'])) echo ($_POST['door8']); 
    if(!empty($_POST['door9'])) echo ($_POST['door9']); 
    if(!empty($_POST['door10'])) echo ($_POST['door10']); 
    if(!empty($_POST['door11'])) echo ($_POST['door11']); 
    if(!empty($_POST['door12'])) echo ($_POST['door12']); 
    
    相關問題