我的第一个问题是,如果查询返回一个空集,基于此执行操作的最佳方法是什么?如只是打印一条消息这样吗?我现在设置的方式是,如果返回一个空集,则不显示任何内容。
我尝试了类似if (mysql_num_rows($sql)==0) { echo "None"; }
这样的方法,但这似乎没有用。我尝试将其放在foreach
之后和之前。
($own = $_POST['flight'];
,flight
来自下拉列表)
<p align="center">List of passengers on that flight: <br>
<?php
if ($_SERVER['REQUEST_METHOD'] == POST) {
$own = $_POST['flight'];
$sql = "SELECT firstName, lastName FROM passenger, flight, manifest WHERE flight.flightnum =
manifest.flightnum AND manifest.passnum = passenger.passnum AND flight.flightnum = '".$own."'";
foreach($connection->query($sql) as $row ) {
echo $row['firstName']. " ". $row['lastName'];
echo '<br>';
}
}
?>
</p>
接下来,我对如何制作一个动作触发按钮感到困惑。单击按钮后,我想显示此内容(下方)。
我试着制作一个像这样的按钮(工作正常),
<button onclick="myFunction()">Click me</button> <p id="demo"></p>
,但是我不知道如何为它编写脚本。<p align="center">List of all passengers: <br>
<?php
$sqlRequest = "SELECT firstName, lastName FROM passenger ORDER BY lastName";
$result = $connection->query($sqlRequest); //save result
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["firstName"]. " ". $row["lastName"]. "<br>";
}
}
?>
</p>
很抱歉将两个问题合而为一。似乎是一个好主意,而不是创建两个单独的线程。
最佳答案
回答第二个问题:
我将您的任务分为两部分。服务器端(getlist.php)和客户端(getlist.html)。我们将在客户端脚本中使用jquery。
getlist.html:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<p align="center">List of all passengers: <br>
<span id="span-list"></span>
</p>
<button id="btn-update">Update List</button>
<script>
$("#btn-update").click(function(){
$.ajax({
type: "GET",
url: "getlist.php",
success: function(msg){
$("#span-list").html(msg);
}
})
})
</script>
getlist.php:
<?php
$sqlRequest = "SELECT firstName, lastName FROM passenger ORDER BY lastName";
$result = $connection->query($sqlRequest); //save result
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["firstName"]. " ". $row["lastName"]. "<br>";
}
}
?>