Tri des Valeurs pour afficher le graphique

Ce forum est dédié aux discussions qui concernent les graphiques réalisés avec la librairie Highcharts, Une question, un bug ?

Modérateurs : jturlier, Météo Villarzel

aure013
Messages : 8
Enregistré le : 05 août 2014, 11:36

Tri des Valeurs pour afficher le graphique

Message par aure013 » 16 mars 2015, 13:27

Bonjour a tous,

malgré le tuto de Villarzel, j'ai du mal concernant le tri des variables. Mon contexte et que je souhaite afficher les valeurs d'une base de données dans laquelle je stocke les valeurs provenant d'une pompe à chaleur. La base de données se met à jour toutes les 5 minutes donc 288 par jour.

Je voudrait a chaque fois afficher les dernières 24 H par exemple.

MA table n'as pas de tstamp, simplement un ID


Image

Code : Tout sélectionner

// On détermine le stop et le start de façon à récupérer dans la prochaine requête 
que les données des dernières xx heures
$stop=$list[0];
$start=$stop-(288);
// Récupération des données sur les dernières 48 heures avec un tri ascendant sur le timestamp

$sql = "SELECT ID, T_ext, T_dep, T_ret,  T_cons 
FROM data where ID >= '$start' and ID <= '$stop' ORDER BY 1"; 

                  $query=mysql_query($sql); 
                  $i=0;
                  while ($list = mysql_fetch_assoc($query)) { 
                  if (date("I",time())==0) { 
                   $time[$i]=($list['ID']+3600)*1000;
                   } 
                   else {
                   $time[$i]=($list['ID']+7200)*1000;
                    } 
                

$T_ext[$i]=$list['T_ext']*1;
$T_dep[$i]=$list['T_dep']*1;
$T_ret[$i]=$list['T_ret']*1;
$T_cons[$i]=$list['T_cons']*1;
$i++;
}
Modifié en dernier par aure013 le 16 mars 2015, 14:36, modifié 1 fois.

aure013
Messages : 8
Enregistré le : 05 août 2014, 11:36

Re: Tri des Valeurs por afficher le graphique

Message par aure013 » 16 mars 2015, 14:29

Ayant la date je me dis que je pourrais également trier en fonciton de la date du jour mais la encore je ne vois pas comment faire :/

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Tri des Valeurs por afficher le graphique

Message par jturlier » 16 mars 2015, 14:35

Bonjour,
L'ID, tu ne peux rien en faire et donc l'ignorer, de même que le nombre de mises à jour quotidiennes !
Quel est le type de variable des champs date et heure de ta base ?
Comment sont-ils intégrés dans ta table ?

Même si ce ne sont pas des timestamps Unix, tu as toujours la possibilité de les manipuler, soit en PHP, soit directement dans ta requête pour les transformer en timestamps, car tu en as besoin pour travailler sur 24 h (Timestamp-84600).
si tu as des champs de type texte, tu peux faire qq chose comme ça
SELECT UNIX_TIMESTAMP(concat ( "'",date," ",heure,"'" ))
J'ai mis en rouge les simples quotes pour bien les distinqguer et ne pas les oublier.

Pour faire plus simple, tu peux créer une VIEW dont tu utilisera directement les champs dans ta requête, comme s'il s'agissait d'une table.
CREATE VIEW dataView as SELECT UNIX_TIMESTAMP(concat ( "'",date," ",heure,"'" )) as Tstamp,T_ext,T_dep,T_ret,T_ret2,T_cons,T_ecs,T_cecs,.... FROM data;

$sql = "SELECT Tstamp, T_ext, T_dep, T_ret, T_cons
FROM dataView where tstamp >= (UNIX_TIMESTAMP(NOW())-172800) ORDER BY 1";


Bonne chance

Jean
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

aure013
Messages : 8
Enregistré le : 05 août 2014, 11:36

Re: Tri des Valeurs pour afficher le graphique

Message par aure013 » 16 mars 2015, 14:45

Les champs date et heure proviennent d'une xml. Il sont a la base de cette façon :
<DATE>20150316144200</DATE>

Je ne fait que les couper pour les insérer dans la table. Date et Heure sont des Champ Date et Time dans la base de données.

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Tri des Valeurs pour afficher le graphique

Message par Météo Villarzel » 16 mars 2015, 17:07

Salut,
J'ai été confronté au même problème que toi et j'ai résolu (en Jean a résolu :roll: ) le problème en créant une vue.
vue.png
A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Tri des Valeurs pour afficher le graphique

Message par jturlier » 16 mars 2015, 17:23

Tu aurais mieux fait de les laisser sous forme d'un champ datetime, plutôt que de les scinder car cela compliquera significativement le traitement
la transformation en ts unix serait ceci : SELECT UNIX_TIMESTAMP(MaDate)
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

aure013
Messages : 8
Enregistré le : 05 août 2014, 11:36

Re: Tri des Valeurs pour afficher le graphique

Message par aure013 » 17 mars 2015, 09:26

