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
Superman;15
Batman;12
Superchild;12
...
<catalogue>
<figurine designation='Superman' prix='1555'/>
<figurine designation='Batman' prix='12'/>
<figurine designation='Superchild' prix='12'/>
...
</catalogue>
Modèle de la base de données
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
CREATE TABLE Personnage (
designation VARCHAR PRIMARY KEY,
prix DECIMAL NOT NULL,
identite VARCHAR,
genre VARCHAR(12) CHECK (genre='superhéros' OR genre='supervillain')
);
INSERT INTO Personnage (designation, prix) VALUES ('Superman',15);
INSERT INTO Personnage (designation, prix) VALUES ('Batman',12);
INSERT INTO Personnage (designation, prix) VALUES ('Superchild',12);
CREATE VIEW vfigurine AS
SELECT designation, prix FROM Personnage;
CREATE USER customer WITH ENCRYPTED PASSWORD 'public';
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
<?php
/** Connexion **/
$connexion = new PDO('pgsql:host=localhost;port=5432;dbname=garvel', 'customer', 'public');
/** Préparation et exécution de la requête **/
$sql = "SELECT designation, prix FROM vfigurine";
$resultset = $connexion->prepare($sql);
$resultset->execute();
/** Traitement du résultat **/
while ($row = $resultset->fetch(PDO::FETCH_ASSOC)) {
echo $row['designation'] . ";" . $row['prix'] . "\n";
}
/** Déconnexion **/
$connexion=null;
?>
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
<?php
/** Connexion **/
$connexion = new PDO('pgsql:host=localhost;port=5432;dbname=garvel', 'customer', 'public');
/** Préparation et exécution de la requête **/
$sql = "SELECT designation, prix FROM vfigurine";
$resultset = $connexion->prepare($sql);
$resultset->execute();
/** Traitement du résultat **/
echo "<catalogue>";
while ($row = $resultset->fetch(PDO::FETCH_ASSOC)) {
echo "<figurine designation='" . $row['designation'] . "' prix='" . $row['prix'] . "'/>";
}
echo "</catalogue>";
/** Déconnexion **/
$connexion=null;
?>