日期:2014-05-17  浏览次数:20483 次

PHP编程 关于多选框默认选中问题
两张表
sub_role_table(srt_id,id,role_id)id是用户Id,role_id是角色id
role_table(role_id,role_name) role_name是角色名称
现在要实现一个用户多个角色的修改在修改页面循环出所有的角色,然后该用户有什么角色,什么角色是默认选中的
源码如下
=======================================================
$sql="select * from role_table where role_id!=0"; 
$re=mysql_query($sql);

$sql2="select * from sub_role_table where id='$id'"; 
$res=mysql_query($sql2);

<?php
$showa = '';
while ($row=mysql_fetch_array($res)){
while ($roww=mysql_fetch_array($re)){
if($roww[role_id]==$row[role_id]) {
$showa .= "<input name=\"item[]\" type=\"checkbox\" value=\"$roww[role_id]\" checked>$roww[role_name]";
} else {
$showa .= "<input name=\"item[]\" type=\"checkbox\" value=\"$roww[role_id]\" >
$roww[role_name]";
}
}
}
print_r($showa);
?>
现在就是在用户本身有多个角色的情况下,显示的时候只显示用户的第一个角色是默认选中的,其他的角色不默认选中,希望各位大侠帮忙看看代码错那里了,让我实现这个默认复选框的选中问题

------解决方案--------------------
PHP code

<?php

/* Created on [2012-5-17] */

#所有信息
$sql = "select * from role_table where role_id!=0";
$re = mysql_query($sql);
if (!$re)
    die("SQL:{$sql}<br>Error:" .
    mysql_error());
if (mysql_affected_rows() > 0) {
    $allinfors = array ();
    while ($rows = mysql_fetch_array($re)) {
        array_push($allinfors, $rows);
    }
}

#要修改信息
$sql2 = "select * from sub_role_table where id='$id'";
$res = mysql_query($sql2);
if (!$re)
    die("SQL:{$sql}<br>Error:" .
    mysql_error());
if (mysql_affected_rows() > 0) {
    $editinfor = mysql_fetch_array($res);
}
?>

<?php foreach($allinfors as $all){ ?>
<input type="checkbox" name="item[]" value="<?=$all['role_id']?>" <?=($all['role_id']==$editinfor['role_id'])?"checked=checked":""?> /><?=$all['role_name']?>
<?php } ?>