【问题标题】:Prepopulate/Precheck check boxes based on Mysql data基于 Mysql 数据预填充/预检查复选框
【发布时间】:2017-10-09 21:30:44
【问题描述】:

我在 html 中有一个带有 3 个复选框的表单:芝加哥、旧金山、纽约。

用户可以选中任何这些复选框。然后数据被发送到我的数据库,我将数据内爆,以便将其存储为单独的值而不是数组。

$locationpref = implode(", ",$_POST['locationpref']);

当我刷新我的页面时,我希望我的表单预先选中用户已经选择的复选框。例如,如果我选择芝加哥和旧金山作为我的偏好,那么无论何时登录我的个人资料,我都希望看到这些框被选中。

我了解它背后的 html,但由于 implode 将数组转换为字符串,我无法弄清楚如何在字符串中搜索“SF”或“Chicago”,然后相应地触发 echo 函数。

<?php if (in_array("SF", $locationpref)) {echo "checked='checked'";} ?>

有什么建议吗?

谢谢!

【问题讨论】:

  • 首先你需要用昏迷来爆炸位置数据。
  • 我应该澄清一下:我已经用 coma 爆炸了位置,但是当我使用 in_array 函数搜索时,由于某种原因它只检测到数组的第一项。例如,它只会检测爆炸数组中的“芝加哥”,而不检测 SF 或 NYC。你知道为什么吗?

标签: php mysql arrays checkbox


【解决方案1】:
U need to explode the locations with coma.

$locations = "Chicago,SF,NYC";
$locationpref = explode(','$locations);

然后使用

if (in_array("SF", $locationpref)) {echo "checked='checked'";}

【讨论】:

  • 我应该澄清一下:我已经用 coma 爆炸了位置,但是当我使用 in_array 函数搜索时,由于某种原因它只检测到数组的第一项。例如,它只会检测爆炸数组中的“芝加哥”,而不会检测到 SF 或 NYC。你知道为什么吗?
  • 来后爆炸或内爆时不要添加空间
【解决方案2】:

您显然已经发现了implode(),但没有发现它的反面explode(),用于在另一个方向进行转换。

if (in_array("SF", explode(',', $locationpref))) echo "checked='checked'";

或者您可以只使用正则表达式,查找包含在单词边界中的单词:

if (preg_match('/\bSF\b/', $locationpref)) echo "checked='checked'";

【讨论】:

    猜你喜欢
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    相关资源
    最近更新 更多