gpt4 book ai didi

PHP复选框问题

转载 作者:行者123 更新时间:2023-12-04 23:28:31 26 4
gpt4 key购买 nike

我在这里疯了,我有一个表单的复选框数组,我试图用 PHP $_POST。我表单上的所有内容都可以正常发布,但复选框除外。复选框确实会发布,但顺序错误。例如,当我想要 checkbox[0]checkbox[2] 时,我实际上得到了 checkbox[0]checkbox[1]

我尝试了很多不同的方法来获取复选框的值,包括 isset 但我仍然遇到同样的问题。如果确实选中了复选框,我只需要将 on 的复选框值存储在我的数据库中。

我的代码如下。 $in_production 是复选框。如果需要,我也可以提供生成复选框的代码。

提前致谢。

if ($_GET['action'] == 'Edit_Product'){

include("../dbinfo.php");

$q_id = $_GET['q_id'];

for ($i = 0; $i < count($_POST['p_id']); $i++){

$result = mysql_query('SELECT * FROM products WHERE q_id = '.$q_id);
$num = mysql_num_rows($result);

$p_id = ($_POST['p_id'][$i]);
$in_production = ($_POST['in_production'][$i]);
$p_name = ($_POST['p_name'][$i]);
$p_price = ($_POST['p_price'][$i]);

$p_name_conflict = FALSE;

for ($ii = 0; $ii < $num; $ii++){
$row = mysql_fetch_array($result);
$p_name_conflict_check = $row['p_name'];
$p_id_conflict_check = $row['p_id'];

if($p_name_conflict_check == $p_name &&
$p_id_conflict_check != $p_id){
$p_name_conflict = TRUE;
}

}

if ($p_name_conflict == FALSE){
$query = "UPDATE products SET p_name='$p_name',
p_price='$p_price', in_production='$in_production',
last_modified=CURDATE() WHERE p_id = '$p_id'";
mysql_query($query);
}

else{
$update_failures =+1;
}

}

mysql_close($link);

if($update_failures == 0){
header("Location: Products_Updated.html");
}

elseif ($update_failures != 0){
header("Location: Products_Exist.php?update_failures=".$update_failures);
}

}

附言我不知道为什么,但代码块图标现在不在 SO 上……所以我的代码并不漂亮。另外,我知道我的代码效率低得可怕,但我现在只是想让它正常工作,然后再进行微调。我也对效率建议持开放态度,但这不是我提出这个问题的主要目标。

编辑:这是来自 HTML 的表单...

        <form id="form" name="form" method="post" action="/Management/Products/Product_Management.php?action=Edit_Product&q_id=<?php echo "$q_id" ?>">

<?php

include("../dbinfo.php");

$result = mysql_query('SELECT * FROM products WHERE q_id =' . $q_id);
$num = mysql_num_rows($result);
mysql_close($link);

for ($i = 0; $i < $num; $i++){
$row = mysql_fetch_array($result);

$p_id = $row['p_id'];
$p_name = $row['p_name'];
$p_price = $row['p_price'];
$in_production = $row['in_production'];
$date_added = $row['date_added'];
$last_modified = $row['last_modified'];

if($in_production == 'on'){
$checked = 'checked';
}

else{
$checked = '';
}

echo "<div>Product ID# " . $p_id . "<label style=\"font-style:italic\"> (Originally added on " . $date_added . ", last modified on " . $last_modified . ")</label></div><br/>";
echo "<input id=\"p_id" . $p_id . "\" class=\"text\" type=\"hidden\" name=\"p_id[]\" value=\"" . $p_id . "\"/>";

echo "<label>Product Name *</label><br/>";
echo "<div><label style=\"font-style:italic\">(Product still in production <input type=\"checkbox\" name=\"in_production[]\"" . $checked . " style=\"width:15px\"/>)</label></div>";
echo "<input id=\"p_name" . $p_id . "\" class=\"text\" type=\"text\" name=\"p_name[]\" maxlength=\"20\" onfocus=\"on_focus(this)\" onblur=\"on_blur(this)\" value=\"" . $p_name . "\"/><br/><br/>";

echo "<label>Product Price *</label><br/>";
echo "<div><label style=\"font-style:italic\">(Without taxes)</label></div>";
echo "<input id=\"p_price" . $p_id . "\" class=\"text\" type=\"text\" name=\"p_price[]\" maxlength=\"6\" onkeypress=\"return currency(this, event)\" onchange=\"currency_format(this)\" onfocus=\"on_focus(this)\" onblur=\"on_blur(this)\" value=\"" . $p_price . "\"/><br/><br/><br/><br/>";

}

?>

<input class="button" type="button" value="Submit" onclick="product_edit_form_check()"/><br/><br/>

</form>

最佳答案

如果您可以发布一些 HTML 部分,这样我们就可以了解您是如何创建表单的,那将会很有帮助。似乎您正在生成数组中没有索引的复选框,因此所有复选框的名称/标识为“checkbox[]”,如果您不关心索引,这是可以的,但如果发布,数组将被编号从“0”开始,然后向上计数,这就是为什么您会发布“0”和“1”的原因,即使选中了“0”和“2”也是如此。

在生成 HTML 时尝试提供复选框的名称/ID 编号,例如“checkbox[0]”、“checkbox[1]”、“checkbox[2]”等。因此,当复选框 0 和 2 被选中时,您应该获得这些值(包括正确的索引)。

关于PHP复选框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3235743/

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