mysql — PHP-решение на основе ролей, которое мне нужно

Мне нужно мудрое решение о роли моего проекта. У меня есть столы;

- users [ID, ..., roleID,..]
- role [roleID, role_name]
- permission_department[ID, roleID, departmentID]
- department [ID, department_name]

Прежде всего, есть форма, в которую я могу добавить новые отделы в таблицу отделов. И, есть форма с полями выбора, чтобы получить разрешения 0 или 1. В этой форме есть также раздел разрешений отдела. Я получу разрешение отделов, которые являются отделами.

$conn_departmentlist = mysql_query("SELECT * FROM department");
$num_rows_departmentlist = mysql_num_rows($conn_departmentlist);
$y = $num_rows_departmentlist + 1;

for($x = 1; $x < $y; $x++) {
$departmentIDs[$x] = @$_POST['menu_Department'][$x];
if(isset($departmentIDs[$x])) { $departmentIDs[$x] = $x; }
}
$departmentID_permission = array();

for($x = 1; $x < $y; $x++) {
if($departmentIDs[$x]) { array_push($departmentID_permission, $departmentIDs[$x]); }
}

$departmentID_PUTDATABASE = implode(",", $departmentID_permission); // example: 1,3,5

Я записываю значение $ DepartmentID_PUTDATABASE вmission_department.deparmentID с его ролью ID. Когда мне нужно показать разрешения отдела:

**HTML:**
<?php
$conn_departmentlist = mysql_query("SELECT * FROM department");
while($get_departmentlist = mysql_fetch_array($conn_departmentlist)) {
$departmentID = $get_departmentlist['ID'];
$department_name = $get_departmentlist['department_name'];
?>

<input type="checkbox" class="flat" id="menu_Department[<?php echo $departmentID; ?>]" name="menu_Department[<?php echo $departmentID; ?>]"  <?php get_department_permission_sql($departmentID, $Selected_RoleID); ?> />

<?php } ?>

**PHP:**

function get_department_permission_sql($departmentID, $Selected_RoleID) {
$conn_permission_department = mysql_query("SELECT departmentID FROM permission_department WHERE roleID = '$Selected_RoleID'");
$get_permission_department = mysql_fetch_array($conn_permission_department);

$departmentID_permission = array($get_permission_department['departmentID']);
$departmentID_permission = explode(',', $departmentID_permission[0]);

$y = count($departmentID_permission);

for($x=0; $x < $y; $x++) {
if($departmentID == $departmentID_permission[$x]) { echo 'checked = "checked"'; }
}
}

Это все об этом. Это очень сложно управлять. Например, мне нужна роль менеджера, а роль имеет разрешения разных отделов.

Есть ли возможность сделать это проще, пожалуйста, помогите мне. Заранее спасибо.

0

Решение

Мне нужно мудрое решение о роли моего проекта. У меня есть столы;

- users [ID, ..., roleID,..]
- role [roleID, role_name]
- permission_department[ID, roleID, departmentID]
- department [ID, department_name]

Прежде всего, есть форма, в которую я могу добавить новые отделы в таблицу отделов. И, есть форма с полями выбора, чтобы получить разрешения 0 или 1. В этой форме есть также раздел разрешений отдела. Я получу разрешение отделов, которые являются отделами.

$conn_departmentlist = mysql_query("SELECT * FROM department");
$num_rows_departmentlist = mysql_num_rows($conn_departmentlist);
$y = $num_rows_departmentlist + 1;

for($x = 1; $x < $y; $x++) {
$departmentIDs[$x] = @$_POST['menu_Department'][$x];
if(isset($departmentIDs[$x])) { $departmentIDs[$x] = $x; }
}
$departmentID_permission = array();

for($x = 1; $x < $y; $x++) {
if($departmentIDs[$x]) { array_push($departmentID_permission, $departmentIDs[$x]); }
}

$departmentID_PUTDATABASE = implode(",", $departmentID_permission); // example: 1,3,5

Я записываю значение $ DepartmentID_PUTDATABASE вmission_department.deparmentID с его ролью ID. Когда мне нужно показать разрешения отдела:

**HTML:**
<?php
$conn_departmentlist = mysql_query("SELECT * FROM department");
while($get_departmentlist = mysql_fetch_array($conn_departmentlist)) {
$departmentID = $get_departmentlist['ID'];
$department_name = $get_departmentlist['department_name'];
?>

<input type="checkbox" class="flat" id="menu_Department[<?php echo $departmentID; ?>]" name="menu_Department[<?php echo $departmentID; ?>]"  <?php get_department_permission_sql($departmentID, $Selected_RoleID); ?> />

<?php } ?>

**PHP:**

function get_department_permission_sql($departmentID, $Selected_RoleID) {
$conn_permission_department = mysql_query("SELECT departmentID FROM permission_department WHERE roleID = '$Selected_RoleID'");
$get_permission_department = mysql_fetch_array($conn_permission_department);

$departmentID_permission = array($get_permission_department['departmentID']);
$departmentID_permission = explode(',', $departmentID_permission[0]);

$y = count($departmentID_permission);

for($x=0; $x < $y; $x++) {
if($departmentID == $departmentID_permission[$x]) { echo 'checked = "checked"'; }
}
}

Это все об этом. Это очень сложно управлять. Например, мне нужна роль менеджера, а роль имеет разрешения разных отделов.

Есть ли возможность сделать это проще, пожалуйста, помогите мне. Заранее спасибо.

0

Другие решения


active «data-shortcut =» A

самый старый «data-shortcut =» O
голосует «data-shortcut =» V
По вопросам рекламы [email protected]