【问题标题】:Multiple Values (1 or 0) for checkbox array with same name具有相同名称的复选框数组的多个值(1 或 0)
【发布时间】:2025-12-14 09:40:01
【问题描述】:

只是想知道为复选框设置默认值的最佳方法。我希望值在选中时为 0,在未选中时为 1。 由于数组,我不能使用“ input type="hidden" name="chk_name[]" value="1" "。它使我的数组加倍。 如果我在使用 isset 后尝试设置它,它不会将它放入我的数组中。

我有多个数组并且想要匹配它们,以便所有数组 [0] 和数组 [1] 等一起更新,因此缺少值会搞砸。

那么我怎样才能将 1 放入数组中,以用于未检查的地方?

Form:

<?php
require_once ("con.php");


$p=payment();

$result = mysqli_query($mysqli,$p);


while($res=mysqli_fetch_array($result))
{



?>

<tr>

    <td class="paid">
        <input type="hidden" value="1" name="paid[<?php echo $res['name'];?>]">
        <input type="checkbox" value="0" name="paid[<?php echo $res['name'];?>]"

            <?php 
                if($res["paid"]==0)
                {
                echo "checked";
                }               
            ?>>

    </td>
    <td class="active">
         <input type="hidden" value="1" name="active[<?php echo $res['name'];?>]">
        <input type="checkbox" value="0" name="active[<?php echo $res['name'];?>]" 
            <?php 
                if($res["active"]==0)
                {
                    echo "checked";
                }        
            ?> >
    </td>


        <input type="hidden" name="ID[<?php echo $res['name'];?>]" value="<?php echo $res['ID']; ?>">


</tr>
<?php } ?>
<tr>
<td>
<input type="submit" name="submit" value="Update">
</td>
</tr>

</table>
</form>

    </body>
</html>

php:

$paid=$_POST['paid'];
$active=$_POST['active'];


foreach($_POST as $key=>$value) 
{
    $ID=$ID[$key];
    $paid=$paid[$key];
    $active=$active[$key];

$up=updatePayment($paid,$active,$ID);
$r = mysqli_query($mysqli,$up); 
echo "Information stored successfully";

}

?>

my function:

function updatePayment($paid,$active,$ID)
{
    $uc="UPDATE
            `company`
        SET
            `paid`='$paid',
            `active`='$active'
        WHERE
            `ID`='$ID'";

    return $uc;
}

:更新代码:

我可以看到数组现在一切正常。隐藏的方法有效。

感谢大家的帮助!

【问题讨论】:

  • "选中时为 0,未选中时为 1" ?倒退到地球上的每一个人
  • 顺便说一句:如果你可以简单地使用echo $res["active"]==0 ? "checked":"",而不是你的long,这里是一个url:diywebmastery.com/3108/…
  • @Dagon 不是其他所有人:如果正常,程序中的错误代码总是返回 0(表示 true)。例如 Bashscript。也许他来自那个背景..

标签: php sql arrays checkbox mysqli


【解决方案1】:

只要隐藏字段和复选框具有相同的名称,无论名称是否为数组,它都会起作用。

这样做的简单原因是当未选中复选框值时不会发布。

试试这段代码,你会看到结果

<pre>
<?php
    print_r($_POST);
?>
</pre>
<form method="POST">
    <input type="hidden" name="fields[1]" value="1"/>
    <input type="checkbox" name="fields[1]" value="0"/>

    <input type="hidden" name="fields[2]" value="0"/>
    <input type="checkbox" name="fields[2]" value="1"/>

    <input type="hidden" name="fields[3][something][else]" value="3"/>
    <input type="checkbox" name="fields[3][something][else]" value="3"/>

    <button type="submit">Submit</button>
</form>

【讨论】:

  • 重要的一点是将隐藏字段置于复选框之上,因此如果选中它将覆盖隐藏字段的值。
  • 你是对的,数组现在可以工作了。那么更新数据库的最佳方法是什么?我的 foreach 似乎没有工作。
  • 你应该使用类似:foreach($_POST as $key=>$value) 而我猜 $ID 没有定义
最近更新 更多