自动刷新网页

时间:2018-11-04 14:55:40

标签: php mysql phpmyadmin raspberry-pi3

这是我的代码,用于检测婴儿的位置并将其插入到我的仅包含1行的数据库中。我使用limit删除旧行并保留最新行。

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import MySQLdb

db = MySQLdb.connect("localhost", "root", "raspberry", "cribdb")

GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN) #Right level-1
GPIO.setup(16, GPIO.IN) #Right level-2
GPIO.setup(18, GPIO.IN) #Right level-3

last_status = None

while True:

input12 = GPIO.input(12)

input16 = GPIO.input(16)

input18 = GPIO.input(18)

if (input12 == 1 and input16 == 0 and input18 == 0):
    status = "Lying down"
elif (input12 == 1 and input16 == 1 and input18 == 0):
    status = "Sitting"
elif (input12 == 1 and input16 == 1 and input18 == 1):
    status = "Standing"
elif (input12 == 0 and input16 == 1 and input18 == 1):
    status = "Trying to climb out"
elif (input12 == 0 and input16 == 0 and input18 == 1):
    status = "Almost out" 
else:
    status = "Out of the crib"

time.sleep(1)
if status != last_status:
    print(status)
    last_status = status
    curs = db.cursor()
    curs.execute(
    """INSERT INTO tbstatus values(NULL, %s)""", (status,)
)
db.commit()

number_of_rows= curs.execute("SELECT * FROM tbstatus")

if (number_of_rows >= 2:
    curs.execute("""DELETE FROM tbstatus order by id LIMIT 1""")
    db.commit()
    print("\n 1st row deleted ")

这是我在PHP中的代码,用于显示数据库中的数据。它只是获取数据库中状态的值并将其显示在网页上。

<?php require("connection.php"); ?>
<!DOCTYPE html>
 <html>
<head>
    <title> BABY MONITORING SYSTEM </title>
    <link rel="stylesheet" href="css/styles.css">
</head>
<body>
<div id="wrapper">

    <?php  

        $sql_cmd = "SELECT * FROM tbstatus ORDER BY id desc";

        $stmt = $con->prepare($sql_cmd);

        $stmt->execute();


        echo "<table>";
        echo "<tr>";
            echo "<td>STATUS OF THE BABY: </td>";
        echo "</tr>";


        while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {

            echo "<tr>";
                echo "<td>" . $result['status'] . "</td>";
            echo "</tr>";

        }

        echo "</table>";
    ?>

</div>

</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/main.js"></script>
</html>

一旦我的数据库从传感器获得新状态,网页将如何重新加载?

2 个答案:

答案 0 :(得分:1)

您将需要指示客户端(即浏览器)从服务器获取新数据。最简单的方法是告诉浏览器每隔一段时间刷新一次页面,例如使用html <head>中的以下代码:

<meta http-equiv="refresh" content="15">

content中的值是刷新之间的秒数,因此在这种情况下,页面将每15秒刷新一次。您当然可以根据需要进行调整。

如果您需要更高级的重新加载,则必须使用javascript重新加载页面或刷新页面的一部分,但是如果这是一个简单的爱好项目,那可能会过大了-刷新可能足够有效。

编辑:页面的head部分将如下所示:

<head>
    <title> BABY MONITORING SYSTEM </title>
    <link rel="stylesheet" href="css/styles.css">
    <meta http-equiv="refresh" content="15">
</head>

答案 1 :(得分:0)

我认为每15秒刷新一次页面不会带来良好的用户体验。为什么不使用针对此类工作量身定制的服务。 Firebase Realtime Database是一个非常好的选择,它允许您在应用程序中进行实时更新。而且它是由Google经营的,因此必须正确。

否则,您将必须实现自己的服务器端脚本才能为您进行更新。让我提醒您,一次又一次地刷新刷新页面,尤其是在移动网络上,对您和用户而言都可能昂贵