如何使用MySQL中的数据填充复选框?

时间:2014-05-20 05:28:15

标签: php mysql checkbox

我一直在尝试填充一个复选框列表,其中也从MySQL检索值和名称。我相信我需要将两个iD匹配在一起才能将其标记为已选中但我目前不确定。

$boardsiD = $pClass->checkedBoards();

foreach($pClass->retrieveBoards() as $data)
{
    $boardiD    =   $data['boardiD'];
    $boardName  =   $data['boardName'];

    if($boardiD == $boardsiD) ------------------ 1 ---------------------
    {
        $checked = 'checked="1"';
    }

    echo '
        <li><input '.$checked.' type="checkbox" value="'.$boardiD.'">'.$boardName.'</li>
    ';
}

如果中间带有第一个的破折号,我在那里检查棋盘ID是否相同,如果是,则应用checked="1"。但它似乎没有起作用。

以下是$ boardsiD的输出;这些是在数据库中已经checekd的复选框;保存了我正在尝试与$boardiD = $data['boardiD']匹配的ID,这是id的整个列表(大约30个id)。

Array (
        [0] => Array
                    ([board_iD] => 106468047379795203)
        [1] => Array
                    ([board_iD] => 286119451265381250)
        [2] => Array
                    ([board_iD] => 136234026166934321)
        [3] => Array
                    ([board_iD] => 468022654964640361)
        [4] => Array
                    ([board_iD] => 409757334785529893)
        [5] => Array
                    ([board_iD] => 409757334785575605)
        [6] => Array
                    ([board_iD] => 490681390589888313)
        ) 

我不确定我是否可以使用preg_match,或者如果我应该使用preg_match,我试过但是效果不好,有什么想法,为什么以下不起作用?

2 个答案:

答案 0 :(得分:1)

你的$boardsiD是一个二维数组,所以我们先把它转换成一维数组。

$it =  new RecursiveIteratorIterator(new RecursiveArrayIterator($boardsiD));
$newBoardIDs = iterator_to_array($it, false);

然后,

foreach($pClass->retrieveBoards() as $data)
{
    $boardiD    =   $data['boardiD'];
    $boardName  =   $data['boardName'];

    if(in_array($boardID,$newBoardIDs))
    {
        $checked = 'checked="1"';
    }

    echo '
        <li><input '.$checked.' type="checkbox" value="'.$boardiD.'">'.$boardName.'</li>
    ';
}

应该解决你的问题。

答案 1 :(得分:1)

checked =“1”是无效的HTML。 HTML4的正确语法是

<input type="checkbox" value="someValue" checked>

或HTML5

<input type="checkbox" value="someValue" checked="checked" />

要检查$ boardID是否为$ boardsID,您可以执行以下操作:

$checked = '';

for($i = 0; !$checked && $i < sizeof($boardsID); $i++)
  if($boardID == $boardsID[$i]['board_iD'])
    $checked = 'checked="checked"';