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. #21
    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
    change
    en
    désolé suis un peu fatiguè, vais me coucher.
    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

  2. #22
    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 Patrickmais non ca ne fonctionne pas...

    En meme temps je ne vois comment ca pourrait marcher????

    Ne crois tu pas que mon idée du min(string) serait une bonne idée?


    A quoi correspond -9999?

    Merci

  3. #23
    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
    après ta boucle while
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    }
    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
    28
    29
    30
    31
    32
     
    /*pour simuler les data construites avec le while
    $VALUE[]=7934901;$DATE[]='0';
    $VALUE[]=7934921;$DATE[]='1';
    $VALUE[]=7934931;$DATE[]='2';
    $VALUE[]=7934951;$DATE[]='3';
    $VALUE[]=7934971;$DATE[]='4';
    $VALUE[]=7934991;$DATE[]='5';
    $VALUE[]=7934999;$DATE[]='6';
    fin simuler les data construites avec le while*/
     
    $Valeur_old=-9999;
    for($x=0; $x<count($VALUE) ; $x++)
    {
        $Valeur = $VALUE[$x];
        if($Valeur_old==-9999)
        {
            $Valeur_old=$Valeur;
            $DIFF[$x]=0;
        }else{
            if($Valeur>$Valeur_old)
            {
                $DIFF[$x]=($Valeur-$Valeur_old);
                $Valeur_old=$Valeur;
            }
        }        
    }
    /*affichage des resutats*/
    for($x=0; $x<count($VALUE) ; $x++)
    {
        echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."<br>";
    }
    resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DATE[0]=0 VALUE[0]=7934901 DIFF[0]=0
    DATE[1]=1 VALUE[1]=7934921 DIFF[1]=20
    DATE[2]=2 VALUE[2]=7934931 DIFF[2]=10
    DATE[3]=3 VALUE[3]=7934951 DIFF[3]=20
    DATE[4]=4 VALUE[4]=7934971 DIFF[4]=20
    DATE[5]=5 VALUE[5]=7934991 DIFF[5]=20
    DATE[6]=6 VALUE[6]=7934999 DIFF[6]=8
    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

  4. #24
    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
    Malheureusement pas mieux!

    En manuel ca le code ci dessous fonctionne nickel:
    La ligne:$Valeur_old = 7982;qui est la valeur de l'index à Minuit.

    Il faut donc que je puisse extraire la valeur la plus petite min() de la première heure et l affecter à $Valeur_old

    Ce qui est étrange c'est que le min(string) ne donne rien...



    $Requete = "SELECT ROUND(max(STRING)) AS MAXSTR, ROUND(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 = 7982;
    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;
    }
    }

  5. #25
    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
    le code que je t'ai donné
    tu fait ta boucle (en elevant les test ...) pour remplir $VALUE et $DATE
    ensuite tu calcul la différence
    donc
    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
    28
    29
    30
    31
     
    /*$Valeur_old = 7982;*/
    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"]));
    }
     
    $Valeur_old=-9999;
    for($x=0; $x<count($VALUE) ; $x++)
    {
        $Valeur = $VALUE[$x];
        if($Valeur_old==-9999)
        {
            $Valeur_old=$Valeur;
            $DIFF[$x]=0;
        }else{
            if($Valeur>$Valeur_old)
            {
                $DIFF[$x]=($Valeur-$Valeur_old);
                $Valeur_old=$Valeur;
            }
        }        
    }
    /*affichage des resutats*/
    for($x=0; $x<count($VALUE) ; $x++)
    {
        echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."<br>";
    }
    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

  6. #26
    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
    En effet c'est ok, tu es trop fort patrick!
    Je commence en meme temps à comprendre le fonctionnement, c'est tres formateur pour moi !!!


    Il reste un probleme
    La valeur de minuit à 1h est "0", or ce n'est pas vrai...

    La vrai valeur à minuit est :7982,736

    LE probleme reste identique, récupérer la plus petite valeur entre mINUIT ET 1 Heure...

    DATE[0]=00 VALUE[0]=7983.091 DIFF[0]=0
    DATE[1]=01 VALUE[1]=7983.447 DIFF[1]=0.356
    DATE[2]=02 VALUE[2]=7983.722 DIFF[2]=0.275
    DATE[3]=03 VALUE[3]=7983.993 DIFF[3]=0.271000000001
    DATE[4]=04 VALUE[4]=7984.263 DIFF[4]=0.27
    DATE[5]=05 VALUE[5]=7984.529 DIFF[5]=0.266000000001
    DATE[6]=06 VALUE[6]=7984.757 DIFF[6]=0.227999999999
    DATE[7]=07 VALUE[7]=7984.946 DIFF[7]=0.189
    DATE[8]=08 VALUE[8]=7985.212 DIFF[8]=0.266000000001
    DATE[9]=09 VALUE[9]=7985.574 DIFF[9]=0.361999999999
    DATE[10]=10 VALUE[10]=7987.604 DIFF[10]=2.03
    DATE[11]=11 VALUE[11]=7989.293 DIFF[11]=1.689
    DATE[12]=12 VALUE[12]=7991.108 DIFF[12]=1.815
    DATE[13]=13 VALUE[13]=7991.637 DIFF[13]=0.529
    DATE[14]=14 VALUE[14]=7991.744 DIFF[14]=0.107

  7. #27
    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
    comme toujours en informatique ce n'est qu'une question de 0 ou de 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /*affichage des resutats*/ 
    for($x=1; $x<count($VALUE) ; $x++) 
    {     
          echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."<br>"; 
    }
    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

  8. #28
    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
    En effet c'est ok, tu es trop fort patrick!
    Je commence en meme temps à comprendre le fonctionnement, c'est tres formateur pour moi !!!


    Il reste un probleme
    La valeur de minuit à 1h est "0", or ce n'est pas vrai...

    La vrai valeur à minuit est :7982,736

    LE probleme reste identique, récupérer la plus petite valeur entre mINUIT ET 1 Heure...

    DATE[0]=00 VALUE[0]=7983.091 DIFF[0]=0
    DATE[1]=01 VALUE[1]=7983.447 DIFF[1]=0.356
    DATE[2]=02 VALUE[2]=7983.722 DIFF[2]=0.275
    DATE[3]=03 VALUE[3]=7983.993 DIFF[3]=0.271000000001
    DATE[4]=04 VALUE[4]=7984.263 DIFF[4]=0.27
    DATE[5]=05 VALUE[5]=7984.529 DIFF[5]=0.266000000001
    DATE[6]=06 VALUE[6]=7984.757 DIFF[6]=0.227999999999
    DATE[7]=07 VALUE[7]=7984.946 DIFF[7]=0.189
    DATE[8]=08 VALUE[8]=7985.212 DIFF[8]=0.266000000001
    DATE[9]=09 VALUE[9]=7985.574 DIFF[9]=0.361999999999
    DATE[10]=10 VALUE[10]=7987.604 DIFF[10]=2.03
    DATE[11]=11 VALUE[11]=7989.293 DIFF[11]=1.689
    DATE[12]=12 VALUE[12]=7991.108 DIFF[12]=1.815
    DATE[13]=13 VALUE[13]=7991.637 DIFF[13]=0.529
    DATE[14]=14 VALUE[14]=7991.744 DIFF[14]=0.107

  9. #29
    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
    ok je commence a comprendre réellement ce que tu veux

    la premiere différence doit etre entre 0:00 et 1:59h
    ensuite 1:59h-2:59h
    etc...

    tu remets ton min(STRING) AS MINSTR dans la requête


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
        $ValeurMax = $row["MAXSTR"]/1000;
        $ValeurMin = $row["MINSTR"]/1000;
        $DateVal=date("H", strtotime($row["DATE"]));
        $DATE[] = $DateVal;
        if($DateVal!="00") 
        {
            $VALUE[] = $ValeurMax;
        }else{
            $VALUE[] = $ValeurMin;
        }
    }
     
    $Valeur_old=-9999;
    for($x=0; $x<count($VALUE) ; $x++)
    {
        $Valeur = $VALUE[$x];
        if($Valeur_old==-9999)
        {
            $Valeur_old=$Valeur;
            $DIFF[$x]=0;
        }else{
            if($Valeur>$Valeur_old)
            {
                $DIFF[$x]=($Valeur-$Valeur_old);
                $Valeur_old=$Valeur;
            }
        }        
    }
    /*affichage des resutats*/
    for($x=1; $x<count($VALUE) ; $x++)
    {
        echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."<br>";
    }
    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

  10. #30
    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 Philippe et effectivement je me suis mal exprimé!

    J'ai testé ton code ci dessous mais etrangement (voir résultat de l'écho en bas), MINSTR ne renvoi 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);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $ValeurMax = $row["MAXSTR"]/1000;
    $ValeurMin = $row["MINSTR"]/1000;
    $DateVal=date("H", strtotime($row["DATE"]));
    $DATE[] = $DateVal;
    if($DateVal!="00")
    {
    $VALUE[] = $ValeurMax;
    }else{
    $VALUE[] = $ValeurMin;
    }
    }

    $Valeur_old=-9999;
    for($x=0; $x<count($VALUE) ; $x++)
    {
    $Valeur = $VALUE[$x];
    if($Valeur_old==-9999)
    {
    $Valeur_old=$Valeur;
    $DIFF[$x]=0;
    }else{
    if($Valeur>$Valeur_old)
    {
    $DIFF[$x]=($Valeur-$Valeur_old);
    $Valeur_old=$Valeur;
    }
    }
    }
    /*affichage des resutats*/
    for($x=1; $x<count($VALUE) ; $x++)
    {
    echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."VALUE2[".$x."]=".$MINSTR[$x]."<br>";
    }



    Résultat de l'écho:

    DATE[1]=01 VALUE[1]=7983.447 DIFF[1]=0.711VALUE2[1]=
    DATE[2]=02 VALUE[2]=7983.722 DIFF[2]=0.275VALUE2[2]=
    DATE[3]=03 VALUE[3]=7983.993 DIFF[3]=0.271000000001VALUE2[3]=
    DATE[4]=04 VALUE[4]=7984.263 DIFF[4]=0.27VALUE2[4]=
    DATE[5]=05 VALUE[5]=7984.529 DIFF[5]=0.266000000001VALUE2[5]=
    DATE[6]=06 VALUE[6]=7984.757 DIFF[6]=0.227999999999VALUE2[6]=
    DATE[7]=07 VALUE[7]=7984.946 DIFF[7]=0.189VALUE2[7]=
    DATE[8]=08 VALUE[8]=7985.212 DIFF[8]=0.266000000001VALUE2[8]=
    DATE[9]=09 VALUE[9]=7985.574 DIFF[9]=0.361999999999VALUE2[9]=
    DATE[10]=10 VALUE[10]=7987.604 DIFF[10]=2.03VALUE2[10]=
    DATE[11]=11 VALUE[11]=7989.293 DIFF[11]=1.689VALUE2[11]=
    DATE[12]=12 VALUE[12]=7991.108 DIFF[12]=1.815VALUE2[12]=
    DATE[13]=13 VALUE[13]=7991.637 DIFF[13]=0.529VALUE2[13]=
    DATE[14]=14 VALUE[14]=7992.031 DIFF[14]=0.394VALUE2[14]=
    DATE[15]=15 VALUE[15]=7992.522 DIFF[15]=0.491VALUE2[15]=
    DATE[16]=16 VALUE[16]=7992.862 DIFF[16]=0.34VALUE2[16]=
    DATE[17]=17 VALUE[17]=7993.154 DIFF[17]=0.292VALUE2[17]=
    DATE[18]=18 VALUE[18]=7993.448 DIFF[18]=0.294VALUE2[18]=
    DATE[19]=19 VALUE[19]=7995.164 DIFF[19]=1.716VALUE2[19]=
    DATE[20]=20 VALUE[20]=7995.642 DIFF[20]=0.478VALUE2[20]=
    DATE[21]=21 VALUE[21]=7995.949 DIFF[21]=0.307VALUE2[21]=

  11. #31
    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
    $MINSTR[$x]

    si tu veux quelque chose dans MINSTR[$x] il faut l'y mettre

    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
    while($row = mysql_fetch_array($Result)) /*tant qu'il y a des informations(des lignes) dans le resultat de la requete on le prend et lon range les informations dans un tableau $row*/
    /* Get the data from the query result */
    {
        $ValeurMax = $row["MAXSTR"]/1000; /*on prend la valeur de la case MAXSTR du tableau que l'on met dans un variable $ValeurMax */
        $ValeurMin = $row["MINSTR"]/1000; /*idem pour la case MAXSTR */
        $DateVal=date("H", strtotime($row["DATE"])); /*idem pour la case DATE */
        $DATE[] = $DateVal;    /*on ajoute une case a un tableau $DATE et on met $DateVal */
        $MINSTR[] = $ValeurMin   /*on ajoute une case a un tableau $MINSTR et on met $ValeurMin */
        if($DateVal!="00") /* si la "date" est différente de "00"
        {
            /*alors on ajoute une case au tableau $VALUE et on met la valeur maxi*/
            $VALUE[] = $ValeurMax;
        }else{
            /*sinon on ajoute une case au tableau $VALUE et on met la valeur mini*/
            $VALUE[] = $ValeurMin;
        }/* on recommence avec la ligne suivante du resultat*/
    }
    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

  12. #32
    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
    J'ai honte tu as vu mon niveau?

    C'est toujours pas bon mais ce n'est pas loin car regarde le code que j'utilise et le résultat de l'écho:
    La valeur mini de l'écho est la bonne à Minuit et 1 seconde, parfait par contre seulement pour cette heure la la max n'est pas la bonne.
    Elle est dans l'echo la meme que la valeur mini alors qu'elle devrait être:7983, 096

    ?





    $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);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $ValeurMax = $row["MAXSTR"]/1000;
    $ValeurMin = $row["MINSTR"]/1000;
    $DateVal=date("H", strtotime($row["DATE"]));
    $DATE[] = $DateVal;
    $MINSTR[] = $ValeurMin;
    if($DateVal!="00")
    {
    $VALUE[] = $ValeurMax;
    }else{
    $VALUE[] = $ValeurMin;
    }
    }

    $Valeur_old=-9999;
    for($x=0; $x<count($VALUE) ; $x++)
    {
    $Valeur = $VALUE[$x];
    if($Valeur_old==-9999)
    {
    $Valeur_old=$Valeur;
    $DIFF[$x]=0;
    }else{
    if($Valeur>$Valeur_old)
    {
    $DIFF[$x]=($Valeur-$Valeur_old);
    $Valeur_old=$Valeur;
    }
    }
    }
    /*affichage des resutats*/
    for($x=0; $x<count($VALUE) ; $x++)
    {
    echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."VALUE2[".$x."]=".$MINSTR[$x]."<br>";
    }



    Résultat écho:

    DATE[0]=00 VALUE[0]=7982.736 DIFF[0]=0VALUE2[0]=7982.736
    DATE[1]=01 VALUE[1]=7983.447 DIFF[1]=0.711VALUE2[1]=7983.122
    DATE[2]=02 VALUE[2]=7983.722 DIFF[2]=0.275VALUE2[2]=7983.465
    DATE[3]=03 VALUE[3]=7983.993 DIFF[3]=0.271000000001VALUE2[3]=7983.743
    DATE[4]=04 VALUE[4]=7984.263 DIFF[4]=0.27VALUE2[4]=7984.014
    DATE[5]=05 VALUE[5]=7984.529 DIFF[5]=0.266000000001VALUE2[5]=7984.284
    DATE[6]=06 VALUE[6]=7984.757 DIFF[6]=0.227999999999VALUE2[6]=7984.548
    DATE[7]=07 VALUE[7]=7984.946 DIFF[7]=0.189VALUE2[7]=7984.776
    DATE[8]=08 VALUE[8]=7985.212 DIFF[8]=0.266000000001VALUE2[8]=7984.961
    DATE[9]=09 VALUE[9]=7985.574 DIFF[9]=0.361999999999VALUE2[9]=7985.233
    DATE[10]=10 VALUE[10]=7987.604 DIFF[10]=2.03VALUE2[10]=7985.61
    DATE[11]=11 VALUE[11]=7989.293 DIFF[11]=1.689VALUE2[11]=7987.835
    DATE[12]=12 VALUE[12]=7991.108 DIFF[12]=1.815VALUE2[12]=7989.361
    DATE[13]=13 VALUE[13]=7991.637 DIFF[13]=0.529VALUE2[13]=7991.22
    DATE[14]=14 VALUE[14]=7992.031 DIFF[14]=0.394VALUE2[14]=7991.668
    DATE[15]=15 VALUE[15]=7992.522 DIFF[15]=0.491VALUE2[15]=7992.073
    DATE[16]=16 VALUE[16]=7992.862 DIFF[16]=0.34VALUE2[16]=7992.567
    DATE[17]=17 VALUE[17]=7993.154 DIFF[17]=0.292VALUE2[17]=7992.891
    DATE[18]=18 VALUE[18]=7993.448 DIFF[18]=0.294VALUE2[18]=7993.181
    DATE[19]=19 VALUE[19]=7995.164 DIFF[19]=1.716VALUE2[19]=7993.472
    DATE[20]=20 VALUE[20]=7995.642 DIFF[20]=0.478VALUE2[20]=7995.187
    DATE[21]=21 VALUE[21]=7996.029 DIFF[21]=0.387000000001VALUE2[21]=7995.671
    DATE[22]=22 VALUE[22]=7996.177 DIFF[22]=0.147999999999VALUE2[22]=7996.071

  13. #33
    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
    j'ai expliqué le code, lol
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if($DateVal!="00") /* si la "date" est différente de "00"
        {
            /*alors on ajoute une case au tableau $VALUE et on met la valeur maxi*/
            $VALUE[] = $ValeurMax;
        }else{
            /*sinon on ajoute une case au tableau $VALUE et on met la valeur mini*/
            $VALUE[] = $ValeurMin;
        }/* on recommence avec la ligne suivante du resultat*/
    $VALUE[..] contient :
    $ValeurMin quand l'heure est '00'
    $ValeurMax quand l'heure n'est pas '00'

    $VALUE[..] contient donc toujours $ValeurMax sauf pour l'heure '00' ou la elle vaut $ValeurMin
    donc l'affichage est correct
    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

  14. #34
    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
    Citation Envoyé par patrickbaras Voir le message
    ok je commence a comprendre réellement ce que tu veux

    la premiere différence doit etre entre 0:00 et 1:59h
    ensuite 1:59h-2:59h
    etc...
    }[/code]
    C'est presque ca, la premiere difference se fera entre le premiere enregistrement 00:00:01 et le dernier à 00:59:00


    Dans le résultat de l'echo Ci dessous, DATE[0] correspond à cette période

    DATE[0]=00 VALUE[0]=7982.736 DIFF[0]=0VALUE2[0]=7982.736

    Or Effectivement les 2 valeurs correspondent à la valeur Min alors qu'elles devraient suiVre le meme schémas que pour les autres heures.
    Seule la première valeur min doit être particulière car correspondat à Minstr

    Il devrait donC il y avoir une différence por cette premiere valeur qui devrait s traduire lors de l'echo par:

    DATE[0]=00 VALUE[0]=7983,096 DIFF[0]=0,36 VALUE2[0]=7982.736

    J'essaye je te promets!!
    J'ai tenté plein de modif depuis 1 heure mais je peine vraiment...

  15. #35
    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
    Du coup ce script allégé fait presque l'affaire:
    Mais je narrive pas et pourtant ca doit etre simple, à donner la valeur min
    en remplacement $Valeur_old=-9999;
    Pourtant la valeur Min existe car elle est bonne dans le résultat de la igne 0 DATE[0]=00 VALUE[0]=7983.091 DIFF[0]=17982.091VALUE2[0]=7982.736

    C'est pas loin du tout ..


    $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);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $ValeurMax = $row["MAXSTR"]/1000;
    $ValeurMin = $row["MINSTR"]/1000;
    $DateVal=date("H", strtotime($row["DATE"]));
    $DATE[] = $DateVal;
    $MINSTR[] = $ValeurMin;


    $VALUE[] = $ValeurMax;



    }

    $Valeur_old=-9999;
    for($x=0; $x<count($VALUE) ; $x++)
    {
    $Valeur = $VALUE[$x];





    if($Valeur>$Valeur_old)
    {
    $DIFF[$x]=($Valeur-$Valeur_old);
    $Valeur_old=$Valeur;
    }

    }
    /*affichage des resutats*/
    for($x=0; $x<count($VALUE) ; $x++)
    {
    echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]."VALUE2[".$x."]=".$MINSTR[$x]."<br>";


    DATE[0]=00 VALUE[0]=7983.091 DIFF[0]=17982.091VALUE2[0]=7982.736
    DATE[1]=01 VALUE[1]=7983.447 DIFF[1]=0.356VALUE2[1]=7983.122
    DATE[2]=02 VALUE[2]=7983.722 DIFF[2]=0.275VALUE2[2]=7983.465
    DATE[3]=03 VALUE[3]=7983.993 DIFF[3]=0.271000000001VALUE2[3]=7983.743
    DATE[4]=04 VALUE[4]=7984.263 DIFF[4]=0.27VALUE2[4]=7984.014
    DATE[5]=05 VALUE[5]=7984.529 DIFF[5]=0.266000000001VALUE2[5]=7984.284
    DATE[6]=06 VALUE[6]=7984.757 DIFF[6]=0.227999999999VALUE2[6]=7984.548
    DATE[7]=07 VALUE[7]=7984.946 DIFF[7]=0.189VALUE2[7]=7984.776
    DATE[8]=08 VALUE[8]=7985.212 DIFF[8]=0.266000000001VALUE2[8]=7984.961
    DATE[9]=09 VALUE[9]=7985.574 DIFF[9]=0.361999999999VALUE2[9]=7985.233
    DATE[10]=10 VALUE[10]=7987.604 DIFF[10]=2.03VALUE2[10]=7985.61
    DATE[11]=11 VALUE[11]=7989.293 DIFF[11]=1.689VALUE2[11]=7987.835
    DATE[12]=12 VALUE[12]=7991.108 DIFF[12]=1.815VALUE2[12]=7989.361
    DATE[13]=13 VALUE[13]=7991.637 DIFF[13]=0.529VALUE2[13]=7991.22
    DATE[14]=14 VALUE[14]=7992.031 DIFF[14]=0.394VALUE2[14]=7991.668
    DATE[15]=15 VALUE[15]=7992.522 DIFF[15]=0.491VALUE2[15]=7992.073
    DATE[16]=16 VALUE[16]=7992.862 DIFF[16]=0.34VALUE2[16]=7992.567
    DATE[17]=17 VALUE[17]=7993.154 DIFF[17]=0.292VALUE2[17]=7992.891
    DATE[18]=18 VALUE[18]=7993.448 DIFF[18]=0.294VALUE2[18]=7993.181
    DATE[19]=19 VALUE[19]=7995.164 DIFF[19]=1.716VALUE2[19]=7993.472
    DATE[20]=20 VALUE[20]=7995.642 DIFF[20]=0.478VALUE2[20]=7995.187
    DATE[21]=21 VALUE[21]=7996.029 DIFF[21]=0.387000000001VALUE2[21]=7995.671
    DATE[22]=22 VALUE[22]=7996.445 DIFF[22]=0.415999999999VALUE2[22]=7996.071
    DATE[23]=23 VALUE[23]=7996.993 DIFF[23]=0.548000000001VALUE2[23]=7996

  16. #36
    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
    Je me demande si je n'ai pas trouvé la solution:
    $Valeur_old=$MINSTR[0];

    Je crois bien que c'est bon , j'approfondi et je reviens


    $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);
    while($row = mysql_fetch_array($Result))
    /* Get the data from the query result */
    {
    $ValeurMax = $row["MAXSTR"]/1000;
    $ValeurMin = $row["MINSTR"]/1000;
    $DateVal=date("H", strtotime($row["DATE"]));
    $DATE[] = $DateVal;
    $MINSTR[] = $ValeurMin;


    $VALUE[] = $ValeurMax;



    }

    $Valeur_old=$MINSTR[0];
    for($x=0; $x<count($VALUE) ; $x++)
    {
    $Valeur = $VALUE[$x];





    if($Valeur>$Valeur_old)
    {
    $DIFF[$x]=($Valeur-$Valeur_old);
    $Valeur_old=$Valeur;
    }

    }
    /*affichage des resutats*/
    for($x=0; $x<count($VALUE) ; $x++)
    {
    echo "DATE[".$x."]=".$DATE[$x]." VALUE[".$x."]=".$VALUE[$x]." DIFF[".$x."]=".$DIFF[$x]." VALUE2[".$x."]=".$MINSTR[$x]."<br>";
    }

  17. #37
    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
    Je confirme que ca marche top de la balle !!!!!
    patrick, comment puis-je te remercier pour ta patience et ton talent?

    Je suis vraiment admiratif de gens comme toi!

  18. #38
    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
    Citation Envoyé par pawnies20 Voir le message
    Je confirme que ca marche top de la balle !!!!!
    patrick, comment puis-je te remercier pour ta patience et ton talent?

    Je suis vraiment admiratif de gens comme toi!
    Il n'y a rien d'admirable, je suis simplement passé par ou tu passe (il y a longtemps, c'est un peu vrais) et a l'époque (cela ne nous rajeunis pas) il n'y avait pas encore internet, cela m'aurais plus de pouvoir demander et recevoir de l'aide.
    Donc si je peu aider c'est avec plaisir.
    N'oubliez pas de noter la discussion comme "Résolu"
    A+
    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

  19. #39
    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
    Oui mais quand même un Grand merci !!!!!!!!!

    Je suis moi même informaticien mais dans les réseaux et la sécurité.

    Moi aussi quand j'ai commencé internet n'existait pas encore et c'est vrai qu'aujourd'hui je me demande encore comment on faisait !!!!


    Merci beaucoup Patrick

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

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