假設我有用戶數據庫和base_u_group
默認值爲0,它們不在任何組下。更新選中的複選框數據並刪除未選中的數據
1)base_users |base_u_id|base_u_username|base_u_group| ------------------------------------------ | 1 | username 1 | 0 | | 2 | username 2 | 2, 3, 4 | | 3 | username 3 | 4 | | 4 | username 4 | 3,5 |
列出所有用戶。當屬於該編輯組時,將自動檢查$checkBox
。
echo "<tr>";
echo "<td>". $count .". ".$row_User['base_u_username']. "</td>";
echo "<td align=\"center\"><input type=\"checkbox\" class = \"group\" name=\"userList[]\" value=".$row_User['base_u_id']." ".$checkBox."/></td>";
echo "</tr>";
我的問題是如何插入選中的複選框的數據不重複,例如:3, 3, 4, 5 --> 3, 4, 5
當複選框選中,將刪除該組中我base_u_group
,例如選中的複選框用戶名2的組3
2, 3, 4 --> 2, 4
$gid
表示選定的編輯組。 這是我做過什麼至今:
<?php
$userGroup = $_POST['userList'];
foreach($userGroup as $a)
{
$selSQL = base_executeSQL("SELECT * FROM base_users WHERE base_u_id='".$a."'");
while($row_SQL = base_fetch_array($selSQL))
if($row_SQL['base_u_group'] != "0")
{
$data = explode(", ",$row_SQL['base_u_group']);
for($i=0; $i<count($data);$i++)
{
//insert to user group if base_u_group does not find the group ID
if($gid <> $data[$i])
base_executeSQL("UPDATE base_users SET base_u_group='".$gid. ", ". $row_SQL['base_u_group']."' WHERE base_u_id='".$a."'");
}
}
//if the user does not belong to any groups: base_u_group = 0
else
base_executeSQL("UPDATE base_users SET base_u_group='".$gid."' WHERE base_u_id='".$a."'");
}
?>
編輯:刪除組
$data = explode(", ",$row_SQL['base_u_group']);
$ok = true;
for($i=0; $i<count($data);$i++)
{
//insert to user group if base_u_group does not find the group ID
if($gid == $data[$i])
{
$arr = array_merge(array_diff($data,array($gid)));
$newArray = implode(", ",$arr);
base_executeSQL("UPDATE base_users SET base_u_group='".$newArray."' WHERE base_u_id!='".$row_SQL['base_u_id']."' AND base_u_domain='local'");
$ok = false;
}
}
if (ok) base_executeSQL("UPDATE base_users SET base_u_group='".$gid. ", ". $row_SQL['base_u_group']."' WHERE base_u_id='".$a."'");
謝謝。我明白你的觀點,這種方法非常有用,解決了我的問題。但有沒有其他解決方案,而不是由於不確定性和不可預測的風險而改變我的數據庫配置。 – Sollo
你爲什麼不喜歡你目前的解決方案? – Ishamael
我使用我上面提到的當前解決方案時遇到問題。我找不出解決我的問題的辦法。 – Sollo