2010-11-02 4 views
0

Я хотел бы отобразить все роли из базы данных как флажки и проверить те, что текущий пользователь уже находится вPHP динамические флажки

Вопрос:. Как я могу проверить, флажки, где пользователь уже находится в этой роли.

<?php 
// DB QUERY: get role names 
// ------------------------------------------------------------------ 
$get_roles = mysqli_query($conn, "SELECT RoleName FROM roles") 
or die($dataaccess_error); 

$get_user_in_roles = mysqli_query($conn, "SELECT RoleName FROM users_in_roles WHERE UserId = $user_id") 
or die($dataaccess_error); 
// ------------------------------------------------------------------ 

// user in roles 
while($row2 = mysqli_fetch_array($get_user_in_roles)) 
{ 
    $user_in_role = $row2['RoleName']; 
} 

// echo out role names 
while($row1 = mysqli_fetch_array($get_roles)) 
{ 
    $role_name = $row1['RoleName']; 
    echo '<label class="label"><input type="checkbox" name='.$role_name.' class="checkbox">'.$role_name.'</label>'; 
} 
?> 

ответ

1

Я бы сделал $user_in_role массив, затем сменил оператор внутри первого цикла while на $user_in_role[] = $row2['RoleName']; (это добавляет имя роли в массив). Затем, когда вторя флажок, добавьте это между class="checkbox" и >:

' . (in_array($role_name, $user_in_role) ? ' checked="checked"' : '') . '

+0

Именно то, что я искал. Спасибо! – 2010-11-02 04:21:04

0
<input checked='checked' type='checkbox' ... /> 

Вы можете также disable поля ввода.

<input checked='checked' disabled='disabled' type='checkbox' ... /> 

Эффективно сделанный флажок отмечен и отключен.

+0

да, но как я могу это сделать? – 2010-11-02 04:12:36

+0

Я уверен, что отключить этот флажок, чтобы это значение не получало POSTED, поэтому в зависимости от того, как вы справляетесь с тем, что это может привести к какой-то странности (например, это отсутствие значения, эквивалентное тому, что не проверяется?). –

+0

@Tom Smilack У меня обычно есть скрытый 'input' с ожидаемым значением, чтобы сохранить согласованность формы. Тем не менее, это хороший вклад. Благодарю. – Frankie