Partage
  • Partager sur Facebook
  • Partager sur Twitter

traitement par PHP ou SQL

    11 août 2023 à 11:38:05

    Bonjour,

    j'effectue un traitement PHP pour calculer le max de la température de l'eau par jour et l'insérer dans une autre table mais j'aimerai savoir si on peut utiliser une procédure ou un évènement par SQL (phpmyadmin)

    Voici mon traitement :

    <?php
    
    /************************************************************
     *  		Réception des datas du NodeMCU                  *
     ***********************************************************/
    
    //  On récupère les datas reçues
    $Temp = $_GET["temp"];
    $Humi = $_GET["humi"];
    $Eau = $_GET["eau"];
    $Fuite = $_GET["fuite"];
    $Etat = $_GET["etat"];
    $Quidonc = $_GET["quidonc"];
    
    /************************************************************
     *  		Gestion de la bas de donnée                     *
     ***********************************************************/
     
    // On récupère les variables de connexion à la base de donnée
    require "connexion.php";
    
    // On récupère la date et l'heure actuelle
    date_default_timezone_set("Europe/Paris");
    $date_heure = date("Y-m-d H:i:s");
    $date = date("Y-m-d");
    $day = date("d");
    
    // On récupère le jour de la dernière entrée de la table data
    $reponse = $PDO->query("SELECT DAY(date_heure) as lastday FROM data ORDER BY date_heure DESC LIMIT 1");
    while ($donnees = $reponse->fetch()) {
    	$lastday = $donnees['lastday'];
    }
    $reponse->closeCursor();
    
    
    // A chaque changement de jour
    if ( $day != $lastday) {
    	// on récupère le max de l'eau du jour précédent de la table data
    	$reponse = $PDO->query("SELECT DATE_FORMAT(date_heure,'%Y-%m-%d') AS lasday, MAX(eau) AS eauMax 
    							FROM data
    							GROUP BY DAY(date_heure) 
    							ORDER BY date_heure DESC LIMIT 1");
    	while ($donnees = $reponse->fetch()) {
    		$lasday = $donnees['lasday'];
    		$eauMax = $donnees['eauMax'];
    	}
    	$reponse->closeCursor();
    	
    	// on insère le max de l'eau du jour précédent dans la table eau_max_jour
    	$resultats = $PDO->prepare("INSERT INTO eau_max_jour (date_heure, temp) VALUES (:lasday, :eauMax)");
    	$resultats->bindParam(':lasday', $lasday);
    	$resultats->bindParam(':eauMax', $eauMax);
    	$resultats->execute();
    	$resultats->closeCursor();
    }
    
    // On insère dans la table data les valeurs reçu du NodeMCU
    $resultats = $PDO->prepare("INSERT INTO data (temp, humi, eau, fuite, etat, quidonc) values (:temp, :humi, :eau, :fuite, :etat, :quidonc)");
    $resultats->bindParam(':temp', $Temp);
    $resultats->bindParam(':humi', $Humi);
    $resultats->bindParam(':eau', $Eau);
    $resultats->bindParam(':fuite', $Fuite);
    $resultats->bindParam(':etat', $Etat);
    $resultats->bindParam(':quidonc', $Quidonc);
    $resultats->execute();
    $resultats->closeCursor();
    
    ///////////// Déconnexion de la base de donnée \\\\\\\\\\\\\\
    $PDO=null;
    exit();
    ?>

    Je pense avoir trouvé

    BEGIN
    DECLARE lastjour integer;
    DECLARE jour integer;
        
    SET @lastjour = (SELECT DATE_FORMAT(date_heure,'%d') 
                     FROM `data` 
                     ORDER BY date_heure 
                     DESC LIMIT 1);
    
    SET @jour = DATE_FORMAT(CURRENT_DATE(),'%d');  
    
    IF(@jour != @lastjour) THEN
        INSERT INTO eau_max_jour (date_heure, temp)
        SELECT DATE_FORMAT(date_heure,'%Y-%m-%d'), MAX(eau)
        FROM data
        GROUP BY DAY(date_heure) 
        ORDER BY date_heure DESC 
        LIMIT 1;
    END IF;
    END




      :



    -
    Edité par Manubiglia 11 août 2023 à 16:06:17

    • Partager sur Facebook
    • Partager sur Twitter

    traitement par PHP ou SQL

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown