Php 即使未选中,也要使复选框出现在$\u POST数组中

Php 即使未选中,也要使复选框出现在$\u POST数组中,php,html,forms,Php,Html,Forms,我有一张HTML表格中的发票。选择项目名称,然后选择项目批次和项目。末尾有一个复选框,用于标记是否已售完 <input type="checkbox" name="soldout[]"> 因此,如果我有三个行项目,第一个和最后一个标记为已售罄,它将处理为前两个已售罄和最后一个未售罄 我想我做不到: <input type="checkbox" name="soldout[<?php echo $i; ?>]"> 因为我在需要时使用javascript添加空

我有一张HTML表格中的发票。选择项目名称,然后选择项目批次和项目。末尾有一个复选框,用于标记是否已售完

<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解决方案:

&lt;input type="hidden" name="hsoldout[]" value="$value"&gt;
&lt;input type="checkbox" name="soldout[]" value="$value"&gt;<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;
    }
}
&lt;input type="hidden" name="hsoldout[]" value="$value"&gt;
&lt;input type="checkbox" name="soldout[]" value="$value"&gt;<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 />
}