<?php
define('DB_HOST' , 'localhost');        // l'adresse de mysql
define('DB_NAME' , 'ma_BDD');           // le nom de la base de donnée
define('DB_USER' , 'XXXX');             // votre login de la base de donnée
define('DB_PASS' , 'YYYYYYYYY');        // votre mot de passe
try {    
    // Connexion à la base de donnée
    $PDO = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
    $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);    
    
    $limit = 6; // Nombre d'heure (intervalle des moyennes)
    
    // la requête SQL sur la table nommé data :    
    // on formate la date (on ne garde que l'heure) dans une colonne moyheure, 
    // on arrondie au dixième la moyenne de temp dans une colonne TempM et de huùi dans une colonne HumiM
    // à partir de maintenant dans la limite de 6 heure (variable $limit) 
    // grouper par mois jour heure en ordre décroissant
    $sql = 'SELECT DATE_FORMAT(date_heure,"%d-%m-%Y %Hh") as moyheure, ROUND(AVG(temp),1) as TempM, ROUND(AVG(humi),1) as HumiM FROM data 
             WHERE date_heure < NOW() AND date_heure > DATE_SUB(NOW(), INTERVAL '.$limit.' HOUR) 
             GROUP BY MONTH(date_heure), DAY(date_heure), HOUR(date_heure) DESC' ;
    
    // On interroge la base de donnée
    $result = $PDO->query($sql);
    // récupère toutes les lignes dans le tableau $rows, par défaut PDO::FETCH_BOTH est utilisé 
    $rows = $result->fetchAll();
// sinon, on récupère l'erreur
} catch(PDOException $e) {
    // on affiche l'erreur
    echo 'Échec de la connexion : ' . $e->getMessage();
}
// on ferme la connexion à la base de donnée
$PDO = null; 
// pour chaque ligne du tableau $rows on affiche les datas
foreach($rows as $row) {
    Echo 'Date et heure : '.$row["moyheure"].' Température : '.$row["TempM"].' °C Humidité : '.$row["HumiM"].' % <br/>';
} 
?>