Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    14

    Scrivere file xml su server

    Ciao a tutti.
    Ho un codice php che tramite un ciclo mi genera un xml da una query mysql.
    Il codice funziona e come output della pagina ho il mio bel xml strutturato.

    Aggiungendo all'header la riga "header('Content-Disposition: attachment; filename=report.xml');
    " riesco a scaricare il file xml senza che mi venga visualizzato.

    Ora la domanda: cosa devo scrivere nell'header se voglio salvare il file sul server remoto in maniera del tutto invisibile invece di scaricarlo tramite browser?

    Il mio scopo è scrivere quel file in una determinata cartella per poi farlo leggere a un'applicazione.

    Grazie!

    P.S. Ho letto i link che mi erano stati postati nel precedente topic ma non c'ho capito molto.
    Potreste farmi un esempio? Purtroppo non so molto di php e non ho molto tempo di studiarmelo da zero...

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112

    Re: Scrivere file xml su server

    Originariamente inviato da smurfro
    Ciao a tutti.
    Ho un codice php che tramite un ciclo mi genera un xml da una query mysql.
    Il codice funziona e come output della pagina ho il mio bel xml strutturato.

    Aggiungendo all'header la riga "header('Content-Disposition: attachment; filename=report.xml');
    " riesco a scaricare il file xml senza che mi venga visualizzato.

    Ora la domanda: cosa devo scrivere nell'header se voglio salvare il file sul server remoto in maniera del tutto invisibile invece di scaricarlo tramite browser?

    Il mio scopo è scrivere quel file in una determinata cartella per poi farlo leggere a un'applicazione.

    Grazie!

    P.S. Ho letto i link che mi erano stati postati nel precedente topic ma non c'ho capito molto.
    Potreste farmi un esempio? Purtroppo non so molto di php e non ho molto tempo di studiarmelo da zero...
    SE vuoi salvarlo sul server l'header non c'entra più niente. L'header server solo per informare il browser sul tipo di file che si sta scaricando.

    Invece che mandarlo in output (quindi per esempio fare l'header e poi l'echo della stringa xml), devi salvarlo su filesystem.

    In pratica puoi usare la funzione file_put_contents che ti chiede due soli parametri: l'indirizzo del file (per esempio "nome_cartella/nome_file.xml" e la stringa xml da salvare. La funzione si preoccupa da sola di creare il file se non esiste ancora o se già esiste di scriverci dentro la stringa che passi come secondo parametro (questa funzion èdisponibile solo da php5 in poi).

    Gabriele

    ps: chiaramente, se sei sotto ambiente linux, devi impostare i permessi di scritta alla cartella in cui scrivi il file

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    14
    Hmmm... ho quasi capito.
    Posto il codice così sono più chiaro:

    Codice PHP:
    <?php
    $hostname_conn 
    "localhost";
    $database_conn "database";
    $username_conn "root";
    $password_conn "password";
    $conn mysql_pconnect($hostname_conn$username_conn$password_conn) or trigger_error(mysql_error(),E_USER_ERROR); 
    ?>
    <?php
    // Query the database and get all the records from the Images table 
    mysql_select_db($database_conn$conn);
    $query_rsImages "SELECT dataora, idzona, idnegozi, temp FROM datitemperature WHERE idnegozi=2";
    $rsImages mysql_query($query_rsImages$conn) or die(mysql_error());
    $row_rsImages mysql_fetch_assoc($rsImages);
    $totalRows_rsImages mysql_num_rows($rsImages);

    // Send the headers
    header('Content-type: text/xml');
    header('Pragma: public');        
    header('Cache-control: private');
    header('Expires: -1');
    header('Content-Disposition: attachment; filename=resuslts.xml');
    ?><?php ('<?xml version="1.0" encoding="utf-8"?>'); ?>
    <temperature>
      <?php if ($totalRows_rsImages 0) { // Show if recordset not empty ?>
      <?php do { ?>
        <dati>
            <dataora><?php echo $row_rsImages['dataora']; ?></dataora>
            <idzona><?php echo $row_rsImages['idzona']; ?></idzona>
            <idnegozi><?php echo $row_rsImages['idnegozi']; ?></idnegozi>
            <temp><?php echo $row_rsImages['temp']; ?></temp>
        </dati>
        <?php } while ($row_rsImages mysql_fetch_assoc($rsImages)); ?>
        <?php // Show if recordset not empty ?>
    </temperature>
    <?php
    mysql_free_result
    ($rsImages);
    ?>
    Avendo copiato questo codice non mi è chiaro come salvare il file...

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    Prova con questo, modificando debitamente la funzione file_put_contents a fondo script:

    Codice PHP:

    <?php
    $hostname_conn 
    "localhost";
    $database_conn "database";
    $username_conn "root";
    $password_conn "password";
    $conn mysql_pconnect($hostname_conn$username_conn$password_conn) or trigger_error(mysql_error(),E_USER_ERROR);
    ?>
    <?php
    // Query the database and get all the records from the Images table
    mysql_select_db($database_conn$conn);
    $query_rsImages "SELECT dataora, idzona, idnegozi, temp FROM datitemperature WHERE idnegozi=2";
    $rsImages mysql_query($query_rsImages$conn) or die(mysql_error());
    $row_rsImages mysql_fetch_assoc($rsImages);
    $totalRows_rsImages mysql_num_rows($rsImages);

    $xml="<?xml version='1.0' encoding='utf-8'?>
    <temperature>"
    ;
      if (
    $totalRows_rsImages 0) {
       do { 
          
    $xml.="
        <dati>
            <dataora>"
    .$row_rsImages['dataora']."</dataora>
            <idzona>"
    .$row_rsImages['idzona']."</idzona>
            <idnegozi>"
    .$row_rsImages['idnegozi']."</idnegozi>
            <temp>"
    .$row_rsImages['temp']."</temp>
        </dati>"
    ;
        } while (
    $row_rsImages mysql_fetch_assoc($rsImages)); 
        } 
    $xml.="
    </temperature>"
    ;
    mysql_free_result($rsImages);

    file_put_contents("scrivi_qui_il_percorso_del_file_sul_server",$xml);
    ?>
    Gabriele

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    14
    Grazie infinite mxdesign!!!
    Mi hai risolto un grosso problema, tutto funziona alla perfezione.

    Grazie infinite!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.