我正在使用以下HTML表单
<form method="POST">
<input type="number" placeholder="first" name="first">
<input type="number" placeholder="last" name="last">
<input type="submit">
</form>
与此PHP一起
$first = $_POST["first"];
$last = $_POST["last"];
$query = "SELECT * FROM posts ORDER BY TimeStamp DESC LIMIT $first, $last";
当通过表单发布值时,这会成功返回第一个和最后一个之间的条目。但是,当进行新查询时,任何修道院获取的结果都会消失。如何通过表单发布新请求时,如何将新结果添加到旧结果列表的BOTTOM中?
答案 0 :(得分:1)
让我向您展示一个您必须尝试的基本示例。
我们有一个HTML格式的页面,其中包含一个表单和一个div来存储结果。 在该文档中,我们还有一些Javascript代码来处理表单提交事件。 对于Ajax查询,我使用jQuery做了懒惰的方式。如果您无法在代码中使用该库,请告诉我。
<强> myPage.html下强>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<div>
<form id="myForm"><!--Note there's no methods here-->
<input id="inputFirst" type="number" placeholder="first" name="first">
<input id="inputLast" type="number" placeholder="last" name="last">
<input type="submit">
</form>
</div>
<div id="divResults">
<!--Results will be displayed here-->
</div>
</body>
</html>
同一文档( myPage.html )的Javascript代码。
<!--Loading jQuery for easy Ajax methods-->
<!--(You can download it to your server)-->
<script src="http://code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>
<script>
// These first sentences aren't even necessary in main browsers
var divResults = window.document.getElementById("divResults");
var myForm = window.document.getElementById("myForm");
var inputFirst = window.document.getElementById("inputFirst");
var inputLast = window.document.getElementById("inputLast");
// Listening for submit button
myForm.addEventListener('submit', sendMyAmazingAjax);
function sendMyAmazingAjax(e) {
// To avoid the form to be send by direct post method
e.preventDefault();
$.ajax({
url: 'myAmazingScript.php', // These are well self explained
type: 'post',
data: {
first: inputFirst.value, // Content of form inputs
last: inputLast.value
},
success: function (data) {
// data is anything you "echo" in the PHP document
// We add it to the current contents of divResults (if any)
divResults.innerHTML += data;
}
});
}
</script>
现在一些PHP在另一个文档中( myAmazingScript.php )。 (你可以在同一份文件中做到这一点,但它有点棘手,根本没有必要)。
我不知道您使用哪种方法对数据库进行查询。我为这个例子选择了准备好的标准,因为它安全,简单且仍然非常扩展。
<?php
// Creating connection
$mysqli = new mysqli('localhost', 'user', 'password', 'myAmazingDatabase');
// Checking connection
if (mysqli_connect_errno()) {
echo "Connect failed: %s\n", mysqli_connect_error();
exit();
}
$first = $_POST["first"];
$last = $_POST["last"];
$query = "SELECT * FROM posts ORDER BY TimeStamp DESC LIMIT ?, ?";
if ($stmt = $mysqli->prepare($query)) {
$stmt->bind_param('ii', $first, $last);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo 'First field: ' . $row['myAmazingFirstField'] . '<br>';
echo 'Second field: ' . $row['myAmazingSecondField'] . '<br>';
// Etc...
}
$stmt->free_result();
$stmt->close();
}
我没有尝试过,但我想我并没有忘记任何重要的事情。如果您有任何问题,请告诉我。
(当然,你必须改变很多名字和#34;)