Generare file XML da database
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', '[email protected]'),
(NULL, 'Mario', 'Rossi', '[email protected]');
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>[email protected]</email>
</user>
<user>
<id>2</id>
<firstName>Mario</firstName>
<lastName>Rossi</lastName>
<email>[email protected]</email>
</user>
</users>
Se vuoi aggiornamenti su PHP inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Hiris, non chiamatelo smartwatch!
Luca Lagomersino ci presenta il progetto Hiris, un sistema composto di uno o più device che ha l’intento di rendere […]