Super-transferts

[30 minutes]

L'entreprise de ventes de figurines de super-héros GARVEL a monté un partenariat avec les deux sites de ventes en ligne makemoney.com et dobusiness.com. Chaque entreprise lui demande de mettre à disposition respectivement un fichier CSV et un fichier XML pour le transfert du catalogue, stocké dans une base de données PostgreSQL.

Le code devra être exécuté et testé.

Fichier CSV et fichier XML requis

1
Superman;15
2
Batman;12
3
Superchild;12
4
...
1
<catalogue>
2
  <figurine designation='Superman' prix='1555'/>
3
  <figurine designation='Batman' prix='12'/>
4
  <figurine designation='Superchild' prix='12'/>
5
  ...
6
</catalogue>

Modèle de la base de données

Modèle UML Figurines GARVEL (extrait)

Question

Créer la base de données correspondant à ce modèle.

Créer une vue vfigurine permettant de retourner les champs designation et prix.

Créer un utilisateur customer permettant de lire la vue figurine.

Solution

1
CREATE TABLE Personnage (
2
designation VARCHAR PRIMARY KEY,
3
prix DECIMAL NOT NULL,
4
identite VARCHAR,
5
genre VARCHAR(12) CHECK (genre='superhéros' OR genre='supervillain')
6
);
7
8
INSERT INTO Personnage (designation, prix) VALUES ('Superman',15);
9
INSERT INTO Personnage (designation, prix) VALUES ('Batman',12);
10
INSERT INTO Personnage (designation, prix) VALUES ('Superchild',12);
11
12
CREATE VIEW vfigurine AS
13
SELECT designation, prix FROM Personnage;
14
15
CREATE USER customer WITH ENCRYPTED PASSWORD 'public';
16
GRANT SELECT ON vfigurine TO customer;

Question

Réaliser un script PHP csv.php permettant de se connecter à la base PosgreSQL et d'afficher la désignation et le prix au format CSV, en suivant l'exemple ci-après.

Solution

1
<?php 
2
3
/** Connexion **/
4
$connexion = new PDO('pgsql:host=localhost;port=5432;dbname=garvel', 'customer', 'public');	
5
6
/** Préparation et exécution de la requête **/
7
$sql = "SELECT designation, prix FROM vfigurine";
8
$resultset = $connexion->prepare($sql);
9
$resultset->execute();
10
11
/** Traitement du résultat **/
12
while ($row = $resultset->fetch(PDO::FETCH_ASSOC)) {
13
	echo $row['designation'] . ";" . $row['prix'] . "\n";
14
}
15
16
/** Déconnexion **/
17
$connexion=null;
18
19
?>

Question

Réaliser un script PHP permettant de se connecter à la base et d'afficher la désignation et le prix selon un schéma XML, en suivant l'exemple ci-après.

Solution

1
<?php 
2
3
/** Connexion **/
4
$connexion = new PDO('pgsql:host=localhost;port=5432;dbname=garvel', 'customer', 'public');	
5
6
/** Préparation et exécution de la requête **/
7
$sql = "SELECT designation, prix FROM vfigurine";
8
$resultset = $connexion->prepare($sql);
9
$resultset->execute();
10
11
/** Traitement du résultat **/
12
echo "<catalogue>";
13
while ($row = $resultset->fetch(PDO::FETCH_ASSOC)) {
14
	echo "<figurine designation='" . $row['designation'] . "' prix='" . $row['prix'] . "'/>";
15
}
16
echo "</catalogue>";
17
18
/** Déconnexion **/
19
$connexion=null;
20
21
?>