gpt4 book ai didi

javascript - 复选框顺序不正确

转载 作者:行者123 更新时间:2023-12-03 05:15:19 24 4
gpt4 key购买 nike

我有这些复选框用于识别(如果选中)应该向相应的客户发送电子邮件,它应该被预先检查。

但是当它被预先选中时,然后当我取消选中一个复选框(例如 multi payment_email [1])时,当提交给 PHP 时,未设置的就是最后一个索引 multi payment_email [4]。

list_ payments.php:

<form method="POST">
<?php while($row = mysqli_fetch_array($selectQuery) { ?>
<input type="text" name="multipayment_name[]" required/>
<input type="checkbox" name="multipayment_email[]" checked />
<?php } ?>
</form>

SUBMIT_ payment.php:

$names = $_POST['multipayment_name'];
$emails = $_POST['multipayment_email'];

foreach ($names as $key => $name)
{
$email = isset($emails[$key]) ? 1:0;

$query = "INSERT INTO payments() VALUES (NULL, '$name', $email)";

$response['message'] .= $query."<br/>";
}

die(json_encode($response));

因此,当我提交表单时,这就是输出(假设我取消选中了 5 个复选框中的第二个索引):

"INSERT INTO payments() VALUES (NULL, '1 waw', 1)"

"INSERT INTO payments() VALUES (NULL, '2 wew', 1)"

"INSERT INTO payments() VALUES (NULL, '3 wiw', 1)"

"INSERT INTO payments() VALUES (NULL, '4 wow', 1)"

"INSERT INTO payments() VALUES (NULL, '5 wuw', 0)"

应该是

“INSERT INTO payment() VALUES (NULL, '2 wew', 0)”

有什么启示吗?

最佳答案

试试这个:

<form method="POST">
<?php $idx = 0; ?>
<?php while($row = mysqli_fetch_array($selectQuery)): ?>
<input type="text" name="rows[<?php echo $i; ?>][name]" required/>
<input type="checkbox" name="rows[<?php echo $i; ?>][email]" checked />
<?php ++$idx; ?>
<?php endwhile; ?>
</form>

因此,如果取消选中第三个复选框,您将获得以下格式的 $_POST 数据:

array(
'rows' => array(
array(
'name' => 'the value of name 1',
'email' => 'on'
),
array(
'name' => 'the value of name 2',
'email' => 'on'
),
array(
'name' => 'the value of name 3'
)
)
)

未选中的复选框将取消设置该字段且不会发布,从那里您可以轻松地进行 isset 检查以了解它是否已选中。

$rows = $_POST['rows'];
foreach ($rows as $row) {
$email = isset($row['email') ? 1 : 0;
$name = $row['name'];
$query = "INSERT INTO payments() VALUES (NULL, '$name', $email)";
$response['message'] .= $query."<br/>";
}

但请注意此代码容易受到 SQL 注入(inject)的影响。由于这超出了这个问题的范围,所以我们不要在这里深入讨论:)

关于javascript - 复选框顺序不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com