[PHP] Afficher vos graphiques avec HighStock

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

[PHP] Afficher vos graphiques avec HighStock

Message par papoo »

Après avoir stocké vos données dans une base MySql passons à leurs mise en forme et exploitation.
pour cela il vous faut décompresser le fichier zip sur votre serveur web .
mesgraphs.zip
(560.23 Kio) Téléchargé 835 fois
Le fichier info_db.php est à personnaliser avec les informations de votre base de données adresse:port, login et mot de passe notamment.
ensuite lancez le fichier feeds.php qui va vous permettre de lister les données contenues dans votre base de données et afficher celles que vous désirez via un formulaire tout simple dont vous pourrez modifier le style via le fichier form.css.
le contenu du fichier feeds.php

Code : Tout sélectionner

 <?php //feeds.php
include("info_db.php");

/* if (!isset($_GET['f1']) || !isset($_GET['v1']))
    die ("v or f is null");

$feeds = $_GET['feeds']; */

$db = mysql_connect($hostname, $db_login, $db_passw);
mysql_select_db($db_name, $db) or die('Erreur SQL !<br>'.mysql_error());
/* $sql = "INSERT INTO ".$db_table." (ffeed, fvalue) VALUES";
for($i=1;$i<=$feeds;$i++){
	$feed = $_GET['f'.$i];
	$value = $_GET['v'.$i];
	if ($i==$feeds){
		$sql.=" (\"".$feed."\", ".$value.")";
	} else {
		$sql.=" (\"".$feed."\", ".$value."),";
	}
} */
$sql = "SELECT DISTINCT ffeed FROM ".$db_table." ORDER BY ffeed ASC";
$req = mysql_query($sql, $db) or die('Erreur SQL !<br>'.mysql_error());

// on recupere le resultat sous forme d'un tableau
//$data = mysql_fetch_array($req);
?>
<!DOCTYPE HTML>
<html manifest="" lang="fr-FR">
<head>
   <meta charset="UTF-8">
<link rel="stylesheet" href="form.css"> 
<meta charset="UTF-8">
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>

    <title>Graphiques</title>  
 
 
<script>
 
    $(document).ready(function() {
        $("#checkall").click(function() {
         
            $("input:checkbox").each(function(){
                 
                var checked = $("#checkall").attr("checked");
                 
                if(checked == "checked") {
                     
                    $(this).attr('checked', true);
                } else {
                     
                    $(this).attr('checked', false);
                     
                }  
            });
        });
    });
</script>
</head>
<body>


 
    <form method="get" action="graph.php">
   <p>
       <H2>Sélectionner les graphiques à afficher</H2><br />    
    <div>
        <label for="titre">titre :</label>
        <input type="text" name="titre" id="titre" />
    </div>
    <div>
           <label for="suffix">Unité à afficher</label>
       <select name="suffix" id="suffix">
           <option value=""></option>
           <option value="°C">°C</option>
           <option value="Watt">Watt</option>
           <option value="kWh">kWh</option>
           <option value="%">%</option>
     </div>            
</select><br /> </br>
     
<?php
    // on scanne tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
	// on affiche les résultats
	//echo $data['ffeed']."<br>";

?>       <input type="checkbox" name="feeds[<?php echo $data['ffeed']?>]" id="<?php echo $data['ffeed']?>" /> <label for="<?php echo $data['ffeed']?>"><?php echo $data['ffeed']?></label><br />


<?php   

}


// on libère l'espace mémoire alloué pour cette interrogation de la base
/* mysql_free_result ($req);
mysql_close (); */

?>
<br/>
<input type="checkbox"  id="checkall"/> <label>tout sélectionner</label>
<br/>
</p>
<p><input type="submit" value="OK"></p>
</form></body>

</html>
vous devriez obtenir un résultat similaire à celui la pour le formulaire
pour le CSS du formulaire je ne me suis pas foulé, n'hésitez pas à me proposer votre travail si vous l'améliorez.
2017-12-31 15_29_48-Graphiques - Firefox Developer Edition.png
2017-12-31 15_29_48-Graphiques - Firefox Developer Edition.png (25.43 Kio) Consulté 19452 fois
validez le formulaire et vous obtiendrez l'affichage de vos données similaires à mes températures départ et retour chauffage
Graph.png
Graph.png (134.74 Kio) Consulté 19632 fois
Dernière modification par papoo le 21 avr. 2019, 11:51, modifié 1 fois.
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Afficher vos graphiques avec HighStock

