"> "> 这完美地显示了数据,并且检查所有数据是否正确。 但-6ren">
gpt4 book ai didi

php - 循环列表始终使用复选框插入列表中的第一个

转载 作者:行者123 更新时间:2023-11-29 17:51:49 25 4
gpt4 key购买 nike

我有一个从数据库表填充的列表,如下所示。

<?php
while($row=mysql_fetch_array($result))
{
?>
<tr>
<td>
<input type="checkbox" name="name[]" value="<?php echo
$row['AnalysisID']; ?>">
<?php echo $row["CustomerName"]; ?>
<input type="hidden" name="Site[]" value="<?php echo $row["Site"]; ?>">
<input type="hidden" name="Unit[]" value="<?php echo $row["Unit"]; ?>">
</td>
<td><?php echo $row['Site']; ?></td>
<td><?php echo $row['Unit']; ?></td>
</tr>
<?php
}
?>

这完美地显示了数据,并且检查所有数据是否正确。

但是我希望能够选中各个复选框并将这些行插入到另一个表中。

为了实现这一点,我正在使用:

$counter = count($_POST["name"]);

for($x=0; $x<=$counter; $x++){

if(!empty($_POST["name"][$x])){
$PI_NO = mysql_real_escape_string($_POST["name"][$x]);
$CUSTOMER_NAME = mysql_real_escape_string($_POST["Site"][$x]);
$PI_ADDRESS = mysql_real_escape_string($_POST["Unit"][$x]);

$qry="INSERT INTO test1 (AnalysisID, Elem, Lube) VALUES ('$PI_NO','$CUSTOMER_NAME','$PI_ADDRESS')";
mysql_query($qry);

}

}

问题是,无论我检查什么行,它总是插入列表中的第一行,它只是从列表的开头插入正确的数字。

例如,如果我检查列表中的最后 4 个,我会得到前 3 个。

任何指示都会有很大帮助。

最佳答案

只有在选中复选框时才会发送复选框值,因此 $_POST["name"] 和其他 $_POST 数组中的索引将不同。(未选中的复选框输入被视为“不成功”https://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.2)

尝试添加 ID 作为索引,然后选定的数据将保持在一起。(我将 name 数组重命名为 aid 以更好地匹配内容)

<td>
<input type="checkbox" name="aid[<?php echo $row['AnalysisID']; ?>]" value="1">
<?php echo $row["CustomerName"]; ?>
<input type="hidden" name="Site[<?php echo $row['AnalysisID']; ?>]" value="<?php echo $row["Site"]; ?>">
<input type="hidden" name="Unit[<?php echo $row['AnalysisID']; ?>]" value="<?php echo $row["Unit"]; ?>">
</td>

然后使用 foreach() 循环访问发布数据。仅发布已检查的 ID,因此无需 if (!empty() 检查。

if (isset($_POST["aid"])) { // to avoid php undefined notice if none selected
foreach ($_POST["aid"] as $id=>$value){ // the index is what we need, using $id

$PI_NO = mysql_real_escape_string($id);
$CUSTOMER_NAME = mysql_real_escape_string($_POST["Site"][$id]);
$PI_ADDRESS = mysql_real_escape_string($_POST["Unit"][$id]);

$qry="INSERT INTO test1 (AnalysisID, Elem, Lube) VALUES ('$PI_NO','$CUSTOMER_NAME','$PI_ADDRESS')";
mysql_query($qry);

}
}

此外,我强烈建议您不要使用已弃用的 mysql_* 函数,而是使用 mysqli 或 PDO。 Why shouldn't I use mysql_* functions in PHP?

关于php - 循环列表始终使用复选框插入列表中的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49260339/

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