【问题标题】:PHP compare 2 arrays from database and checkbox=checked if any of the values are foundPHP比较数据库中的2个数组,如果找到任何值,则检查复选框=
【发布时间】:2014-06-25 20:05:16
【问题描述】:

我在数据库中有一个列(应用程序),其中有一个用逗号分隔的单词列表,例如 - AAA、BBB、CCC 我还有另一列 (appsSelected) 将以相同的格式填充用户使用复选框值选中的单词。

在一个页面上,我列出了应用程序中的所有单词,旁边有复选框,在提交时它会将选中的单词插入到 appsSelected 中。 在另一个页面上,它只列出了 appsSelected 列中的单词,我设法抓取了 appsSelected 并将其分解以列出每个单词。

<?php
$appsString = $pi_row['appsSelected'];
// break $appsString using the comma as the delimiter
$appliances = explode(', ', $appsString);                                    
// loop through and print all the words
echo '<ul>';
    for ($i = 0; $i < count($appliances); $i++)
    {   
        echo '<li>' . $appliances[$i] . '</li><br/>';
    }
echo '</ul>';
?>

我遇到的问题是,当我返回带有复选框的页面时,我希望它们在 appsSelected 中的单词上保持选中状态。 所以我猜我必须将应用程序与 appSelected 进行比较,并根据匹配的单词来回显选中或未选中的复选框。

for ($i = 0; $i < count($appliances); $i++)
{
$codes = array($pi_row['apps']);
$codesSelected = array($pi_row['appsSelected']);
//if (in_array($appliances[$i], $codesSelected)) {

if (array_intersect($ap, $aps)) {
    echo '<li><input type="checkbox" checked="checked" value="' . $appliances[$i] . '"     name="applianceCheckbox[]">' . $appliances[$i] . '</input></li><br/>';
} else{
    echo '<li><input type="checkbox" value="' . $appliances[$i] . '" name="applianceCheckbox[]">' .      $appliances[$i] . '</input></li><br/>';
}
}

上面的代码只有在 appsSelected 匹配应用程序中的整个数组时才有效: 例如在应用程序栏中 - AAA、BBB、CCC 如果我勾选 AAA 和 BBB 或任何其他不涉及匹配应用程序中每个单词的组合,则不会勾选任何复选框,但如果我勾选 AAA、BBB、CCC,则复选框将返回所有勾选

我需要找到一种方法来查看应用程序中的任何单词是否与 appSelected 中的任何单词匹配。

【问题讨论】:

  • 但它们被称为 applianceCheckbox[]。它们不应该是 applianceCheckbox[][$i] 或类似的东西吗?
  • 使用 in_array 就像你注释掉的那样,只是不要忘记使用 explode(', ', $pi_row['appsSelected']) 创建数组,就像你在第一篇文章中所做的那样,你应该没问题。
  • 非常感谢! @ccKep 当我爆炸它时它起作用了。

标签: php mysql arrays checkbox checked


【解决方案1】:

像您在评论中那样使用 in_array,但您必须将正确的数组传递给它:

$codesSelected = explode(', ', $pi_row['appsSelected']);

for ($i = 0; $i < count($appliances); $i++)
{
    if (in_array($appliances[$i], $codesSelected)) {
        echo '<li><input type="checkbox" checked="checked" value="' . $appliances[$i] . '"     name="applianceCheckbox[]">' . $appliances[$i] . '</input></li><br/>';
    } else {
        echo '<li><input type="checkbox" value="' . $appliances[$i] . '" name="applianceCheckbox[]">' .      $appliances[$i] . '</input></li><br/>';
    }
}

【讨论】:

  • 另一件事,如果我在数组中有 2 个相同的单词并且只勾选一个复选框,那么所有相同的单词最终都会被勾选。我将如何将它保留在我勾选的那个?谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-03-08
  • 2020-06-04
  • 1970-01-01
  • 2023-03-26
  • 2014-03-10
  • 2017-01-11
  • 2019-05-22
  • 2022-11-13
相关资源
最近更新 更多