Получение csv-файла из mysql через PHP для dygraph.js - PullRequest
0 голосов
/ 11 января 2019

Моя цель - создать сайт, который отображает данные из моей базы данных mysql с помощью dygraph.js. Веб-сайт должен загружать данные каждый раз, когда он открывается, потому что моя база данных Mysql получает новые данные каждый час.

Моя проблема в том, что я не знаю, как сделать сайт PHP, который возвращает CSV-файл (не загружая его).

В основном мой вопрос: возможно ли соединить mysql и dygraph? если да, то как?

1 Ответ

0 голосов
/ 12 января 2019

Хорошо, у меня есть решение.

Для всех, у кого такая же проблема: Я нашел действительно хороший учебник от Glaskugelsehen: https://glaskugelsehen.wordpress.com/2014/05/24/tutorial-speicherung-von-arduino-messdaten-auf-webserver-und-deren-darstellung-teil-5/

Это немецкий, но вы можете использовать код, не понимая языка Поскольку учебник действительно старый, мне пришлось перевести его на mysqli и внести небольшие изменения. Тогда я закончил с этим php-кодом:

<html>
    <head>
        <br>
        <script type="text/javascript"src="libraries/dygraph.min.js"></script>
        <link rel="stylesheet" src="CSS/dygraph.css" />
    </head>
    <body style="color: rgb(0, 0, 0); background-color: rgb(77, 77, 77)" alink="#ee0000" link="#0000ee" vlink="#551a8b">
        <div style="text-align: center;"><span style="color: rgb(255, 255, 255);">Daten aus MySQL<br></span>
            <table style="margin:0px auto" border="0" width="500" align="center">
                <tr>
                    <td style="background-color: #FFFFFF">
                        <div id="graphdiv2"
                             style="width:500px; height:300px;"></div>
                        <script type="text/javascript">

                            g2 = new Dygraph(document.getElementById("graphdiv2"),
                                             <?php
                                             $mysql_host = "****";
                                             $mysql_db = "****";
                                             $mysql_user = "****";
                                             $mysql_pw = "****";
                                             $connection = new mysqli($mysql_host, $mysql_user, $mysql_pw, $mysql_db);   // Check connection
                                             if ($connection->connect_error) {
                                                 die("Connection failed: " . $connection->connect_error);
                                             } 
                                             $abfrage = "SELECT DATE_FORMAT(Zeit, '%Y/%m/%d %H:%i:%s') AS date, Temperatur, Luftfeuchtigkeit FROM messung";
                                             $ergebnis = mysqli_query($connection,$abfrage);

                                             echo "[";                                  // start of the 2 dimensional array
                                             while($row = mysqli_fetch_array($ergebnis))
                                             {
                                                 $utime = strtotime($row[datum]);
                                                 $diffutime = $utime - $lastutime;
                                                 if ($diffutime > 600) {
                                                     echo "["."new Date(\"".$row[date]."\")".",NaN,NaN],";
                                                 }
                                                 else {
                                                     echo "["."new Date(\"".$row[date]."\")".",".$row[Temperatur].",".$row[Luftfeuchtigkeit]."],";
                                                 }
                                                 $lastutime = strtotime($row[datum]);
                                             }
                                             echo "]";
                                             mysqli_close($connection);
                                             ?> ,
                                             { rightGap: 20,
                                             connectSeparatedPoints: true,
                                             labels: [ "Zeit", "Temperatur", "Luftfeuchtigkeit" ] }          // options
                                            );
                        </script>
                    </td>
                </tr>
            </table>
        </div>
    </body>
</html>

Если кто-то хочет использовать этот код, он должен заполнить свою информацию MySQL.

Надеюсь, это полезно

...