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 :

script php mysql pour diference compteur elec [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut script php mysql pour diference compteur elec
    Bonjour à tous et toutes.

    J'ai un probleme avec un script php qui attaque une base sql.

    Je sauvegarde l'index de mes consos electrique (via domotique) toutes les 5 minutes dans une base sql

    Ca donne ca pour l'exemple

    date string
    2012-08-02 20:05:00 007934901

    String est en wattheure donc en divisant par mille on obtient les kilowateur

    J'utilise PCHART pouR creer des graphiques

    Seulement j'ai un souci avec ce script:

    Je voudrais pouvoir dans le script sur la journée en cours:

    -faire le graphique de l'augmentation des kilowateurs:
    A minuUIT:0KWH
    A 1 heure la valeur max de cette heure- valeur à minuit
    A 2 heure la valeur max de cette heure- valeur max de l'heure précédente

    Je suis nul de chez nul car je n'y arrive pas

    Voici un début de script qui ne fonctionne pas:


    $db = mysql_connect("localhost", "compte", "motdepasse");

    mysql_select_db("mabase",$db);



    $Requete = "SELECT max(STRING), ID_EVENT, DEVICE, STATUS, VALUE, DATE FROM `EVENTS` where DEVICE =']4' AND date >= current_date GROUP BY DATE_FORMAT( date , '%Y-%m-%d %H' )";



    $Result = mysql_query($Requete ,$db);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $VALUE[] = $row["STRING"]/1000;
    /* $DATE[] = $row["DATE"];*/
    $DATE[] = date("H", strtotime($row["DATE"]));


    (pour info $value et $date sont les données que j'utilise pour les graphes respectivement en ordonnée et en abcisse)

    Merci pour votre aide

  2. #2
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Tu a tenté de echo ta requête concaténé pour la tester directement dans la base de données pour être sur que la requête est bonne?
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Salut Ein-Leser et merci pour ta réponse.
    Je ne comprends pas ce que tu me demandes.

    Je tiens à préciser que je suis informaticien mais pas développeur alors mes connaissances en php, mysql sont très limitées....

  4. #4
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Quand tu a un soucis comme sa la premiere chose est de faire un
    Sa va t'afficher la requête que ton script utilise.
    Tu copie et colle directement dans l'admin de ton MySQL pour voir déjà si ton problème vient pas de la requête elle même.

    Essaye déjà ça et tu me diras.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Merci Ein-Leser.
    Ca ne fonctionne pas mais m'st avis qu'il faut que je transforme un peu le code pour le passer de php à mysql les parenthèses ....?

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 660
    Points : 331
    Points
    331
    Par défaut
    Postes ici ce que tu lances dans le requêteur sql

  7. #7
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Si la requête ne fonctionne pas tel qu'elle sort avec le echo() alors tu sais précisément ou est ton erreur et c'est déjà un grand pas en dev

    Quel est le message d'erreur que te sort MySQL?
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses, c'est sympa d'aider un newbie de 40 ans comme moi


    Voici le code:
    echo $Requete;
    $Requete = SELECT max(STRING), ID_EVENT, DEVICE, STATUS, VALUE, DATE FROM `EVENTS` where DEVICE =']4' AND date >= current_date GROUP BY DATE_FORMAT( date , '%Y-%m-%d %H' );



    $Result = mysql_query($Requete ,$db);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $VALUE[] = $row["STRING"]/1000;
    /* $DATE[] = $row["DATE"];*/
    $DATE[] = date("H", strtotime($row["DATE"]));
    }

    Et l'erreur:


    Error Code : 1064
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '}' at line 1
    (0 ms taken)



    En php associé aux graphes pchart, j'obtiens un graphique nul avec le script ci-dessus.

    Par contre, si je fais un "select * from" ... j'obtiens un graph avec des valeurs correct mais pas celles que je veux (le max par heure)

  9. #9
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    Il sort d'ou ton fermer la quote?

    $Requete = SELECT max(STRING), ID_EVENT, DEVICE, STATUS, VALUE, DATE FROM `EVENTS` where DEVICE =']4' AND date >= current_date GROUP BY DATE_FORMAT( date , '%Y-%m-%d %H' );
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    "]4" c'est le nom du device dans la base mysql.C'est mon soft de domotique qui l'a attribué

  11. #11
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    question bête ton champ date c'est un date ou datetime?
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    C'est un date format:2012-08-02 20:05:00

    Je le transforme apres en temps unix: strotime...

  13. #13
    Membre éclairé Avatar de EIN-LESER
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 703
    Points : 778
    Points
    778
    Par défaut
    pour moi sa:2012-08-02 20:05:00 c'est un datetime (date et heure)
    mais current_date ne renvoi que la date je crois (peux me tromper faut vérifier avec un echo $current_date)

    Si c'est bien sa il y a incohérence entre tes formats.
    Spécialiste des questions bêtes

    ”If you can't explain it simply, you don't understand it” (Ce que tu ne peux pas expliquer simplement, tu ne le comprends pas) Albert Einstein

    Si une reponse vous plait ou vous a aidé n'hesitez pas a voter pour

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Ca ne fonctionne pas non plus en enlevant: GROUP BY DATE_FORMAT( date , '%Y-%m-%d %H' )En même temps c'était une idée de script et je en pense pas qu'il vaille la peine de se focaliser dessus (enfin si je puis me permettre )

    Si vous pouviez me conseiller sur un script de votre composition pour faire cela:


    Je sauvegarde l'index de mes consos electrique (via domotique) toutes les 5 minutes dans une base sql

    Ca donne ca pour l'exemple

    date
    2012-08-02 20:05:00
    string
    007934901

    String est en wattheure donc en divisant par mille on obtient les kilowateur

    J'utilise PCHART pouR creer des graphiques

    Je voudrais pouvoir faire un script sur la journée en cours:

    -faire le graphique de l'augmentation des kilowateurs:
    A minuUIT:0KWH
    A 1 heure la valeur max de cette heure- valeur à minuit
    A 2 heure la valeur max de cette heure- valeur max de l'heure précédente

    Je suis nul de chez nul car je n'y arrive pas

    En conclusion prendre le max de chaque heure mais le déduire du max de l'heure précédente.
    Merci

  15. #15
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    essaye en donnant un alias a max(STRING)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $Requete = "SELECT max(STRING) AS MAXSTR, ID_EVENT, DEVICE, STATUS, VALUE, DATE FROM `EVENTS` where DEVICE =']4' AND date >= current_date GROUP BY DATE_FORMAT( date , '%Y-%m-%d %H' )";
    
    
    
    $Result = mysql_query($Requete ,$db);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $VALUE[] = $row["MAXSTR"]/1000;
    /* $DATE[] = $row["DATE"];*/
    $DATE[] = date("H", strtotime($row["DATE"]));
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Merci encore por vos réponse
    Patrickeffectivement ca résoud presque ma demande !!!


    En effet le max des données s'afiche parfaitement bien par heure !!!!


    Merci c'est cool!!



    Maintenant, comment puis-je n'afficher que la différence de valeur entre chaque heure?

    Merci c'est génial !!

  17. #17
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    en supposant que les records sont triés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $Valeur_old=0;
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    	$Valeur = $row["MAXSTR"]/1000;
    	$VALUE[] = $Valeur;
    	$DATE[] = date("H", strtotime($row["DATE"]));
    	if($Valeur>$Valeur_old)
    	{
    		$DIFF[]=$Valeur-$Valeur_old;
    		$Valeur_old=$Valeur;
    	}
    }
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Effectivement ca y est presque !!!!!!!!!!

    Il subsiste une difficulté, à priori
    C'est la valeur de départ qui n'est pas bonne, par contre les soustraction suivante sont bonnes.

    En effet, la première heure affiche les kwh actuels-$valeur_old= kwh actuel puisque $valeur_old au départ =0

    $valeur_old au départ devrait être la valeur min de l'heure entre 00h et 01h
    Donc j'ai pensé faire cela, creer un MINSTR.
    Malheureusement ca ne change Rien???


    $Requete = "SELECT max(STRING) AS MAXSTR, min(STRING) AS MINSTR, ID_EVENT, DEVICE, STATUS, VALUE, DATE FROM `EVENTS` where DEVICE =']4' AND date >= current_date GROUP BY DATE_FORMAT( date , '%Y-%m-%d %H' )";



    $Result = mysql_query($Requete ,$db);
    $Valeur_old=$row["MINSTR"]/1000;
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $Valeur = $row["MAXSTR"]/1000;
    $VALUE[] = $Valeur;
    $DATE[] = date("H", strtotime($row["DATE"]));
    if($Valeur>$Valeur_old)
    {
    $DIFF[] = $Valeur-$Valeur_old;
    $Valeur_old = $Valeur;
    }
    }

  19. #19
    Membre éprouvé Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Points : 1 103
    Points
    1 103
    Par défaut
    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
    ...ancienne requête sans le min...
    $Valeur_old=-9999;
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    	$Valeur = $row["MAXSTR"]/1000;
    	$VALUE[] = $Valeur;
    	$DATE[] = date("H", strtotime($row["DATE"]));
    	if($Valeur_old=-9999)
    	{
    		$Valeur_old=$Valeur;
    		$DIFF[]=$Valeur;
    	}else{
    		if($Valeur>$Valeur_old)
    		{
    			$DIFF[]=$Valeur-$Valeur_old;
    			$Valeur_old=$Valeur;
    		}
    	}
    }
    ce message vous a aidé ! Un petit click sur fait toujours plaisir

    "Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent." Bev Littlewood & Lorenzo Strigini

    "Le logiciel, c’est comme le sexe, c’est meilleur quand c’est libre/gratuit." Linus Torvalds

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 31
    Points : 5
    Points
    5
    Par défaut
    Merci Patrick!!

    Non ca ne fonctione pas....

    En fai c'est vraiment ce que j'expliquait dans mon post précédent:

    per exemple, a minuit le compteur elec affiche 7900kw
    A 1 HEURe de mat il affiche 7907KW
    A 2 heure 7912
    ..

    Pour la trache de 1 a2 heure le script marche nickel car il fAIT 7912-7907=5KW
    Par contre comme $Valeur_old ne correspond pas à la valeur à minuit
    pOUR LA TRACHE DE minuit a 1 heure il affiche 7907-0=7900
    Il faudrait comme $Valeur_old la valeur mini de la tranche...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. Recherche script PHP/MySQL pour collections/catalogues
    Par elraton dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 24/11/2010, 16h13
  3. [RegEx] Besoin de conseils pour script PHP/MySQL.
    Par ABandApart dans le forum Langage
    Réponses: 0
    Dernier message: 05/08/2010, 12h27
  4. aide pour script php/mysql
    Par jem27 dans le forum Débuter
    Réponses: 18
    Dernier message: 27/03/2006, 18h08
  5. [MySQL] [Script]Optimisation de scripts Php/MySQL (2)
    Par copy dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/08/2004, 08h33

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