Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复选框没有得到正确的顺序_Javascript_Php_Html - Fatal编程技术网

Javascript 复选框没有得到正确的顺序

Javascript 复选框没有得到正确的顺序,javascript,php,html,Javascript,Php,Html,我有这些复选框用于识别(如果选中)应该给相应的客户发送电子邮件,它应该是预先选中的 但是,当它被预先选中,然后当我取消选中一个复选框时,例如multipayment_email[1],当提交到PHP时,未设置的是最后一个索引multipayment_email[4] list\u payments.php: <form method="POST"> <?php while($row = mysqli_fetch_array($selectQuery) { ?>

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

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

list\u 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>
应该是

“插入到付款()值中(NULL,'2 wew',0)”


有什么启示吗?

最后一条没有被取消选中,这行代码会给您带来不希望的结果

$email = isset($emails[$key]) ? 1:0;

如果取消选中该复选框,则不会将其提交到服务器。转储提交的复选框数组(我想你会得到它)

所有输入都需要有不同的名称。 现在有两个名称的一汽输入
multipayment\u name[]
multipayment\u email[]

尝试以下操作:

<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>
不勾选的复选框将使字段未设置且不会被过账,从那里您可以轻松地执行
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/>";
}
$rows=$\u POST['rows'];
foreach($行作为$行){
$email=isset($row['email')?1:0;
$name=$row['name'];
$query=“INSERT INTO payments()值(空,$name',$email)”;
$response['message'].=$query.“
”; }

但是DO警告说,此代码易受sql注入的影响。由于这超出了此问题的范围,所以我们不要在这里深入探讨:)

这与您的问题无关,但此代码易受sql注入的影响。想象一下,如果某人的名字是
,“”),会发生什么情况;
您的
$name
$emails
数组大小不一样,因此您不能使用
$names
键来
$emails
谢谢,先生,由于您给我的概念,我采用了不同的方法。相反,我创建了一个值为=1的虚拟输入类型(如果取消选中相应的复选框,则会发生变化)。因此,我不必处理未设置的复选框索引。虽然这真的很好,但是我更喜欢PHP文件上的较小循环。谢谢:)我已经尝试过了,先生,但问题是索引计数会有点偏,因此不太适合我的情况。谢谢
<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>
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'
        )
    )
)
$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/>";
}