如果选中,则在 php 中,$_REQUEST(或$_GET 或$_POST)中存在一个复选框(并包含值)。否则不存在。因此,要确定您的复选框是否被选中,您可以使用以下命令:
$is_checked = isset($_POST["checkbox_name"]);
要打印复选框值,请使用checked html attribute。如果给出,复选框将被打勾。
print(
"<input ".
"type='checkbox' ".
"name='checkbox_name' ".
(isset($_POST["checkbox_name"]) ? "checked='checked' " : "").
" />"
);
为了处理动态数量的元素,我在$_POST(或$_REQUEST)中使用了数组。您可以通过将[ 和] 添加到您的输入的name 属性的末尾(例如https://www.php.net/manual/reserved.variables.post.php#87650)来做到这一点。另一种方法是使用后缀或前缀(例如checkbox_name_1),但在我看来,这只是需要做更多的工作。
要添加新输入,您的 javascript 可能类似于以下 sn-p。名称始终相同,只是附加了一个 [<index>] 来告诉 php 将其作为数组处理。 <index> 是要使用的数字索引。这很重要,否则您不能使用isset($_POST[...][$index]),因为动态索引会“填满”您的复选框值。
$("#add").on("click", function(){
let i = $("#table tr").length;
$("#table").append(
"<tr>" +
"<td>Name <input type='text' name='name[" + i + "]' /></td>" +
"<td>Is solo parent <input type='checkbox' name='is_solo_parent[" + i + "]' /></td>" +
"<td>Is employeed <input type='checkbox' name='is_employeed[" + i + "]' /></td>" +
"</tr>"
);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="add">Add</button>
<table id="table">
</table>
然后你可以在 php 中遍历请求的变量并检查它们是否存在:
foreach($_POST["name"] as $i => $name){
// the "name" exists, if no name is given, no entry in the database is wanted
$is_solo_parent = isset($_POST["is_solo_parent"][$i]); // true or false
$employeed = isset($_POST["employeed"][$i]); // true or false
$database->insert($name, $is_solo_parent, $employeed);
}
$database->insert() 当然是一个将数据填充到数据库中的函数。确保转义用户输入以防止script injection 并最好使用prepared statements 以防止sql injection。