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 :

Générer fichier xml avec php


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Générer fichier xml avec php
    Bonjour à tous,

    Afin d'établir un graphique météo (avec amCharts), je dois générer via php un fichier xml.
    Ceci est fait avec ce script php :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?php
    header('Content-Type: text/xml');
     
    //Configuration database
    include("../aaaa.php");
     
    // connect to database
    mysql_connect($host, $user, $passwd)
    or die ('Unable to connect to server.');
     
    mysql_select_db($dbname)
    or die ('Unable to select database.');
     
    // select last entries
    $query = "SELECT timestamp_mesure, valeur_mesure FROM releves WHERE timestamp_mesure BETWEEN DATE_ADD(NOW(),INTERVAL -24 HOUR) AND NOW() ORDER BY timestamp_mesure DESC";
    $res = mysql_query($query);
     
    // put all the data inside an array
    $arr = array();
    while($obj = mysql_fetch_object($res)){
      $arr[] = $obj;
    }
     
    // echo xml
    echo "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n";
    echo "<chart>\n";
    echo "<series>\n";
     
    // echo series
    for ($i = sizeof($arr) - 1; $i > 0; $i--) {  
      $date = $arr[$i]->timestamp_mesure; 
      echo "<value xid=\"$i\">$date</value>\n";
    }
    echo "</series>\n";
     
    // echo graphs
    echo "<graphs>\n";
    // first graph
    echo "<graph title=\"Aujourd'hui\" gid=\"0\">\n";
    for ($i = sizeof($arr) - 1; $i > 0; $i--) {  
      $valeurs = $arr[$i]->valeur_mesure; 
      echo "<value xid=\"$i\">$valeurs</value>\n";
    }
    echo "</graph>\n";
     
    echo "</graphs>\n";
    echo "</chart>";
     
    ?>
    Mon problème est que une ligne est inserée dans la BDD, chaque fois qu'une donnée est reçu du capteur de température et que celle-ci a évolué par rapport à la précédente. S'il n'y a pas d'évolution, aucune data n'est insérée.

    Je voudrais générer le fichier xml de la façon suivante.
    - 1 données toutes les 15 minutes
    - Si pas de données depuis 2h par exemple, sélectionner la valeur précédente.

    Dans ma base, les valeurs timestamp_mesure sont au format 20110921123000.

    Je ne vois pas trop comment faire, il faut faire une boucle, mais comment récupèrer la dernière valeur, et si celle-ci n'existe pas.

    Merci pour votre aide. Mikael

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    mon explication ne devait pas être trés claire...

    J'ai essayé de décrire ce que php doit faire, on verra ensuite pour le code.... :

    -Faire une boucle qui parcours YYYYMMDD 00:00 à YYYYMMDD 23:45, par étape de 00:15
    - Rechercher dans le Array YYYYDDMM HHMM (où YYYYDDMM HHMM = boucle1), si pas
    -Générer le fichier xml
    Pour le code, j'essaye, J'ai mis en bleu ce dont j'aurai besoin d'aide pour écrire le code :

    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
    $query = "SELECT timestamp_mesure, valeur_mesure FROM releves WHERE timestamp_mesure BETWEEN DATE_ADD(NOW(),INTERVAL -26 HOUR) AND NOW() ORDER BY timestamp_mesure DESC";
    $res = mysql_query($query);
     
    // put all the data inside an array
    $arr = array();
    while($obj = mysql_fetch_object($res)){
      $arr[] = $obj;
    }
    for YYYYMMDD0000 to YYYYMMDD2345 step  00:15 {
        for ($i = sizeof($arr) - 1; $i > 0; $i--) {  
             $arr2 = array(); 
             RECHERCHER YYYYMMDDHHMM et recuperer valeur_mesure  
             $date = $arr2[$i]->HHMM; 
             $visits = $arr2[$i]->valeur_mesure; 
        }
    }
    Merci Mikael

    [EDIT] @heretik25, J'étais entrain d'écrire mon message, mais il faut croire que j'ai de trop gros doigts, et j'ai validé avant d'avoir terminé mon post !!!

Discussions similaires

  1. [XSLT] Générer des fichiers XML avec PHP
    Par oneTime dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 28/04/2008, 21h27
  2. [DOM] création de fichier XML avec PHP
    Par cortex007 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 09/12/2007, 11h31
  3. [DOM XML] Insertion données dans fichier XML avec PHP pour Flash ?
    Par ExSter dans le forum Bibliothèques et frameworks
    Réponses: 17
    Dernier message: 10/05/2006, 11h16
  4. [XML] [EXPAT] Parser un fichier xml avec php
    Par Dargos dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 05/04/2006, 12h25
  5. [XML] lire un fichier xml avec php
    Par java_fun dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/03/2006, 12h21

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