我卡住了,想看看是否有人可以帮助我。 我在bootstrap v4中构建了一个表,显示了该产品的产品和一些数据。我目前有一个按钮(带铅笔的绿色),当在每一行中点击时,我会转到另一个页面,在那里我可以看到并更新该产品的所有信息,红色按钮也可以从数据库mysqli中删除产品。 我现在要做的是在侧面添加一个保存按钮,其他颜色为蓝色,这样我就可以快速改变价格和数量并保存像pic一样的行 screen shot 第一个保存工作和数据库更新,因为它,但其余不。保存按钮什么都不做,不管我似乎尝试什么,我都不能在哪里。
我的代码:
<?
if(isset($_POST['s1']))
{
$price = $_POST["price"];
$quantity = $_POST["quantity"];
$id = $_POST["id"];
$stmt = $con->prepare("UPDATE products set price=?, quantity=? WHERE id =
?");
$stmt->bind_param("ssi", $price, $quantity, $id);
$stmt->execute();
$stmt->close();
header('Location: products.php');
}
?>
//taken out header of the table
<tbody>
<tr>
<?php
$raw_results = mysqli_query($con, "SELECT * FROM products") or
die(mysqli_error($con));
while($results = mysqli_fetch_array($raw_results)){
?>
<form method=post action="">
<td><input class="form-control size-id" value="<? echo
$results['id']; ?>" name="id"></td>
<td><? echo $results['title']; ?></td>
<td><input class="form-control size-price" type="text" value="
<? echo $results['quantity']; ?>" name="quantity"></td>
<td><? echo $results['rrp']; ?></td>
<td><input class="form-control size-price" type="text" value="
<? echo $results['price']; ?>" name="price"></td>
<td>
<button type=submit name=s1 class="btn btn-outline-primary
btn-sm btn-block-xs-only"> <i class="fa fa-floppy-o" aria-hidden="true"></i>
</button>
<a href="edit_product.php?id=<?=$results['id']?>" class="btn
btn-outline-success btn-sm" role="button"><i class="fa fa-pencil" aria-
hidden="true"></i></a>
<a href="delete_product.php?id=<?=$results['id']?>" class="btn
btn-outline-danger btn-sm" role="button"><i class="fa fa-times" aria-
hidden="true"></i></a>
</td>
</tr>
<?
}
?>
</tbody>
答案 0 :(得分:0)
您将不会为此使用AJAX(异步JavaScript和XML)
https://www.w3schools.com/xml/ajax_intro.asp
这样您就可以更新数量和价格,而无需刷新整个页面。此外,不需要其中包含表格单元格的表单标记,该表格标记无效。
请仔细阅读本教程,您将了解该怎么做。如果没有,我甚至可以为您提供一个小代码示例。
以下脚本将提醒您发送到服务器的row_id和数量,而无需表单。
在我的例子中,我不是手工放置row_id,当然你的PHP脚本会处理这些事情
示例(假设index.html和echo.php在同一个文件夹中):
<强>的index.html 强>
<html>
<head>
<title>Example AJAX</title>
</head>
<body>
<table>
<tr>
<td>Row 1</td>
<td><input id="quantity_1" type="text" size="3" name="quantity_1" /></td>
<td><img src="save.png" onclick="save(1);" /></td>
</tr>
<tr>
<td>Row 2</td>
<td><input id="quantity_2" type="text" size="3" name="quantity_2" /></td>
<td><img src="save.png" onclick="save(2);" /></td>
</tr>
</table>
<script type="text/javascript">
function save(row_id) {
var quantity = document.getElementById('quantity_' + row_id).value;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(this.responseText);
}
};
xhttp.open("GET", "echo.php?row_id=" + row_id + "&quantity=" + quantity, true);
xhttp.send();
}
</script>
</body>
</html>
<强> echo.php 强>
<?php
echo 'row id: ' . intval($_GET['row_id']);
echo ' quantity: ' . intval($_GET['quantity']);
echo.php可能是你保存提交值的脚本;)但我把那部分留给你了。务必验证输入。切勿将$ _GET变量直接放在SQL查询中。