IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Calcul dans une base de donnée


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Par défaut Calcul dans une base de donnée
    Bonjour à tous

    Je suis actuellement en train de faire un peu de domotique chez moi, et j'ai installé un Arduino sur mon compteur linky pour suivre ma consommation.
    Je récupère actuellement les données de ma consommation sur une BDD "EDF_Sav_5m" toute les 5 minutes:
    Exemple :

    Id BASE_sav_5m Datetime_sav_5m
    1 5410 2020-03-14 20:35:00
    2 5440 2020-03-14 20:40:00
    3 5490 2020-03-14 20:45:00
    4 5520 2020-03-14 20:50:00

    Je voudrais avec ces données tracer une courbe avec chart.js pour avoir ma conso toute les 5 minutes.
    Il va donc falloir que la donnée avec ID 3 de 2020-03-14 20:45:00 qui a une valeur de 5490 soit soustraite à 5440 la donnée juste avant pour obtenir 50 qui sera ma conso.
    Et tout ça pour chaque donnée avec la boucle while

    Je vous remercie par avance cordialement

    Tout ça dans :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sql = "SELECT *FROM EDF_Sav_5m              ''''''iCI^^Je suis perdu''''''''''''  ORDER BY Datetime_sav_5m DESC LIMIT 12";
        $result = mysqli_query($mysqli, $sql);
     
    	//loop through the returned data
    	while ($row = mysqli_fetch_array($result)) {
     
    		$data1 = $data1 . '"'. $row['VALEURCONSO'].'",';
    		$data2 = $data2 . '"'. $row['DATETIME`)'] .'",';

    J'ai essayé plein de trucs mais je n'y arrive pas
    Je sais pas si je peux le faire dans ma requête SQL ou avec des calculs avec des requêtes PHP

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon en deux minutes et à l'arrach, un truc comme ceci, afin d'éviter les sous requêtes en DB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php
     
    $sql = [
        0 => [5410, '2020 - 03 - 14 20:35:00'],
        1 => [5440, '2020 - 03 - 14 20:40:00'],
        2 => [5490, '2020 - 03 - 14 20:45:00'],
        3 => [5520, '2020 - 03 - 14 20:50:00']
    ];
     
    //on compte le nombre d'élement dans le tableau
    $count = count($sql);
     
    //on boucle
    for($i=0;$i<$count;$i++){
     
        //si on démare on fixe la consomation de départ ici 5410
        if($i==0){
            $compteur[] = $sql[$i][0];
            continue;
        }
        //sinon on fait la différence avec le précédent
        $compteur[] = $sql[$i][0] - $sql[$i - 1][0]; //on prend la valeur en cours, moins la valeur précédente
    }
     
    //on vérifie le tableau
    var_dump($compteur);

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    ou un truc dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $data = [
        [5410, '2020-03-14 20:35:00'],
        [5440, '2020-03-14 20:40:00'],
        [5490, '2020-03-14 20:45:00'],
        [5520, '2020-03-14 20:50:00']
    ];
    $conso = [];
    array_walk($data, function($v, $k) use ($data, &$conso) { $conso[--$k] = $k >= 0 ? $v[0]-$data[$k][0] : 0; });

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $sql = "SELECT BASE_sav_5m, Datetime_sav_5m
    	FROM EDF_Sav_5m
    	ORDER BY Datetime_sav_5m DESC LIMIT 12";
    $result = mysqli_query($mysqli, $sql);
     
    //loop through the returned data
    $total = 0;
    while ($row = mysqli_fetch_array($result)) 
    {
    	if( empty($total) )
    	{
    		$total = $row['BASE_sav_5m'];
    	}
    	$conso = $row['BASE_sav_5m'] - $total;
    	$total = $row['BASE_sav_5m'];
    	$date = $row['Datetime_sav_5m'];
    }

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2015
    Messages : 12
    Par défaut Merci à tous
    Merci à tous je vais essayer tous ca et je vous tien au courant
    Cordialement

Discussions similaires

  1. Des calculs dans une base de données
    Par elharrak dans le forum NetBeans
    Réponses: 1
    Dernier message: 19/06/2012, 16h30
  2. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  3. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27
  4. [SYBASE]Libérer espace libre dans une base de données ?
    Par le_parrain dans le forum Sybase
    Réponses: 3
    Dernier message: 14/05/2004, 09h36
  5. [Strategie][Java][XML] Import dans une base de données
    Par nad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/09/2002, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo