• User

    Importare dati da XML a db Mysql

    Salve ragazzi, premetto che non sono un programmatore.
    La mia stazione meteo genera un file xml contenente tutti i dati in tempo reale (temperatura, umidità, ecc.), questo viene caricato ogni minuto sulla mia pagina web (max299.netsons.org/dati/wdfulldata.xml).
    Io vorrei prendere ad esempio le info su temperatura e umidità e caricarle su un db mysql con un intervallo di 5 minuti, ossia ogni 5 min. Vengono caricati sul db le info su temp. e umidità.
    Sapete come posso fare?
    Come potete vedere sulla home page max299.netsons.org/ sono riuscito a prendere quei dati e visualizzarli sulla tabella con simplexml, ma non so proprio come fare per archiviarli sul db.
    Grazie ancora


  • User

    Qualche idea?


  • User

    Ciao,
    io ho testato un sistema che ora ti riporto.
    Il mio xml di partenza è fatto come segue
    [HTML]
    <dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2012-07-17T12:34:02">
    <utenti>
    <NOME>AAA</NOME>
    <COGNOME>aaa</COGNOME>
    <INDIRIZZO>Via di aaa, 11</INDIRIZZO>
    <MAIL>[email protected]</MAIL>
    <TELEFONO>0123456</TELEFONO>
    </utenti>
    <utenti>
    <NOME>BBB</NOME>
    <COGNOME>bbb</COGNOME>
    <INDIRIZZO>Via bbb, 22</INDIRIZZO>
    <MAIL>[email protected]</MAIL>
    <TELEFONO>6543210</TELEFONO>
    </utenti>
    <utenti>
    <NOME>CCC</NOME>
    <COGNOME>ccc</COGNOME>
    <INDIRIZZO>Via ccc, 33</INDIRIZZO>
    <MAIL>[email protected]</MAIL>
    <TELEFONO>112233</TELEFONO>
    </utenti>
    </dataroot>
    [/HTML]

    Form iniziale:
    [PHP]<html>
    <head>
    <title>Upload ed importazione XML</title>
    </head>
    <body>
    <form enctype="multipart/form-data" method="post" action="importa_xml.php">
    File XML: <input type="file" name="filexml" value="" />
    <input type="submit" name="" value="Upload" />
    </form>
    </body>
    </html>
    [/PHP]

    File importa_xml.php:
    [PHP]
    <?php
    // Apro la connessione al DB
    require_once 'config.inc.php';
    $db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD) or
    die ('Unable to connect. Check your connection parameters.');
    mysql_select_db(MYSQL_DB, $db) or die(mysql_error($db));

    // Recupero il file
    $file = $_FILES['filexml'];

    // Controllo che il file sia stato inserito
    if ( $file['tmp_name'] != '' ) {
    // Carica il file in una variabile $xml
    $xml = simplexml_load_file( $file['tmp_name'] );

    // Controllo tutti i tag "utenti"
    foreach( $xml->utenti as $value ) {
        // Recupero tutti i campi da ogni tag "utenti"
        $nome = $value->NOME;
        $cognome = $value->COGNOME;
        $indirizzo = $value->INDIRIZZO;
        $mail = $value->MAIL;
        $telefono = $value->TELEFONO;
        
        // Creo una query di inserimento e la eseguo
        $sql = "
            INSERT INTO utenti SET 
                nome = '$nome',
                cognome = '$cognome',
                indirizzo = '$indirizzo',
                mail = '$mail',
                telefono = '$telefono'
        ";
        $rssql = mysql_query( $sql );
        
        // Controllo che l'importazione sia avvenuta con successo
        echo ( $rssql ) ? "Importazione avvenuta con successo" : "Errore nella query o connessione al DB mancante";
    }
    

    }
    else
    echo "Nessun file inserito";
    [/PHP]