[RESOLU] Différence à intervalle régulier

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Différence à intervalle régulier

Re: Différence à intervalle régulier

par Sebg76 » 27 nov. 2013, 18:56

J'ai essayé ce code, j'ai un doute sur les 2 requêtes, et le timestamp hier.
<?php
$host="localhost";
$username="root"; 
$password=""; 
$db_name="ecodevices";
$table = "infoeco";
$con=mysql_connect("$host", "$username", "$password")or die("Connexion sql refusé"); 
mysql_select_db("$db_name")or die("Connexion sql refusé");
$startTime = mktime(0, 0, 0, date('m'), date('d')-1, date('Y'));
$endTime = mktime(23, 59, 59, date('m'), date('d')-1, date('Y'));
$sql = "select timestp
	from $table
	WHERE timestp >= $startime
    AND timestp <= $endTime 
    ORDER BY timestp";
$result = mysql_query($sql);
$sql = "SELECT rec_date, DATE_FORMAT(rec_date, $dateformatsql)as periode,
    ((MAX(T1_HCHP) - MIN(T1_HCHP)) / 1000) AS hp, 
    ((MAX(T1_HCHC) - MIN(T1_HCHC)) / 1000) AS hc  
    FROM $table
    WHERE timestp > $startime
    GROUP BY periode
    ORDER BY rec_date" ;
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
extract ($row);
$data[] = array($timestp, $hp, $hc);
}
echo json_encode($data);
?>
Le resultat donne null

Re: Différence à intervalle régulier

par moogli » 24 nov. 2013, 15:46

Salut,

Il faut découper le problème :
- la conso sur une journée : différence entre l'index le plus tard de la jour et l'index le plus tôt (à la limite entre le plus grand et le plus petit).
- sélectionnée les jours d'une période : select distinct lechampdate from latable where lechampdate between le début and la fin
- associer les deux pour chaque jour différent sélectionner les valeurs min et Max et les soustraires.

Le plus simple je pense est de le faire dans une udf sql (fonction côté serveur de données).
Tu pourras même directement retourner du Json si tu le souhaite.

Sinon un grosse requête avec des subselect doit le faire.

@+

Différence à intervalle régulier

par Sebg76 » 24 nov. 2013, 12:00

Bonjour,
J'enregistre toutes les 5min la valeur d'un compteur edf dans une base sql, j'ai trois colonnes :
une colonne timestamp (int)
une colonne hp (dec)
une colonne hc (dec)
Je voudrais réaliser la consommation sur 24h du jour et des jours précédent ensuite l'afficher sous forme de tableau pour l'utiliser avec highstocks.
Merci de votre aide.