Php 即使未选中,也要使复选框出现在$\u POST数组中
我有一张HTML表格中的发票。选择项目名称,然后选择项目批次和项目。末尾有一个复选框,用于标记是否已售完Php 即使未选中,也要使复选框出现在$\u POST数组中,php,html,forms,Php,Html,Forms,我有一张HTML表格中的发票。选择项目名称,然后选择项目批次和项目。末尾有一个复选框,用于标记是否已售完 <input type="checkbox" name="soldout[]"> 因此,如果我有三个行项目,第一个和最后一个标记为已售罄,它将处理为前两个已售罄和最后一个未售罄 我想我做不到: <input type="checkbox" name="soldout[<?php echo $i; ?>]"> 因为我在需要时使用javascript添加空
<input type="checkbox" name="soldout[]">
因此,如果我有三个行项目,第一个和最后一个标记为已售罄,它将处理为前两个已售罄和最后一个未售罄
我想我做不到:
<input type="checkbox" name="soldout[<?php echo $i; ?>]">
因为我在需要时使用javascript添加空发票行,不知道如何增加数组键
关于如何处理这个问题有什么想法吗?没有直接的HTML解决方案。如果Javascript是一个选项,您可以在那里查看,但是如果您想要一个直接的HTML解决方案,PHP中不会显示未选中的复选框,但单选按钮会显示
<input type="radio" name="soldout[<?php echo $i; ?>]" value="true"> Yes
<input type="radio" name="soldout[<?php echo $i; ?>]" value="false"> No
记住true周围的引号,因为它是一个字符串
同样,如果您在服务器端填充复选框,您也应该知道哪些值应该存在,如果它们不在$\u POST中,则假定它们未选中
foreach ($availableProductIDs as $id) {
if(isset($_POST['soldout'][$id]){
$so = true;
}
else {
$so = false;
}
}
当您使用JS增加数组时,只需将名称更改为soldout_new,然后增加一个变量 大概是这样的:
var soldout_new = 0;
function add()
{
'<input type="checkbox" name="soldout_new[' + soldout_new + ']">';
soldout_new += 1;
}
或者您也可以将变量设置为php中的id:
var soldout = <?php echo $i; ?>;
function add()
{
'<input type="checkbox" name="soldout[' + soldout + ']">';
soldout += 1;
}
为什么不这样做呢
<input type="checkbox" name="soldout[]" value="<?= $productID[0] ?>">
<input type="checkbox" name="soldout[]" value="<?= $productID[1] ?>">
无Java解决方案:
<input type="hidden" name="hsoldout[]" value="$value">
<input type="checkbox" name="soldout[]" value="$value"><br />
通过JavaScript新添加的行是否也有productID?如果是这样,并且每行都是唯一的,我将使用productID作为soldout[]的键,即soldout[]。显然,使用JavaScript时,您必须分析新创建的行的productID,然后添加is作为复选框名称的键。不,它们不一定是唯一的。
<input type="checkbox" name="soldout[]" value="<?= $productID[0] ?>">
<input type="checkbox" name="soldout[]" value="<?= $productID[1] ?>">
foreach($productID as $key=>$id) {
$p = $id;
if(in_array($id, $soldout) {
$so = true;
}
}
<input type="hidden" name="hsoldout[]" value="$value">
<input type="checkbox" name="soldout[]" value="$value"><br />
if(array_key_exists($_POST[hsoldout],$i)) { <br/>
$_POST[soldout][$i] = $_POST[soldout][$i]; // makes sure it is set as a
$_POST var <br />
.... <br />
}