【问题标题】:How to populate checkbox with data from MySQL?如何使用来自 MySQL 的数据填充复选框?
【发布时间】:2014-07-08 05:36:58
【问题描述】:

我一直在尝试填充复选框列表,其中的值和名称也从 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>
    ';
}

中间数字为 1 的破折号在哪里,我在那里检查板 id 是否相同,如果是,则应用 checked="1"。但它似乎不起作用。

以下是 $boardsiD 的输出;这些是已在数据库中检查的复选框;保存了我试图与$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 或者我什至应该使用,我尝试过但效果不佳,有什么想法为什么以下不起作用?

【问题讨论】:

  • 旁注:如果你想检查它,如果这是你的意图,你会做$checked = 'checked';。除非您希望选中的值显示为 &lt;input checked="1"
  • 以上是正确的fred,谢谢。如果 id 与从 MySQL 检索到的任何内容匹配,我希望将框输入框设置为 1(checked="1")。这是我的目标。
  • 您也可以直接在查询中使用WHERE 子句。
  • 还有in_array() 可以增加使用。
  • 不客气。让我知道。干杯(我要去 Lah-Lah Land)。

标签: php mysql checkbox


【解决方案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"';

【讨论】:

  • @Fred-ii-,这几乎是相同的想法,它几乎被认为是相同的,但我确实有一个问题。为什么 foreach() 没有工作,但 for() 工作得很好,我虽然 foreach() 也计算了从 MySQL 返回的所有内容..
  • @iBrazilian2 这个页面会比我解释得更好ibmphp.blogspot.ca/2012/10/… --- 基本上,for 循环就是一遍又一遍地做某事,直到任务完成。 foreach 仅适用于数组。即使它会运行循环直到数组结束。
  • @Fred-ii-,亲爱的,看看这个。 (当/如果你有时间)stackoverflow.com/questions/23796257/…
【解决方案2】:

您的$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>
    ';
}

应该可以解决你的问题。

【讨论】:

  • 你检查过cmets吗?
猜你喜欢
  • 2014-03-10
  • 2018-09-29
  • 2020-08-07
  • 2013-01-28
  • 2020-02-27
  • 2019-05-19
  • 2021-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多