2015-08-18 65 views
2

我有以下ranks表用户角色使MySQL列从多个更新选择

--------------------------------------------------------------------------- 
| rank | areas  | intranet_view | intranet_writer | admin_users | 
--------------------------------------------------------------------------- 
| 1  | 'AREA I'  | 1    | 0    | 0   | 
| 2  | 'AREA VI' | 1    | 1    | 0   | 
| ... | ...   | ...   | ...    | ...   | 
--------------------------------------------------------------------------- 

而且我用这样的

// form for selecting allowed areas 
echo "<select size=\"10\" class=\"form-control\" name=\"areas[]\" multiple>"; 
    $kysely = $pdo->query("SELECT * FROM customer_areas"); 

    while($areas = $kysely->fetch(PDO::FETCH_ASSOC)) { 
     $areaArray = explode(',',$result['areas']); 
     echo "<option value=\"".$areas['customer_area_code']."\""; if(in_array($areas['customer_area_code'], $areaArray)){ echo " selected"; } echo ">".$areas['customer_area_name']."</option>"; 
    } 
echo "</select>"; 

// and this form is for selecting allowed privileges 
$kysely = $pdo->query("SELECT * FROM ranks"); 
$rights = $kysely->fetch(PDO::FETCH_ASSOC); 

foreach($rights as $key => $value) { 
    if($key == 'rank' || $key == 'areas') { 
    } else { 
     echo "<div class=\"checkbox\"><label><input type=\"hidden\" name=\"".$key."\" value=\"0\" /><input type=\"checkbox\" name=\"".$key."\" value=\"1\""; if($result[$key] == '1'){ echo " checked"; } echo ">".mb_strtolower($key)."</label></div>"; 
    } 
} 

// following is the form action page 
if (isset($_POST['areas'])) { 
    $areas = implode(",", $_POST['areas']); 
} else { 
    $areas = ""; 
} 

try { 
    $pdo->beginTransaction(); 

    $kysely = $pdo->query("SELECT * FROM ranks"); 
    $rights = $kysely->fetch(PDO::FETCH_ASSOC); 
    $i = 0; 
    $sql = ""; 

    foreach ($rights as $key => $value) { 
     if ($key == 'rank' || $key == 'areas') { 
     } else { 
      if ($i != 0) { 
       $sql .= ", "; 
      } 

      $sql .= $key . " = '" . $_POST[$key] . "'"; 
      $i++; 
     } 
    } 

    $kysely = $pdo->prepare("UPDATE ranks SET areas = ?, $sql WHERE rank = ?"); 
    $kysely->execute(array($areas, $id)); 

    $pdo->commit(); 
} catch (PDOException $e) { 
    $pdo->rollback(); 
} 

更新它,我想知道是否有一些很好的方法也可以在多重选择中拥有这些权限。当我制作这些代码时,我的智能不足以支持多选,所以我制作了复选框。

问题是我不知道如何将列名放到多个选择中,以便更新正常工作。我是否需要添加什么的。我不知道如何做到这一点。

在此先感谢。

+0

什么问题是什么呢?你尝试过什么吗? – Sayed

+0

这听起来像一个HTML问题 – e4c5

+0

@sayed,问题是,我不知道如何将列名称的多个选择,以便更新正常工作。我是否需要添加'name = \“选项”。[$ key]。“\”'或其他。我不知道如何做到这一点。 @ e4c5,添加了HTML标签 – lingo

回答

-1

是的,你可以通过名字 检索像

<?php 
    foreach($options $key => $value):  

     echo '<input type="checkbox" name="option['.$key.']" value="$vlaue">'; 

    endforeach; 
?> 

所以它看起来是这样,

<input type="checkbox" name="option[0]" value="some_value0"> 
    <input type="checkbox" name="option[1]" value="some_value1"> 
    <input type="checkbox" name="option[2]" value="some_value2"> 
+0

正如我写的,我不想要任何复选框。 – lingo

+0

在多个选择框中使用数据库中的列名 - echo“