2017-10-09 83 views
0

我在html中有3个复选框:Chicago,SF,NYC。基于Mysql数据预先填充/预选复选框

用户可以检查任何这些复选框。这些数据然后被发送到我的数据库,并将数据分解为数据,以便将其存储为单个值而不是数组。

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

当我刷新我的页面时,我希望我的表单预先检查用户已选择的复选框。例如,如果我选择芝加哥和SF作为我的偏好设置,则只要我登录到我的个人资料,我希望看到这些框已被检查。

我明白它背后的html,但由于implode将数组转换为字符串,我不知道如何搜索字符串“SF”或“芝加哥”,然后相应地触发回声函数。

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

有什么建议吗?

谢谢!

+0

http://php.net/explode – Utkanos

+0

首先,您需要用昏迷引爆位置数据。 –

+0

我应该澄清:我用昏迷爆炸了位置,但是当我使用in_array函数进行搜索时,出于某种原因它只能检测到数组的第一项。例如,它只会检测爆炸阵列中的'芝加哥',但不会检测SF或NYC。你碰巧知道为什么? – jlim

回答

1
U need to explode the locations with coma. 

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

然后用

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

我应该澄清:我用昏迷爆炸了位置,但是当我使用in_array函数进行搜索时,出于某种原因它只能检测到数组的第一项。例如,它只会检测爆炸阵列中的'芝加哥',但不会检测SF或NYC。你碰巧知道为什么? – jlim

+0

在爆炸或爆炸后不要增加空间 –

0

您明显发现了implode(),但不是它的反义词,explode(),用于在另一方向转换。

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

或者你可以只正则表达式,寻找单词边界包裹的话:

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