【发布时间】:2019-12-12 05:00:15
【问题描述】:
我想要一个基于表名(而不是行)填充的下拉列表,并带有一个用于检索该表的行内容并显示它的提交按钮。
有一个 Python 脚本在 Raspberry Pi 上运行,它会每隔一段时间读取温度传感器,根据设备的主机名(如果还没有的话)在 MySQL 模式中创建一个表,然后将温度存储在 tempreading以及datetime 行中的时间和日期。
连接到数据库的 PHP 脚本从由其主机名定义的表中选择 id, tempreading and datatime。
PHP 脚本:getTemp.php
<?php
$host="localhost";
$username="root";
$password="mysql";
$database="tempmonitor";
$device = gethostname();
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
echo "<br>";
$sql = "SELECT id, tempreading, datetime FROM ".$device."";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Temp: " . $row["tempreading"]. " " . $row["datetime"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
HTML
<html>
<head>
<script>
function showTemp(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("Hint").innerHTML = this.responseText;
}
};
xmlhttp.open("GET","getTemp.php?q="+str,true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<select name="locations">
<option value="0">Select a location:</option>
<option value="1">Table 1</option>
<option value="2">Table 2</option>
<option value="3">Table 3</option>
<option value="4">Table 4</option>
<br>
<br>
<input type="submit" value="View" onclick="showTemp()">
</select>
<br>
<br>
<div id="Hint"><b>Temperatures will be listed here...</b></div>
<br>
</body>
</html>
</body>
</html>
如果我“硬编码”它,我可以获得每行显示的行数据,所以我认为它大部分都在那里。这是下拉列表与数据库表和我坚持的按钮的链接。这是我对任何编码的第一次尝试,因此它主要是根据教程和在 w3schools 上阅读的大量时间构建的。
2019 年 4 月 8 日 好的,所以更新。我现在可以列出表格并将它们打印到屏幕上:
$showtables= "SHOW TABLES FROM ".$database."";
$result = $conn->query($showtables);
while($table = mysqli_fetch_array($result)) {
echo($table[0] . "<br>");
}
我将如何改变:
echo($table[0] . "<br>");
改为填充下拉列表?我用选项值代码尝试了各种方法,但还没有成功。
【问题讨论】: