Предположим, у меня есть пользователей база данных и base_u_group
default будет 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 из группы
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."'");
}
?>
EDIT: удаление групп
$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