【发布时间】:2021-01-05 12:03:34
【问题描述】:
我又被一个问题困住了。
我有一个表格,用于检查一些产品,完成后我提交此表格以删除一些产品。我的页面正在重定向到同一页面。
该值已从数据库中删除,但不在页面上。我必须刷新页面才能在页面上完成此操作,并且产品已被删除。
我以为我可以刷新页面但是 javascript 但我没有用 JS 保存我会尝试在表单提交后使用 onformsubmit location.reload() 刷新页面
我以为我找到了解决方案,因为这与我遇到的问题完全相同:Refresh value on page after form submit
我的表格:
echo "<form method='post' action='../controller/product_view.php' name='removeProduct' id='removeProduct'>";
echo "<div class='product_navigation_bar'>";
echo "<span class='product_navigation_bar_title'> Product List </span>";
echo "<span class='product_navigation_bar_content'> If you want to delete some products Check the checkboxes and submit it with this button: </span>";
echo "<button class='btn btn-danger remove_button' onclick='reloader();' type='submit' id='submit'>Submit</button>";
echo "</div>";
echo "<div class='product_view_wrap'>";
$n = 0;
foreach ($getProduct AS $arr)
{
echo "<div class='product_block'>";
echo "<input type='checkbox' id='remove_product' name='remove_product[".$n."]' value='".$arr["SKU"]."'>";
echo "<span>"."SKU: ".$arr["SKU"]."</span>";
echo "<span>"."Name: ".$arr["NAME"]."</span>";
echo "<span>"."Price: ".$arr["PRICE"]." €"."</span>";
$type = $arr["TYPE"];
switch($type)
{
case $type == "DVD":
echo "<span>".$arr["VALUE"]." mb</span>";
break;
case $type == "BOOK":
echo "<span>".$arr["VALUE"]." Kg</span>";
break;
case $type == "FURNITURE":
$dimension = explode(";", $arr["VALUE"]);
echo "<span>".$dimension[0]."cm x ".$dimension[1]."cm x ".$dimension[2]."cm </span>";
}
echo "</div>";
$n++;
}
echo "</div>";
echo "</form>";
我的功能:
public function removeProduct()
{
$db = $this->getDb();
$array = [$_POST['remove_product']];
$value = '';
foreach ($array AS $arr => $key){
$result = $key;
}
if($result > 0)
{
$value = implode(",",$result);
}
try {
$query = "DELETE FROM `products` WHERE SKU IN ({$value})";
$result = $db->exec($query);
return $result;
} catch (PDOException $e)
{
echo "Sorry something went wrong ".$e->getMessage();
}
}
更新:
所以我会在点击提交按钮后尝试刷新页面我调用js函数:
function reloader() {
if(!alert('The products will be deleted.')){window.location.reload();}
}
但它不起作用。我的产品已从数据库中删除。但它不会刷新页面以显示没有已删除产品的新列表。
【问题讨论】:
-
您对prepare语句的使用是危险的,不要使用这样的prepare查询。这不是您问题的答案,但很重要。
-
感谢您的帮助,我将了解如何更好地做到这一点。谢谢
-
您可以重新加载页面或制作一个javascript函数来删除表格中的元素
标签: javascript php html css mysql