Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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
在html和php中使用复选框传递值_Php_Html - Fatal编程技术网

在html和php中使用复选框传递值

在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'])));

我有两张表格

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'])));
        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');
}