Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 41 di 67
  • livello intermedio
Indice lezioni

Generare file XML da database

Come utilizzare le funzioni dell'estensione PDO di PHP e le funzioni PHP per XML per recuperare i dati da un database e mostrarli in formato XML.
Come utilizzare le funzioni dell'estensione PDO di PHP e le funzioni PHP per XML per recuperare i dati da un database e mostrarli in formato XML.
Link copiato negli appunti

In una delle scorse lezioni abbiamo introdotto le funzioni per creare un file XML. In questa lezione vedremo come utilizzarle per realizzare un file XML recuperando le informazioni da un database.

In questa lezione faremo uso dell'estensione PDO che ci consente di accedere al database ed effettuare le necessarie query. Per approfondire l'argomento si può fare riferimento alla guida apposita.

Gli esempi di questo articolo utilizzano il database MySQL, ma PDO è un livello di astrazione che consente di connetterci anche a database differenti.

La struttura dati

Per procedere riprendiamo la stessa struttura dati della lezione relativa alla creazione di un file JSON da database e popoliamola con gli stessi dati di prova:

CREATE TABLE user (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
    firstName VARCHAR(100) NOT NULL ,
    lastName VARCHAR(100) NOT NULL ,
    email VARCHAR(100) NOT NULL ,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB;
INSERT INTO user (id, firstName, lastName, email)
VALUES (NULL, 'Simone', 'D\'Amico', 'simone@email.it'),
       (NULL, 'Mario', 'Rossi', 'mario@email.it');

Connessione al database

Anche in questo caso aggiungiamo la connessione al database che ci permetterà di effettuare le query per recuperare i dati:

$user = 'root';
$password = 'root';
$db = 'test';
$host = 'localhost';
$port = 8889;
$conn = new PDO("mysql:host=$host; dbname=$db; port=$port", $user, $password);

Recuperare i dati e convertirli in JSON

Ora che abbiamo un accesso al database possiamo effettuare le nostre query e convertire il risultato in XML con gli utenti presenti nel database.

$xml = new SimpleXMLElement('<users/>');
$stmt = $conn->query("SELECT * FROM user");
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    $user = $xml->addChild('user');
    foreach ($row as $key => $value) {
    $user->addChild($key, $value);
    }
}
echo $xml->asXML();

Il codice appena visto effettua la query al nostro database recuperando tutti gli utenti; ciclando sui risultati andiamo a creare il nostro XML. Oltre al ciclo per i risultati provenienti dal database, abbiamo bisogno di un altro che recupera i vari campi provenienti dall'utente e li aggiunge all'elenco.

Il risultato che otteniamo è il seguente:

<?xml version="1.0"?>
<users>
    <user>
        <id>1</id>
        <firstName>Simone</firstName>
        <lastName>D'Amico</lastName>
        <email>simone@email.it</email>
    </user>
    <user>
        <id>2</id>
        <firstName>Mario</firstName>
        <lastName>Rossi</lastName>
        <email>mario@email.it</email>
        </user>
</users>

Ti consigliamo anche