gpt4 book ai didi

php - 如何发布两个不均匀的数组,其中一组是复选框,另一组是文本输入框

转载 作者:行者123 更新时间:2023-11-29 11:19:33 26 4
gpt4 key购买 nike

我无法让它工作。我需要根据检查和填写的内容更新一列中的许多记录。我尝试了检查和取消检查的不同组合,以及将文本字段设置为空白或不空白,在这个 php post 代码中,我尝试了许多不同的操作,但无法找出正确的组合以及 if/elses 或 issets 或空等。

复选框中的值对应于记录/行 ID。所有文本框都将预先填写价格。所有复选框都将被动态选中或取消选中。如果需要,人们可以撤消选中的复选框,也可以选中未选中的复选框。在发布时,所有检查的记录都应该获得匹配的文本框值。

问题是我无法让 2 个数组在我的帖子中匹配。例如,在此示例字段集中,假设我选中第二个复选框和第四个复选框。应更新的记录和应保存到列中的值应如下...

2 -> 17.67
4 -> 19.84

但我得到:

2 -> 16.95
4 -> 17.67

或者这个(如果我删除第一个和第三个文本框中的值):

2 -> empty
4 -> 17.67

或者这个(第二个复选框ID和值完全丢失)

4 -> 17.67

我做错了什么?

if (isset($_POST["savelist"]) && !empty($_POST["savelist"])) {
$productidcheckboxes = isset($_POST['productid']) ? $_POST['productid'] : array();
$listprices = isset($_POST['listprice']) ? $_POST['listprice'] : array();
//other things i tried
//$listprices = (empty($_POST['listprice'])) ? $_POST['listprice'] : array();
//$listprices = (!empty($_POST['listprice'])) ? $_POST['listprice'] : array();
//$productidcheckboxes = $_POST['productid'];
//$listprices = $_POST['listprice'];
$new = array();
for ($i=0; $i<count($productidcheckboxes); $i++) {
$new[] = $productidcheckboxes[$i];
$new[] = $listprices[$i];
}
$k=0;
foreach ($new as $value) {
$k++;
if($k==1){
$theid = $value;
}
if($k==2){
$thelistprice = $value;
//different ifs i tried
//if ($theid<>"")
//if ($value<>"")
//if ($theid<>"" && $thelistprice<>"")
//if ($theid<>"" && $value<>"")
if ($thelistprice<>"")
{
echo $theid.": ";
echo $thelistprice."<br>";
//update table with the list prices
//mysql_query("UPDATE table_name SET mylistprices = '$thelistprice' WHERE id = $theid");
}
$theid = "";
$thelistprice = "";
$k=0;
}
}
}

表单看起来像这样

<form action="" method="post">

<input type="checkbox" value="1" name="productid[]">
<input type="text" value="16.95" name="listprice[]">

<input type="checkbox" value="2" name="productid[]">
<input type="text" value="17.67" name="listprice[]">

<input type="checkbox" value="3" name="productid[]">
<input type="text" value="18.81" name="listprice[]">

<input type="checkbox" value="4" name="productid[]">
<input type="text" value="19.84" name="listprice[]">

<input type="checkbox" value="5" name="productid[]">
<input type="text" value="16.85" name="listprice[]">

<input type="submit" value="Save List" name="savelist">

</form>

顺便说一句,不均匀是指所有复选框都将具有值,因此正确的行将被更新,但文本框可能会或可能不会被填充。如果我不必清除复选框或文本输入中的任何值,我会喜欢它。它应该只更新使用其对应值检查的记录,并忽略未选中的复选框和未选中的复选框对应的值。但最终,我可能不得不改变它的完成方式,但我无法解决这个问题。

最佳答案

将硬编码数值添加到表单名称中,以便它们在您的处理页面中匹配。现在它们是随机的:

<form action="" method="post">
<input type="checkbox" value="1" name="productid[1]">
<input type="text" value="16.95" name="listprice[1]">

<input type="checkbox" value="2" name="productid[2]">
<input type="text" value="17.67" name="listprice[2]">

<input type="checkbox" value="3" name="productid[3]">
<input type="text" value="18.81" name="listprice[3]">

<input type="checkbox" value="4" name="productid[4]">
<input type="text" value="19.84" name="listprice[4]">

<input type="checkbox" value="5" name="productid[5]">
<input type="text" value="16.85" name="listprice[5]">
<input type="submit" value="Save List" name="savelist">
</form>

现在您知道,如果用户检查 product[4],它确实是 product[4]。当您将键留空(例如 productid[])时,这只是数组中的一个匿名点,并且在处理除非选中否则没有值的复选框时无法进行跟踪。

如果您勾选 productid[2]productid[4],您就会知道 listprice 数组中的值是继续您已勾选的内容:

Array
(
[listprice] => Array
(
[1] => 16.95
[2] => 17.67
[3] => 18.81
[4] => 19.84
[5] => 16.85
)

[productid] => Array
(
[2] => 2
[4] => 4
)

)

要访问值,请循环访问productid,但访问listprice:

foreach($_POST['productid'] as $key => $value){
echo $_POST['listprice'][$value].'<br />';
}

关于php - 如何发布两个不均匀的数组,其中一组是复选框,另一组是文本输入框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39158693/

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