DY

DelahayeYourself

modules / S1103 /

TP18: SQL, SQLite & PHP

Ingen

La société InGen; spécialisée dans la création de créatures préhistoriques génétiquement modifiées; souhaite refondre une partie de son SI.

IngenLogo

La majeure partie de son activité consiste à faire naı̂tre des dinosaures et à les présenter au sein de Jurassic Park. Les dinosaures sont définis par un nom, une date de naissance, un modèle, une espèce et un numéro de série. Une espèce est définie par un nom. Un modèle de dinosaure est défini par un numéro de version.

Ingen UML Database Scheme
Diagramme UML de la base de données d'InGen

Lecture de la base de données

Lecture simple

En utilisant la base de données SQLite ingen.sqlite3.

Rappel Syntaxe SQL
/* Sélection */
SELECT [ * / columns_name ] FROM tablename;

/* Compter */
SELECT COUNT(column_name) FROM table_name;

/* Trier */
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
Rappel Syntaxe PHP

Gestion des exceptions

<?php

//Connexion à la base de données avec gestion des exceptions
try { 
    $db = new PDO('sqlite:database_filepath');
} catch(Exception $e){
    die('Erreur : ' . $e->getMessage());
}

//Execution d'une requête
$query = $db->prepare("SELECT * FROM jeux");
$query->execute(); 
while ($donnees = $query->fetch()){
    echo($donnees['nom'] . $donnees['description'];
}
$query->closeCursor();
Jointure(s)

Écriture dans la base de données

Toujours en utilisant la base de données SQLite précédente.

Rappel Syntaxe SQL

Insertion

/* INSERTION */
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...);
/* MAJ */
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value;
Rappel Syntaxe PHP

Un exemple d'exécution d'une requête préparée avec l'utilisation de variables

<?php
//On suppose que les variables $nom, $type, $desc et $note ont été initialisées

$query = $db->prepare('INSERT INTO jeux(nom, type, description,note) VALUES(:nom, :types, :descr, :note)');

$query->execute(array(
    'nom' => $nom,
    'types' => $type,
    'descr' => $desc,
    'note' => $note,
));