【问题标题】:Drop-down list that populates based on mySQL table names, with added buttons [duplicate]根据 mySQL 表名填充的下拉列表,添加了按钮 [重复]
【发布时间】: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>");

改为填充下拉列表?我用选项值代码尝试了各种方法,但还没有成功。

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    您可以使用“SHOW TABLES”sql 查询。它返回数据库中所有表的列表。您可以在选择框中显示此查询的结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-25
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多