30 pers. connectées au site
Manuel Pear
Introduction
Introduction -- Transformations simples
Exemple de base de données
Dans ce tutorial, les exemples réfèrent à cette table de base de données :
mysql> select * from bands;
+----+--------------+------------+-------------+-------------+
| id | name | birth_year | birth_place | genre |
+----+--------------+------------+-------------+-------------+
| 1 | The Blabbers | 1998 | London | Rock'n'Roll |
| 2 | Only Stupids | 1997 | New York | Hip Hop |
+----+--------------+------------+-------------+-------------+
mysql> select * from albums;
+----+---------+------------------+------+-----------------+
| id | bandsID | title | year | comment |
+----+---------+------------------+------+-----------------+
| 1 | 1 | BlaBla | 1998 | Their first one |
| 2 | 1 | More Talks | 2000 | The second one |
| 3 | 2 | All your base... | 1999 | The Classic |
+----+---------+------------------+------+-----------------+
|
L'utilisation typique
Commençons par un exemple utilisant les options par défaut. La nouvelle instance est liée à un DSN, donc, vous n'avez qu'à fournir une requête SQL. L'instance traite le résultat automatiquement ; dans le paramètre $xmlstring, vous trouvez la représentation XML du jeu de résultats.
Exemple 68-1. Un exemple simple
- <?php
- require_once "XML/sql2xml.php";
- $sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
- $xmlstring = $sql2xmlclass->getxml("select * from bands");
-
- ?>
Le contenu du paramètre $xmlstring basé sur la table ci-dessus sera :
<?xml version="1.0"?>
<root>
<result>
<row>
<id>1</id>
<name>The Blabbers</name>
<birth_year>1998</birth_year>
<birth_place>London</birth_place>
<genre>Rock'n'Roll</genre>
</row>
<row>
<id>2</id>
<name>Only Stupids</name>
<birth_year>1997</birth_year>
<birth_place>New York</birth_place>
<genre>Hip Hop</genre>
</row>
</result>
</root>
|
|
Transformation basé sur des jointures de requêtes
Si le résultat de votre requête est basé sur des jointures de tables, une structure de données XML peut représenter comment le DBMS joint les tables. Pour activer ou désactiver ce comportement, utilisez
setOptions() avec la clé option 'nested'. La valeur par défaut est TRUE - le comportement est activé.
Exemple 68-2. Le jeu de résultats
- <?php
- $sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
- $xmlstring = $sql2xmlclass->getxml("select * from bands left join albums on bands.id = bandsID");
-
- ?>
L'affichage XML généré dans $xmlstring :
<?xml version="1.0"?>
<root>
<result>
<row>
<id>1</id>
<name>The Blabbers</name>
<birth_year>1998</birth_year>
<birth_place>London</birth_place>
<genre>Rock'n'Roll</genre>
<row>
<id>1</id>
<bandsID>1</bandsID>
<title>BlaBla</title>
<year>1998</year>
<comment>Their first one</comment>
</row>
<row>
<id>2</id>
<bandsID>1</bandsID>
<title>More Talks</title>
<year>2000</year>
<comment>The second one</comment>
</row>
</row>
<row>
<id>2</id>
<name>Only Stupids</name>
<birth_year>1997</birth_year>
<birth_place>New York</birth_place>
<genre>Hip Hop</genre>
<row>
<id>3</id>
<bandsID>2</bandsID>
<title>All your base...</title>
<year>1999</year>
<comment>The Classic</comment>
</row>
</row>
</result>
</root>
|
|
Si vous désactivez ce comportement, la structure XML des lignes est plate.
Exemple 68-3. Le jeu de résultats
- <?php
- $sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
- $options = array('nested' => false);
- $sql2xmlclass->setOptions($options);
- $xmlstring = $sql2xmlclass->getxml("select * from bands left join albums on bands.id = bandsID");
-
- ?>
affichage XML :
$xmlstring =>
<?xml version="1.0"?>
<root>
<result>
<row>
<id>1</id>
<name>The Blabbers</name>
<birth_year>1998</birth_year>
<birth_place>London</birth_place>
<genre>Rock'n'Roll</genre>
<id>1</id>
<bandsID>1</bandsID>
<title>BlaBla</title>
<year>1998</year>
<comment>Their first one</comment>
</row>
<row>
<id>1</id>
<name>The Blabbers</name>
<birth_year>1998</birth_year>
<birth_place>London</birth_place>
<genre>Rock'n'Roll</genre>
<id>2</id>
<bandsID>1</bandsID>
<title>More Talks</title>
<year>2000</year>
<comment>The second one</comment>
</row>
<row>
<id>2</id>
<name>Only Stupids</name>
<birth_year>1997</birth_year>
<birth_place>New York</birth_place>
<genre>Hip Hop</genre>
<id>3</id>
<bandsID>2</bandsID>
<title>All your base...</title>
<year>1999</year>
<comment>The Classic</comment>
</row>
</result>
</root>
|
|
Remonter