如何使用表单 post 方法中的一个复选框
How to use one checkbox out of a form post method
我有 10 个带有 $_POST['submit'] 的表格,具有单独的设置
每个表格都以
开头
<form action="" method="POST">
并以
结尾
</form>
每个表单都有提交按钮
在所有 10 种形式之后,我有一个带有复选框值 0 和 1 的 if statemate,我可以将它用于所有 10 种形式吗?因为现在它告诉我:注意:未定义索引
已编辑:
if (isset($_POST['submit'])) {
$upgrade = security($_POST['upgrd']);
$amount = security($_POST['amount']);
if (security($_POST['cdn']) == 1) {
$money = $row['bank'] + $row['money'];
} else {
$money = $row['money'];
}
这是POST提交的一部分
表格的代码是:
<?php
if (get_user_stopv($urow['id']) == 0) {
echo '
<tr>
<form action="" method="POST">
<td style="text-align:center;">Something here</td>
<td style="text-align:center;">' . $amount . '</td>
<td style="text-align:center;">7</td>
<td style="text-align:center;">
<input type="hidden" name="upgrd" value="stopvote">
<input type="hidden" name="amount" value="' . $amount3 . '">
<input type="submit" name="submit" class="btn-default" value="submit">
</td>
</tr>
</form>';
}
?>
所有表格都像这个例子......在所有表格的末尾我有:
<form action="" method="POST">
<?php
if (get_user_card($urow['id']) == 1) {
echo '
<label class="pull-right">something here ! ';
}
echo '<input type="checkbox" name="cdn" class="hidden" value="0" checked>
<input type="checkbox" name="cdn" value="1"></label>
<br /><br />';
?>
</form>
首先,通知。
如果一个复选框没有被选中,它的值就不会出现。
您不会在 $_POST 中找到它。
您必须执行以下操作之一来选中要选中的复选框:
if(isset($_POST['cdn']))
在复选框前设置一个<input type="hidden" name="cdn" value="0">
。这样,如果未选中复选框 - 将出现零。如果选中 — 它将被“1”覆盖。
关于你的问题:
从您的代码中看不清楚,但您的网页上似乎有几个 <form>
元素。提交表单时 — 仅提交 一个 表单,而不是页面上的所有表单。一种特殊形式。带有您单击的提交按钮的那个。
如果您的页面上还有一些 <form>...</form>
块 — 它们将被完全忽略。
您想通过一个提交按钮发送多个表单的值,对吗?
我建议按以下方式进行:
该方法基于 jQuery 的表单序列化功能和事件绑定。您需要的是一个函数,当您按下提交按钮时,它 运行 遍历所有表单,获取它们的值并发送它们。
为此,您可以在 HTML 的客户端使用 jQuery。
jQuery提供表单序列化方法serialize()。
如果您 运行 $('form').serialize()
在一个包含多个表单的页面上,所有表单都被序列化为一个字符串。您可以使用它们的选择器将其更改为仅包含某些形式,例如 $('#form1, #form2').serialize()
.
编写一个函数来聚合表单值并通过 ajax:
发送它们
function sendFormValues() {
// fetch form data and serialize it
// this is where the magic happens :)
var data = $('form').serialize();
// show the serialized form data in the browser's console
console.log(data);
// jquery ajax POST
$.ajax({
type: "POST",
url: "script.php",
data: data,
});
}
现在您将事件 "submit button clicked" 绑定到函数 "sendFormValues"。
$(document).ready(function() {
$("#buttonSubmit").click(function(){
sendFormValues();
});
});
就是这样!
当按下提交按钮时,所有表单的值都通过 ajax post 发送。
请正确命名您的输入字段以避免名称冲突。
我有 10 个带有 $_POST['submit'] 的表格,具有单独的设置 每个表格都以
开头<form action="" method="POST">
并以
结尾</form>
每个表单都有提交按钮 在所有 10 种形式之后,我有一个带有复选框值 0 和 1 的 if statemate,我可以将它用于所有 10 种形式吗?因为现在它告诉我:注意:未定义索引
已编辑:
if (isset($_POST['submit'])) {
$upgrade = security($_POST['upgrd']);
$amount = security($_POST['amount']);
if (security($_POST['cdn']) == 1) {
$money = $row['bank'] + $row['money'];
} else {
$money = $row['money'];
}
这是POST提交的一部分
表格的代码是:
<?php
if (get_user_stopv($urow['id']) == 0) {
echo '
<tr>
<form action="" method="POST">
<td style="text-align:center;">Something here</td>
<td style="text-align:center;">' . $amount . '</td>
<td style="text-align:center;">7</td>
<td style="text-align:center;">
<input type="hidden" name="upgrd" value="stopvote">
<input type="hidden" name="amount" value="' . $amount3 . '">
<input type="submit" name="submit" class="btn-default" value="submit">
</td>
</tr>
</form>';
}
?>
所有表格都像这个例子......在所有表格的末尾我有:
<form action="" method="POST">
<?php
if (get_user_card($urow['id']) == 1) {
echo '
<label class="pull-right">something here ! ';
}
echo '<input type="checkbox" name="cdn" class="hidden" value="0" checked>
<input type="checkbox" name="cdn" value="1"></label>
<br /><br />';
?>
</form>
首先,通知。 如果一个复选框没有被选中,它的值就不会出现。 您不会在 $_POST 中找到它。 您必须执行以下操作之一来选中要选中的复选框:
if(isset($_POST['cdn']))
在复选框前设置一个
<input type="hidden" name="cdn" value="0">
。这样,如果未选中复选框 - 将出现零。如果选中 — 它将被“1”覆盖。
关于你的问题:
从您的代码中看不清楚,但您的网页上似乎有几个 <form>
元素。提交表单时 — 仅提交 一个 表单,而不是页面上的所有表单。一种特殊形式。带有您单击的提交按钮的那个。
如果您的页面上还有一些 <form>...</form>
块 — 它们将被完全忽略。
您想通过一个提交按钮发送多个表单的值,对吗?
我建议按以下方式进行:
该方法基于 jQuery 的表单序列化功能和事件绑定。您需要的是一个函数,当您按下提交按钮时,它 运行 遍历所有表单,获取它们的值并发送它们。
为此,您可以在 HTML 的客户端使用 jQuery。 jQuery提供表单序列化方法serialize()。
如果您 运行 $('form').serialize()
在一个包含多个表单的页面上,所有表单都被序列化为一个字符串。您可以使用它们的选择器将其更改为仅包含某些形式,例如 $('#form1, #form2').serialize()
.
编写一个函数来聚合表单值并通过 ajax:
发送它们 function sendFormValues() {
// fetch form data and serialize it
// this is where the magic happens :)
var data = $('form').serialize();
// show the serialized form data in the browser's console
console.log(data);
// jquery ajax POST
$.ajax({
type: "POST",
url: "script.php",
data: data,
});
}
现在您将事件 "submit button clicked" 绑定到函数 "sendFormValues"。
$(document).ready(function() {
$("#buttonSubmit").click(function(){
sendFormValues();
});
});
就是这样! 当按下提交按钮时,所有表单的值都通过 ajax post 发送。
请正确命名您的输入字段以避免名称冲突。