我有一系列带有一些额外列的复选框。检查一个时,它的值将添加到MySQL表中。值从1到32。
当其中一个未经检查时,我需要向MySQL发送相同的数据,并使用ON DUPLICATE KEY UPDATE来更新其余的列(如果已更改)。
在这种情况下,我不想发送0或1但值为1到32。
<input type="checkbox" name="add_value[]" id="add-value" value="{$values.id_value}"/><p>{$values.name} </p>
这样做的方法如下:
<input type="checkbox" name="1bit" />
<input type="checkbox" name="2bit" />
<input type="checkbox" name="4bit" />
<input type="checkbox" name="8bit" />
<input type="checkbox" name="16bit" />
然后在你的接收器中,像
<?php
$num = 0;
if ($_REQUEST["2bit"]===1) $num += 1;
if ($_REQUEST["4bit"]===1) $num += 2;
...
?>
然后,您可以向数据库提交$ num。您还应该添加检查以确保$ _REQUEST数组中存在您的字段名称(1位,2位等)
扩展我对他所要求的评论,你可以这样做:
$checkBoxValue = (ISSET($_POST['name']) ? 1 : 0;
然后只需使用标准的SQL查询来执行您需要的操作。
如果您需要复选框的特定值,您可以结合使用hiddens来保存值。
或者甚至还有一个选项可以做到这样的事情:
<form action="" method="post">
<input type="checkbox" id="status_1" name="status_1" value="1" />
<input type="checkbox" id="status_2" name="status_2" value="1" />
<input type="checkbox" id="status_3" name="status_3" value="1" />
<input type="submit" />
</form>
<?php
for($i = 1; $i<=count($_POST); $i++) {
$_POST["status_$i"] = isset($_POST["status_$i"]) ? $_POST["status_$i"] : 0;
}
var_dump($_POST);