Ik heb een rechtensysteem die bitwise de rechten toekent dus 1,2,4,8 enz.
Ik heb rechten die bij elkaar opgeteld max. 63 zijn (dus tm 32)
Op een pagina waar je de gebruiker kan wijzigen (en dus ook rechten) laat ik een aantal checkboxen zien die de rechten aangeven.
De huidige rechten moeten daarbij aangevinkt zijn natuurlijk.
Dit doet hij alleen op 1 of andere manier niet voor bit 1 en bit 8.
Iemand enig idee waarom niet?
Dit is de code:

$result['urID'] = de rechten die de gebruiker heeft (63 in dit geval, dus alle checkboxjes moeten aan)

<?
while($row = mysql_fetch_assoc($result1))
{
if(($result['urID'] & $row['urID']))
{
$check = ' checked = "checked"';
}
else
{
$check = '';
}
}

echo '<tr><td>' . $row['urName'] . '</td><td><input type = "checkbox" name = "rights[]" id = "rights[]" value = "' . $row['urID'] . '"' . $check . ' /></td></tr>';
}

?>

Hierbij krijg ik 6 checkboxjes (ik heb dus 6 rechten) waarbij ze bij recht 63 allemaal aangevinkt zijn behalve 1 en 8
Even intval() over beide variabelen in je statement zodat je zeker weet dat het integers zijn.
Heren, als je acht checkboxen wilt hebben, heb je twee tot de achtste nodig (je wilt immers 8 bits op 0 of 1 kunnen zetten) en dat is 256. Zie mijn vorige post.
Remco van Arkelen schreef op 25.02.2006 22:15
Even intval() over beide variabelen in je statement zodat je zeker weet dat het integers zijn.


Dat was hem! Perfect bedankt!

Reageren