Bonjour, a tous, et merci de vos réponses.

Par contre il faut faire cela sous phpmyadmin, ou dans le PHP qui ajoute les éléments dans mas base.

Je corrige déjà la date pour laisser datetime.

extrait du php :

Code : Tout sélectionner

// Extraction de la date et de lheure
$chainedate = $xml->SYSTEM->DATE;


// Recherches des variables analog
$T_ext = $xml->PCO->ANALOG->VARIABLE[0]->VALUE;
$T_dep = $xml->PCO->ANALOG->VARIABLE[1]->VALUE;
$T_ret = $xml->PCO->ANALOG->VARIABLE[2]->VALUE;
$T_ret2 = $xml->PCO->ANALOG->VARIABLE[3]->VALUE;
$T_cons = $xml->PCO->ANALOG->VARIABLE[4]->VALUE;
$T_ecs = $xml->PCO->ANALOG->VARIABLE[5]->VALUE;
$T_cecs = $xml->PCO->ANALOG->VARIABLE[6]->VALUE;
$Capt_HP = $xml->PCO->ANALOG->VARIABLE[7]->VALUE;
$Capt_HP = round((($Capt_HP*10-100)*345/8000), 1);
$Capt_BP = $xml->PCO->ANALOG->VARIABLE[8]->VALUE;
$Capt_BP = round((($Capt_BP*10-100)*173/8000), 1);
$Statut = $xml->PCO->ANALOG->VARIABLE[9]->VALUE;
$Statut = $Statut * 10;
$Defaut = $xml->PCO->ANALOG->VARIABLE[10]->VALUE;
$Defaut = $Defaut * 10;
$Blocage = $xml->PCO->ANALOG->VARIABLE[11]->VALUE;
$Blocage = $Blocage * 10;


// Recherches des variables digital
$CP1 = $xml->PCO->DIGITAL->VARIABLE[0]->VALUE;
$VENT = $xml->PCO->DIGITAL->VARIABLE[1]->VALUE;
$App_chau = $xml->PCO->DIGITAL->VARIABLE[2]->VALUE;
$Circ_M13 = $xml->PCO->DIGITAL->VARIABLE[3]->VALUE;
$Circ_M18 = $xml->PCO->DIGITAL->VARIABLE[4]->VALUE;
$Circ_M16 = $xml->PCO->DIGITAL->VARIABLE[5]->VALUE;
$App_ECS = $xml->PCO->DIGITAL->VARIABLE[6]->VALUE;


// Connexion au serveur
mysql_connect($serveur, $login,$pass) or die("erreur de connexion au serveur");
mysql_select_db($base) or die("Erreur de connexion a la base de donnees $base");

//On prépare la commande sql d'insertion
$sql = "INSERT INTO `domotique`.`dimplex` 
(`Datetime`, `T_ext`, `T_dep`, `T_ret`, `T_ret2`, `T_cons`, `T_ecs`, `T_cecs`, `Capt_HP`, `Capt_BP`, `Statut`, `Defaut`, `Blocage`, `CP1`, `VENT`, `App_chau`, `Circ_M13`, `Circ_M16`, `Circ_M18`, `APP_ECS`) 
VALUES('$chainedate', '$T_ext', '$T_dep', '$T_ret', '$T_ret2', '$T_cons', '$T_ecs', '$T_cecs', '$Capt_HP', '$Capt_BP', '$Statut', '$Defaut', '$Blocage', '$CP1', '$VENT', '$App_chau', '$Circ_M13', '$Circ_M16', '$Circ_M18', '$App_ECS')";

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Tri des Valeurs pour afficher le graphique

Message par jturlier » 17 mars 2015, 09:38

Bonjour,
n'oublie pas de mettre une clé primaire sur ta colonne datetime, ça t'évitera des ralentissements dans les requêtes, et n'utilise pas ID qui ne te sert à rien !

Jean
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Avatar du membre
Météo Villarzel
Administrateur du site
Messages : 524
Enregistré le : 06 févr. 2014, 09:48
Contact :

Re: Tri des Valeurs pour afficher le graphique

Message par Météo Villarzel » 17 mars 2015, 09:52

Code : Tout sélectionner

Par contre il faut faire cela sous phpmyadmin, ou dans le PHP qui ajoute les éléments dans mas base.
La vue tu la crées une fois dans PHPmyadmin

A+
Station Vantage Pro2+ avec station agricole - Weatherlink - GraphWeather 3.0.15b - Cumulus 1.9.4 - Windows 7/64
Graphique dynamique à partir d'une bd MySql - VP2SQL

Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Tri des Valeurs pour afficher le graphique

Message par jturlier » 17 mars 2015, 10:02

J'ai oublié un point : il faut éviter d'utiliser les mots réservés comme date, time, datetime comme nom de champ. Cela te force à toujours les mettre entre ` `.
En effet, l'utilisation des quotes n'est pas une obligation tant que tu n'as pas d'espaces dans tes noms de champs ou que tu n'utilises pas de mots réservés.
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Répondre