Message par papoo »

mise à jour du fichier feeds.php comprenant maintenant une case à cocher "tout sélectionner"
https://github.com/papo-o/domoticz_scri ... /Mesgraphs
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
konix
Messages : 24
Inscription : 17 nov. 2015, 09:00

Re: Afficher vos graphiques avec HighStock

Message par konix »

Merci bcp pour ton boulot.
Je l'utilise et cela fonctionne vraiment très bien !
:)
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Afficher vos graphiques avec HighStock

Message par papoo »

merci de ton retour :D
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
thuglife
Messages : 35
Inscription : 28 janv. 2017, 23:08

Re: Afficher vos graphiques avec HighStock

Message par thuglife »

Deux évolutions :
Pour les kwh, possible d'afficher en barregraph ?
Avoir une deuxième échelle à droite pour afficher par exemple la Condo en barregraph et la température extérieure en courbe ?
:D
konix
Messages : 24
Inscription : 17 nov. 2015, 09:00

Re: Afficher vos graphiques avec HighStock

Message par konix »

Bonjour à tous,

Depuis la mise à Jour du Service Web du synology. Je n'ai plus accès à ma page Web et ma base de donnée n'est plus alimenté.
Je n'ai pas d'erreur du coté de Domoticz.

Une idée ?

Bonne journée.
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Afficher vos graphiques avec HighStock

Message par papoo »

Tu as mis php 5? Ou tu est encore en php 4?
domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
konix
Messages : 24
Inscription : 17 nov. 2015, 09:00

Re: Afficher vos graphiques avec HighStock

Message par konix »

papoo a écrit :Tu as mis php 5? Ou tu est encore en php 4?
Je suis en php 5.6.
Est ce que tu pourrai me donner la configuration de ton WebStation ?

J'ai tout réinstaller :

- PhpMyadmin
- Webstation
- Apache 2.2

Voici les erreur de la page Feeds.php
Fatal error: Call to undefined function mysql_connect() in /volume1/web/domoticz/feeds.php on line 6
Et voila ce que j'ai à la ligne 6
"$db = mysql_connect($hostname, $db_login, $db_passw);"

Maintenant je n'ai plus d'erreur 500 mais une page blanche et tjs pas de mise à jour de ma base SQL .....
J'ai un doute avec l'ajout de la configuration du Virtuel Host dans la dernière mise à jour de WebSation.
01.PNG
01.PNG (22.83 Kio) Consulté 18989 fois
01bis.PNG
01bis.PNG (23.67 Kio) Consulté 18989 fois
02.PNG
02.PNG (16.45 Kio) Consulté 18989 fois
mike913
Messages : 159
Inscription : 18 oct. 2014, 10:22
Localisation : Morsang / Orge - Essonne
Contact :

Re: Afficher vos graphiques avec HighStock

Message par mike913 »

Bonjour

Est-ce que tu as installé MariaDB 5 ou MariaDB 10 ?
Car mariaDB 10 fonctionne sur le port 3307.
DS718+ 2 x 3To(SHR) - Firmware: DSM 7.0.1-42218
DS712+ 2 x 4To (SHR) - Firmware: DSM 6.2.4-25556
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox Delta
https://meteo.folcke.net
https://wiki.folcke.net
konix
Messages : 24
Inscription : 17 nov. 2015, 09:00

Re: Afficher vos graphiques avec HighStock

Message par konix »

mike913 a écrit :Bonjour

Est-ce que tu as installé MariaDB 5 ou MariaDB 10 ?
Car mariaDB 10 fonctionne sur le port 3307.
Oui j'ai mariaDB 10 avec le port 3307 configuré.

Code : Tout sélectionner

<?php
$hostname = "192.168.0.26:3307";
$db_name  = "graph_domoticz";
$db_table = "graph_tbl_domoticz";
$db_login = "xxxxx";
$db_passw = "xxxxxxxxxxx"
?>
Répondre