在html和php中使用复选框传递值
我有两张表格 a) post.php b) edit.php 我正在使用表单中的复选框设置二进制值(0和1)以设置批准状态 为了处理post.php中复选框的值,我使用了一段代码,该代码检查并假设如果选中复选框,那么该值将为1,否则默认为0在html和php中使用复选框传递值,php,html,Php,Html,我有两张表格 a) post.php b) edit.php 我正在使用表单中的复选框设置二进制值(0和1)以设置批准状态 为了处理post.php中复选框的值,我使用了一段代码,该代码检查并假设如果选中复选框,那么该值将为1,否则默认为0 if (isset($_POST['ad_approve'])) $ad_approve = htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['ad_approve'])));
if (isset($_POST['ad_approve'])) $ad_approve = htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['ad_approve'])));
else { $ad_approve = 0; }
现在在edit.php表单中,我从数据库中检索数据并相应地设置复选框。如果“批准”的值为1,则默认选中该值。看看下面的代码
<input name="ad_approve" type="checkbox" value="1" <?php if($approve==1) echo 'checked="checked"';?> />
老实说,你的问题没有什么意义,但我能理解你希望检查是否实际设置了复选框
首先,复选框上不需要value属性,因为浏览器决定通过GP头发送什么值(如果有的话)
复选框(和单选按钮)是
可通过开关进行切换的开/关开关
用户。开关处于“开启”状态时
控件元素的checked属性为
设置提交表格时,仅
“打开”复选框控件可以变为
成功
因此,基本上,如果未选中复选框,则实体将不会通过标题发送,因此对于isset()
,将是一个完全可用的检查
您使用real escape的方式是完全错误的,您永远不应该只使用html、数据库的real escape
以这段代码为例
if(isset($_POST['some_check']))
{
echo $_POST['some_check']; //on
}else
{
echo 'some_check has not been checked';
}
您的代码:
if (isset($_POST['ad_approve'])) $ad_approve = htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['ad_approve'])));
else { $ad_approve = 0; }
你能给我一个很好的理由解释为什么你在一个实体上使用htmlspecialchars
,strip\u标签
和mysql\u real\u escape\u string
:
$ad_approve = isset($_POST['ad_approve']) ? true : false;
对于此类问题,参考文档以更好地了解从浏览器发送的确切内容并不难
如果您希望将值添加到复选框中,您将使用隐藏字段执行此操作,下面的示例如下
<input type="checkbox" name="check_box" />
<input type="hidden" name="check_box_value" value="01100001" />
通过添加另一个隐藏的html输入,您可以对用户隐藏元素,然后将其用作数据持有者,因此您应该使用完全相同的名称,但添加\u value
只是为了最佳实践
编辑
+1对于信息,如果不是这样,那么我们如何处理复选框中的值,因为我想要的是从复选框中获取二进制值,并执行一些操作,如比较、插入和更新。仅供参考,我是第一次编写代码,是有人建议我这样做的,所以只有我采用了它,我会纠正自己的错误。感谢您更新了一个可行的解决方案,而且二进制数据相当长,您是否考虑过存储数据服务器端(如mysql),然后使用id跟踪数据。@RobertPitt这只是我问题的演示,不是确切的代码,我使用mysql存储和检索数据,顺便说一句,我所说的二进制数据是指在数据库中存储1或0,而不是以某种二进制数据格式存储。:)1或0不是二进制的,有整数,0=00110000
,所以你可以在表单中存储00110000而不是0,除非你对二进制数据有误解,如果你想要一个可以使用开/关类型检查的系统,那么你可以使用0/1。@RobertPitt我仍然不知道逻辑,如果我使用复选框只是为了在数据库(mysql)中获取并存储值0或1,那么如何将该值带到数据库中?因为用户将选中它以批准或不批准。如何使用隐藏字段逻辑完成此任务?
if(isset($_POST['check_box']))
{
echo $_POST['check_box_value']; //01100001
}else
{
echo 'some_check has not been checked';
}
if(isset($_POST['some_check_box']))
{
mysql_query('UPDATE profile SET receive_mail = 1');
}else
{
mysql_query('UPDATE profile SET receive_mail = 0');
}