TP PHP PDO
Réaliser un programme PHP et déployer en local et sur le serveur eden
Versionner avec git sur le serveur gvipers
Persister des données avec MySql et PDO
Versionner
Créer votre dépôt git sur github
Installer git sur votre machine locale (cf. Git for Windows) et cloner votre dépôt
Dans la suite de ce sujet, $PROJET_CDAW désigne l'emplacement sur disque de la racine de votre dépôt git.
Environnement local
Pour travailler efficacement vous devez être capable de développer et tester localement votre site Web (sans connexion internet) sur votre machine. Pour cela, il faut installer un serveur Web avec le module PHP et le serveur de base de données MySql (SGBD utilisé dans cette UV). Installer uWamp par exemple.
Créer le fichier PHP
$PROJET_CDAW/BackEnd/tp1/infos.phpavec le contenu suivant:
<?php
phpinfo();Committer ce fichier dans votre dépôt git
Copier ce fichier dans la racine de votre serveur Web (par exemple dans
c:\uWamp\www). Dans la suite de ce sujet,$DOCUMENT_ROOTdésigne l'emplacement sur disque où le serveur va chercher les fichiers.Tester votre installation à travers un navigateur http://localhost/infos.php. Cette page vous donne beaucoup d'informations importantes sur le serveur (variable globales, extensions installées, ...). C'est une source d'information importante en cas d'erreur.
PDO (version simplifiée avec FETCH_OBJ)
FETCH_OBJ)PHP Data Objects fournit une couche d'abstraction permettant de ce connecter à une base de données. Nous allons tester cela en local et sur eden.
Créer une table users dans base locale avec PhpMyAdmin
Si vous avez installé uWamp correctement, vous avez le SGBD MySql installé ainsi que PhpMyAdmin qui permet de paramétrer vos bases de données.
Accéder à MySQL via l'URL : http://localhost/phpmyadmin
Utiliser les identifiants par défaut : root/root ou root/ ou cf. doc
Créer une base de données nommée
dbtestavec l'encodage utf8_general_ciCréer une table nommée
usersavec 3 champs : id, name et email. id est la clé primaire en auto incrément. name et email sont des VARCHAR.Ajouter quelques données fictives dans cette table

Afficher le contenu de la table users avec PDO
users avec PDOEn utilisant PHP et PDO, afficher le contenu de la table users sous la forme d'une tableau HTML.
Créer un fichier $PROJET_CDAW/BackEnd/tp1/initPDO.php avec le contenu suivant:
<?php
define('_MYSQL_HOST','127.0.0.1');
define('_MYSQL_PORT',3306);
define('_MYSQL_DBNAME','dbtest');
define('_MYSQL_USER','root');
define('_MYSQL_PASSWORD','pwd');
$connectionString = "mysql:host=". _MYSQL_HOST;
if(defined('_MYSQL_PORT'))
$connectionString .= ";port=". _MYSQL_PORT;
$connectionString .= ";dbname=" . _MYSQL_DBNAME;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' );
try {
$pdo = new PDO($connectionString,_MYSQL_USER,_MYSQL_PASSWORD,$options);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $erreur) {
myLog('Erreur : '.$erreur->getMessage());
}Créer et compléter le fichier $PROJET_CDAW/BackEnd/tp1/test-PDO.php:
<?php
// initialise une variable $pdo connecté à la base locale
require_once("initPDO.php"); // cf. doc / cours
$request = $pdo->prepare("select * from users");
// à vous de compléter...
// afficher un tableau HTML avec les donnéees en utilisant fetch(PDO::FETCH_OBJ)
/*** close the database connection ***/
$pdo = null;
L'objectif est de voir dans une page Web un tableau HTML qui affiche les utilisateurs stockés dans la table users.

Si vous ajoutez ou supprimez un utilisateur dans la table users via PhpMyAdmin, il suffit de raffraichir la page du navigateur pour que la table HTML se mette à jour.
Ajout d'utilisateurs dans la base
Créer un fichier $PROJET_CDAW/BackEnd/tp1/test-PDO-post.php qui reprend le même exercice que précédemment mais ajout un formulaire Web sous le tableau HTML qui permet d'ajouter un nouvel utlisateur dans la table users. Remarqez que le champ id ne doit pas être saisi par l'utilisateur car c'est un champ en auto-incrément dans la base.

PDO avec FETCH_CLASS
FETCH_CLASSReprendre l'exercice précédant en utilisant une approche plus objet via l'utilisation d'une classe User et FETCH_CLASS de PDO. Créer un fichier $PROJET_CDAW/BackEnd/tp1/test-PDO-class.php reprenant le code précédent en ajoutant une classe User. Cette classe doit contenir tout votre code et notamment les méthodes suivantes :
getAllUsersméthode statique pour récupérer tous les utilisateurs dans la tabeuserssous forme d'objets instances de la classeUsershowAllUsersAsTableméthode statique pour afficher tous les utilisateurs sous forme de tableau HTMLtoHtmlméthode retournant une chaîne caractères contenant les infos de l'objet user qui reçoit le message ($user->toHtml())
Découpez votre code et ajouter plus de méthodes si nécessaire. Dans votre code HTML, affichez un tableau avec l'ensemble des utilisateurs dans la base ainsi:
<h1>Users</h1>
<?php
User::showAllUsersAsTable();
?>PDO avec FETCH_CLASS et PDO::FETCH_PROPS_LATE
FETCH_CLASS et PDO::FETCH_PROPS_LATECréer un fichier $PROJET_CDAW/BackEnd/tp1/test-PDO-propslate.php reprenant le code précédent et ajoutant l'utilisation de PDO::FETCH_PROPS_LATE. Modifier le code de la class User en conséquence. Notamment, essayer de comprendre quelles sont les variables d'instance d'un objet user par rapport à la version précédente.
CRUD avec PDO
CRUD signifie Create, Read, Update et Delete qui sont les opérations courantes sur des données. Créer un fichier $PROJET_CDAW/BackEnd/tp1/test-PDO-CRUD.php qui reprend la dernière version du TP1 et affiche un tableau avec tous les utilisateurs. Travail à faire :
Ajouter un bouton permettant de créer un nouvel utilisateur (formulaire POST)
Pour chaque utilisateur dans le tableau, ajoutez des boutons permettant de :
modifier cet utilisateur
supprimer cet utilisateur

Last updated
Was this helpful?