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