Php 选中“无”的html复选框不会发布
我从一个HTML表单中发布复选框,我遇到了一个奇怪的问题。首先,我在表单顶部有一个默认的复选框和禁用框,但它不包含在POST数据中。第二个是,如果我不检查某些内容,整个数组将被忽略 如何使其1)包含默认框,2)如果未选择空数组,则发布空数组 代码如下:Php 选中“无”的html复选框不会发布,php,html,post,Php,Html,Post,我从一个HTML表单中发布复选框,我遇到了一个奇怪的问题。首先,我在表单顶部有一个默认的复选框和禁用框,但它不包含在POST数据中。第二个是,如果我不检查某些内容,整个数组将被忽略 如何使其1)包含默认框,2)如果未选择空数组,则发布空数组 代码如下: <form action="file.php" method="POST"> <label><input type="checkbox" name="options[]" value="username" c
<form action="file.php" method="POST">
<label><input type="checkbox" name="options[]" value="username" checked disabled> Username</label><br>
<label><input type="checkbox" name="options[]" value="title"> Title</label>
<label><input type="checkbox" name="options[]" value="first"> First Name</label>
<label><input type="checkbox" name="options[]" value="last"> Last Name</label><br>
<label><input type="checkbox" name="options[]" value="address"> Address</label>
<label><input type="checkbox" name="options[]" value="city"> City</label>
<label><input type="checkbox" name="options[]" value="state"> State</label>
<label><input type="checkbox" name="options[]" value="zip"> ZIP</label><br>
<label><input type="checkbox" name="options[]" value="email"> Email</label>
<label><input type="checkbox" name="options[]" value="phone"> Phone</label><br>
<input type="submit" value="submit">
</form>
用户名
标题
名字
姓氏
地址
城市
陈述
拉链
电子邮件
电话
file.php
<?php var_dump($_POST)
这是标准HTML的一部分(即不是浏览器)。根据定义。考虑不同的数据结构,或者添加一些类似
if(isset($_POST['options'])) {
//work with options here
}
如果这不起作用,您可以始终包含一个隐藏的元素,它至少可以在$\u POST
<input type="hidden" name="options[]" value="NA">
这是标准HTML的一部分(即不是浏览器)。根据定义。考虑不同的数据结构,或者添加一些类似
if(isset($_POST['options'])) {
//work with options here
}
如果这不起作用,您可以始终包含一个隐藏的元素,它至少可以在$\u POST
<input type="hidden" name="options[]" value="NA">
您也可以这样做,而无需更改HTML。简单地说,创建一个包含所有可能复选框值的列表,并与发布的值进行比较。就用户名而言,由于它始终存在,您可以手动将其添加到$\u POST
数组中
// Auto insert username to $_POST array (because it's always there by default)
$_POST['options'][] = 'username';
// Create array of all possible checkbox values
$boxes = array('username','title','first','last','address','city','state','zip','email','phone');
// Compare $_POST array to list of possible checkboxes
// and create manual post array
$post_array = array();
foreach ($boxes as $box) {
$post_array[$box] = in_array($box, $_POST['options']) ? 'checked' : 'NOT checked';
}
输出将是一个数组,$post_array
,它将包含以下内容:
Array
(
[username] => checked
[title] => checked
[first] => NOT checked
[last] => NOT checked
[address] => checked
[city] => checked
[state] => NOT checked
[zip] => NOT checked
[email] => NOT checked
[phone] => checked
)
您也可以在不更改HTML的情况下执行类似的操作。简单地说,创建一个包含所有可能复选框值的列表,并与发布的值进行比较。就用户名而言,由于它始终存在,您可以手动将其添加到$\u POST
数组中
// Auto insert username to $_POST array (because it's always there by default)
$_POST['options'][] = 'username';
// Create array of all possible checkbox values
$boxes = array('username','title','first','last','address','city','state','zip','email','phone');
// Compare $_POST array to list of possible checkboxes
// and create manual post array
$post_array = array();
foreach ($boxes as $box) {
$post_array[$box] = in_array($box, $_POST['options']) ? 'checked' : 'NOT checked';
}
输出将是一个数组,$post_array
,它将包含以下内容:
Array
(
[username] => checked
[title] => checked
[first] => NOT checked
[last] => NOT checked
[address] => checked
[city] => checked
[state] => NOT checked
[zip] => NOT checked
[email] => NOT checked
[phone] => checked
)
禁用的复选框不会被张贴。您可以在提交过程中启用它,也可以对该值使用隐藏输入。为它们指定自己的名称,浏览器只发送打开的复选框不会有问题。禁用的复选框不会被张贴。您可以在提交期间启用它,也可以对该值使用隐藏输入。为它们指定自己的名称,浏览器只发送打开的元素不会有问题。在这种情况下,“从不发送未选中和禁用的复选框”,但可以。如果是,则不成功发送禁用的元素(任何类型),您需要将索引与hidden和checkbox/disabled相匹配,并且hidden必须位于checkbox之前。在这种情况下,“未选中和禁用的复选框永远不会发送”,但为“是”。为True,但也不能成功地发送任何禁用的元素(任何类型),您需要将索引与hidden和checkbox/disabled相匹配,并且hidden必须位于checkbox之前。