Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于Mysql数据预填充/预检查复选框_Php_Mysql_Arrays_Checkbox - Fatal编程技术网

Php 基于Mysql数据预填充/预检查复选框

Php 基于Mysql数据预填充/预检查复选框,php,mysql,arrays,checkbox,Php,Mysql,Arrays,Checkbox,我有一个带有3个html复选框的表单:芝加哥、旧金山、纽约 用户可以勾选这些复选框中的任何一个。然后数据被发送到我的数据库,我对数据进行内爆,使其存储为单个值而不是数组 $locationpref = implode(", ",$_POST['locationpref']); 当我刷新我的页面时,我希望我的表单预先检查用户已经选择的复选框。例如,如果我选择芝加哥和旧金山作为我的首选项,每当我登录到我的个人资料时,我都希望看到这些框被选中 我理解它背后的html,但由于内爆将数组转换为字符串,我

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

用户可以勾选这些复选框中的任何一个。然后数据被发送到我的数据库,我对数据进行内爆,使其存储为单个值而不是数组

$locationpref = implode(", ",$_POST['locationpref']);
当我刷新我的页面时,我希望我的表单预先检查用户已经选择的复选框。例如,如果我选择芝加哥和旧金山作为我的首选项,每当我登录到我的个人资料时,我都希望看到这些框被选中

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

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

您显然已经发现了
内爆()
,但不是它的反面,
爆炸()
,用于向另一个方向转换

if (in_array("SF", explode(',', $locationpref))) echo "checked='checked'";
或者,您可以只使用正则表达式,查找包含在单词边界中的单词:

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

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

首先,您需要使用coma分解位置数据。我应该澄清:我已经使用coma分解了位置,但是当我使用in_array函数搜索时,出于某种原因,它只检测阵列的第一项。例如,它将只检测爆炸阵列中的“Chicago”,而不检测SF或NYC。你知道为什么吗?我应该澄清一下:我用coma分解了位置,但是当我用in_array函数搜索时,出于某种原因,它只检测数组的第一项。例如,它将只检测爆炸阵列中的“Chicago”,而不检测SF或NYC。你知道为什么吗?不要在爆炸或爆炸后增加空间
if (in_array("SF", $locationpref)) {echo "checked='checked'";}