2013-05-07 116 views
1

我正在開發一個項目,其中的一部分是管理員可以通過它創建許多子地址的窗體。在這種形式中,有四個複選框由管理員檢查爲子地址設置不同的權限。然而,當管理員想要編輯子地址的某些信息時,這種形式是可編輯的手段,類似的窗體打開時,數據從數據庫中獲取相應的字段。 所以管理員填寫類似的信息: 名稱, 電子郵件, 密碼, 權限(4複選框)用於檢查和取消選中複選框的邏輯

以後如果管理員想編輯subadmin信息,他將選擇從subadmins列表和相同subadmin窗體打開時使用相同的字段,但填充的字段中的值來自數據庫。因此,它是這樣的: 名稱:ABC, 電子郵件:[email protected], 密碼:1234, 權限(1個或2或3或4複選框選中)

現在,當管理員點擊更新我要的是按鈕,該子地址的信息與複選框一起更新。因此,在更新信息時,管理員可以刪除或賦予子管理員新的權限。例如,如果以前的子地址只有三個權限,那麼更新管理員可以授予或刪除權限,並且該管理員可以給予他(從以前的3個)給予1或2或4個權限。我已經爲此編寫了代碼,但正在進行的更新是在數據庫表中創建了三個新行。因此,如果該子地址在表中具有與他相關的1,2,3許可權,則更新1,2,3將在連續更新時反覆創建。 這是我的邏輯: 1.從數據庫表中獲取所有權限,並通過表單獲取權限。 2.如果表單權限等於數據庫表的權限,則不執行任何操作。 3.如果來自db表的權限不等於來自表單的權限,則刪除不具有表單權限的db表權限。 4.如果來自表單的權限不等於來自數據庫表的權限,則添加從表單到數據庫表的權限。 和我的這個代碼如下:

$subadmin_permission = $_POST['subadmin_permission']; // permissions from form collected as an array 
$query_select = "SELECT permission_name FROM ftv_subadmins_permissions WHERE subadmin_id='$subadmin_id'"; 
$result_select = mysql_query($query_select); 
$all_permissions['all_permissions'] = array(); 
while($row = mysql_fetch_array($result_select)) 
{ 
    $all_permissions['all_permissions'][] = $row['permission_name']; // permissions from database collected as an array 
} 

    if(empty($subadmin_permission)) 
    { 
    } 
    else 
    { 
     $query = "UPDATE ftv_subadmins_login_info SET subadmin_name='$subadmin_name', subadmin_mobile='$subadmin_mobile', ". 
       "subadmin_email='$subadmin_email', subadmin_address='$subadmin_address', subadmin_city='$subadmin_city', ". 
       "subadmin_state='$subadmin_state', subadmin_country='$subadmin_country' WHERE subadmin_id='$subadmin_id'"; 
     $result = mysql_query($query); 

     if($result) 
     { 
      foreach($all_permissions['all_permissions'] as $value) 
      { 
       if(in_array($value, $subadmin_permission)) 
       { 
       } 
       if(in_array($value, $subadmin_permission) != TRUE) 
       { 
        foreach($all_permissions['all_permissions'] as $value) 
        { 
         $query_permission_delete = "DELETE FROM ftv_subadmins_permissions WHERE permission_name='$value' AND subadmin_id='$subadmin_id'"; 
         $result_permission_delete = mysql_query($query_permission_delete); 

         if($result_permission_add) 
         { 
          $msg = "<span style='color:green; font-weight:bold;'>Sub-admin details has been updated</span>"; 
         } 
         else 
         { 
          $msg = "<span style='color:red; font-weight:bold;'>Sub-admin details could not be updated</span>"; 
         } 
        } 
       } 
      } 

      foreach($subadmin_permission as $value) 
      { 
       if(in_array($value, $all_permissions['all_permissions']) != TRUE) 
       { 
        foreach($subadmin_permission as $value) 
        { 
         $query_permission_add = "INSERT INTO ftv_subadmins_permissions(subadmin_id, permission_name, permission_value, permission_creation_date)" . 
              "VALUES('$subadmin_id', '$value', 'Y', NOW())"; 
         $result_permission_add = mysql_query($query_permission_add); 
        } 
       } 
      } 
     } 

回答

0

請使用以下腳本,而在編輯表單

<input type="checkbox" <?php if($row['permission1']=='value1') { 
   echo 'checked="checked"'; } ?> name="permission1" id="permission1" 
value="value1" /> 
+0

卡皮爾渲染複選框,我已經在使用它,複選框顯示正確檢查。意思是如果一個子地址只有三個權限,只有三個複選框被選中,第四個被選中。我想這個問題是在上面的代碼中的if($ result){}塊。我想我沒有正確應用邏輯。 – 2013-05-07 09:07:38

相關問題