2014-11-19 2 views
1

사용자 정보를 업데이트 할 수있는 작은 페이지를 업데이트하고 있습니다.Foreach role_id HTML 선택 옵션

가 나는 두 개의 데이터베이스 tabels입니다 가입이 쿼리가 다음 역할의 이름이 역할 ID에 따라 출력에

SELECT * FROM users JOIN roles ON roles.id = users.`role_id` WHERE users.id=$id 

을, 나는 변수 $ 역할

$role = $result["role_name"]; 
을 만들었습니다

그냥 울림으로 해결할 수 있습니다. $role

내가 원하는 것은 사용자 역할을 선택할 수있는 양식을 사용하는 것입니다. 또한 선택된 속성으로 사용자의 현재 역할을 표시합니다. 이와 유사한

뭔가 (내 옛 용액) :

<select name="role">      
<?php 
if ($role == 'Admin') 
{ 
echo "<option value='Admin' Selected>"; 
} 
else 
{ 
echo "<option value='Admin'>"; 
} 
echo "Admin </option>"; 

if ($role == 'User') 
{ 
echo "<option value='User' Selected>"; 
} 
else 
{ 
echo "<option value='User'>"; 
} 
echo "User </option>"; 

?> 
</select> 

그러나 당신이 볼 수 있듯이, 이것은 매우 확장 성이 아니었다. 내 DB에 새 역할을 추가 한 경우 다른 if 문으로 선택 코드를 수동으로 업데이트해야합니다.

그래서 foreach 문을 대신 사용할 수 있다고 생각했습니다. 하지만 단순히 Selected 속성을 사용하여 사용자의 현재 역할을 표시하는 방법에 대해 고민 할 필요는 없습니다.

배열 내 모든 역할을 얻으려면,이 짓을했는지 :

$sql = $db->prepare ("SELECT * FROM roles"); 
$sql->execute(); 
$roles = $sql->fetchAll(); 

을 그리고 배열은 다음과 같이됩니다 : 당신은에서 역할의 배열을 채울 수

Array ([0] => Array ([id] => 1 [role_name] => Admin) [1] => Array ([id] => 2 [role_name] => User)) 
+0

if 문을 루프 안에 넣기 만하면됩니다. –

답변

1

당신의

$roles = array("Admin" => 1, "User" => 2, ...); 

그런 다음 선택 태그 사이에 다음과 같은 옵션을 만드십시오.

foreach($roles as $k => $v) 
{ 
    $s = $role_id == $v ? "selected" : ""; 
    echo("<option value='$v' $s>$k</option>"); 
}