A la suite du cours de PHP/javascript, les étudiants devront remettre un projet reprenant un ensemble de techniques de développements vues durant le cours. Le projet sera écrit avec les langages HTML/CSS, Javascript, PHP et SQL.
Les étudiants développeront le projet en local sur leurs machines configurées avec les outils XAMP/LAMP /MAMP/WAMP et l'éditeur de texte Visual Studio Code.
Vous trouverez sur ce lien, le fonctionnement demandé pour réaliser votre application web.
Vous pouvez vous en inspirer et récupérer le code html/css.
La partie PHP n'est pas vaisible car c'est à vous de l'écrire en lisant les étapes ci-dessous.
Vous allez créer 4 fichiers PHP :
Créer un formulaire de saisie d'informations à l'aide des langages HTML et de CSS (mise en forme).
Le formulaire devra comporter les champs suivants :
Les champs obligatoires devront être testés avant la validation et l'envoi du formulaire.
L'action de votre formulaire devra pointer sur le fichier creat.php
Vous utiliserez la méthode POST pour envoyer vos données de formulaire au serveur.
Une fois le formulaire créé et remplit vous aller pouvoir le validé.
Si vous validez le formulaire à l'aide du bouton type "submit"
, la page va se recharger
et rien ne va se passer. En fait il se passe que votre formulaire a été validé et envoyé au
serveur web avec toute les informations qu'il contient.
Sauf que le serveur web n'a aucune instruction à transmettre à votre serveur PHP alors il renvoi la page HTML avec un formulaire
vide et l'ensemble de vos données ont été supprimé car personne ne les a récupéré pour les traiter.
Dans la balise HTML <form>
, vous pouvez choisir sur quelle page envoyer les données du formulaire lors de la validation de celui-ci (attribut action='').
Vous allez donc utiliser votre page creat.php qui va contenir les instructions pour récupérer les données du formulaire.
Dans votre formulaire, dans la balise <form>
,
vous allez ajouter l'attribut action='/creat.php'
qui indique que lors de la validation du formulaire,
il faut appeler le fichier 'creat.php' et lui transmettre les informations.
PHP va donc pouvoir récupérer les valeurs des champs dans les variables globales « $_POST »
(voir le cours en ligne sur les variables globales en PHP).
Il vous faudra stocker les données dans des variables PHP pour pouvoir les utiliser par la suite.
Pour des raisons pratiques, vos variables PHP devraient porter le même nom que le nom du champ du
formulaire qui va lui transmettre sa valeur (Voir le cours sur la déclaration de variables en PHP).
Vous allez donc ouvir votre fichier creat.php pour ajouter le code PHP qui va permettre de récupérer les données du formulaire et les stocker dans des variables
<?php
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
?>
Pour préparer l'enregistrement des données dans une variable de session vous allez créer un tableau associatif contenant l'ensemble des données de vos variables initialisées plus haut.
<?php
$user = array(
'nom'=>$nom,
'prenom'=>$prenom
);
?>
Une fois que vous avez traité l'ensemble des informations du formulaire, vous pouvez alors les stocker dans des variables de Session.
<?php
$_SESSION['user'] = $user //Enregistrement du tableau $user dans la session.
?>
N'oubliez pas de déclarer l'utilisation des sessions au debut de votre fichier (Voir le chapitre sur l'utilisation des sessions PHP). Sans cette déclaration PHP ne va pas activer les sessions et donc rien ne serait gardé en mémoire.
Mais vous voyez que avec cette méthode, vous arrivez sur une page blanche sans aucune information pour l'utilisateur.
Il faudrait donc créer une page avec de l'information en plus du script PHP pour que l'utilisateur puisse continuer à naviguer sur le site.
Vous pouvez afficher une phrase qui presente le détail du nouvel enregistrement avec l'affichage des données qui vont être sauvegardées.
<?php
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$email = $_POST['email'];
?>
<h1?>
Enregistrement d'un utilisateur</h1>
<p>Voici les informations enregistrées</p>
<ul>
<li>nom : <?=$nom?> </li>
<li>prenom : <?=$prenom?> </li>
<li>email : <?=$email?> </li>
</ul>
Dans cette étape vous allez ouvrir le fichier read.php
Je vous invite à créer un lien sur les pages formulaire.php et creat.php qui pointe sur la page read.php
Dans la page read.php vous allez récupérer le tableau d'information que vous avez stocké dans la variable de session.
Il faudra ensuite parcourir le tableau que vous venez de recupérer pour afficher son contenu à l'aide de balises html pour la mise en forme.
<?php
session_start();//Activiation des sessions sur le serveur PHP
$user = $_SESSION['user']; //Récupération de notre tableau stoké en session.
?>
<ul>
<?php
//Affichage des clés du tableau avec ses valeurs
foreach($user as $key => $value): ?>
<li> <?=$key?> : <?=$value?> </li>
<?php endforeach; ?>
</ul>
?>
Dans cet exemple nous affichons les données d'un tableau contenant un seul enregistrement.
Pour le projet vous devrez sauvegarder plusieurs enregistrements.
La technique est de créer un autre tableau qui contiendra l'ensemble des tableaux d'informations.
Vous aurez donc besoin de créer un tableau de tableaux. C'est un tableau à 2 dimensions.
<?php
//Exemple de tableau à 2 dimensions
$users[0]['nom'];
$users[0]['prenom'];
$users[1]['nom'];
$users[1]['prenom'];
?>
C'est ce tableau à deux dimensions que vous allez stocker dans votre variable de sessions.
Pour supprimer un enregistrement, vous aller revenir sur la page read.php.
Vous allez ajouter un lien « Supprimer » qui va
pointer vers une page PHP « delete.php » que vous allez créer.
Le lien (URL) va comporter une variable qui contiendra le numéro de clé de la ligne du tableau à supprimer.
On ajoute une variable 'id' dans l'url que l'on pourra récupérer dans la page 'delete.php'
<?php
<a href='delete.php?id=1'>Supprimer</a>
?>
Pour récupérer le contenu d'une variable passée en paramètre dans l'URL, il faut utiliser la variable globale $_GET
qui contient toutes les varibale d'un URL.
<?php
$id = $_GET['id']; //recuperation de la variable id passée dans l_url
?>
Il vous faudra supprimer la ligne du tableau correspondant à l'id récupéré.
<?php
unset($users[$id]);//Suppression de la ligne contenue dans $id
?>
Dans votre projet, il faudra récupérer le tableau contenu dans la Session, puis supprimer la ligne indiquée par la variable $id et ensuite remettre le tableau modifier dans la Session.
<?php
$users = $_SESSION['users']; //Recuperation du tableau en session
$id = $_GET['id']; //Recupération de la ligne à supprimer contenue dans l_url
unset($users[$id]);//Suppression de la ligne du tableau indiquée dans $id
$_SESSION['users'] = $users; //Remise du nouveau tableau en Session.
?>
Pour réaliser cette partie, il vous faudra utiliser le formulaire de la page 'formulaire.php'.
Sauf que pour accéder à cette page, il faut passer par la page read.php qui liste les informations contenues dans votre session.
Rendez-vous sur la page read.php et sur chaque ligne qui comporte les informations d'un client ou autre,
ajoutez un lien HTML qui va pointer sur la page formulaire.php.
Votre lien html devra comporter une variable qui contiendra le numéro de ligne (la clé) du tableau qui contient les informations à afficher dans votre listing.
<?php
//Ce lien est situé à l'interieur du foreach qui parcours votre tableau à 2 dimensions
<a href='/formulaire.php?id=2'>Modifier</a> //Le 2 indique la clé de la 1ere dimension de votre tableau (la ligne)
?>
Pour connaître le client à modifier et donc celui qu'il faut récupérer dans le tableau de votre session, vous passer un paramètre
dans l'URL du lien de modification que vous avez créé juste avant.
Le paramètre sera tout simplement l'identifiant de la ligne du tableau qui contient les informations du client.
Vous allez donc transmettre cette valeur, à l'aide de l'URL, à la page qui va afficher le formulaire client.
Il faudra créer un nouveau script PHP qui va récupérer la valeur du paramètre transmit dans l'URL.
Une fois la valeur récupérée, il faudra la stocker dans une variable PHP. La valeur correspond à la ligne du tableau qui contient les informations du client à modifier.
<?php
if(isset($_GET['id'])): //On test si l'URL contient une variable id
$idUser = $_GET['id']; //On enregistre le chiffre contenu dans la variable 'id'
$users = $_SESSION['users'];//On recupère notre tableau de membres contenu dans la session
$user = $users[$idUser];//On récupère le client qui correpond à la ligne indiquée par 'id'
endif;
?>
Une fois les données récupérées, vous aller pouvoir les afficher dans les champs du formulaire HTML.
Le formulaire de saisi d'un utilisateur sera alors pré-remplit par les données provenant de la base de données.
Vous allez utiliser PHP pour remplire le champ value=""
de chaque balise <input>
<form action="creat.php" method="post">
Nom : <input type="text" name="username" value="<?=$user['nom'] ?>" /><br />
Email: <input type="text" name="email" value="<?=$user['email'] ?>" /><br />
<input type="submit" name="submit" value="Envoie!" />
</form>
Il faudra faire une modification au formulaire HTML en ajoutant un champ caché pour indiquer la ligne du tableau d'utilisateurs à modifier lors de sa validation. L'identifiant passera donc dans le formulaire avec l'ensemble des autres informations client lors de sa validation.
<form action="creat.php" method="post">
Nom : <input type="text" name="username" value="<?=$user['nom'] ?>" /><br />
Email: <input type="text" name="email" value="<?=$user['email'] ?>" /><br />
<input type="hidden" name="idUser" value="<?=$idUser ?>" /> //Champ caché qui permet de transmettre l'id de la ligne du tableau à modifier
<input type="submit" name="submit" value="Envoie!" />
</form>
Après la validation du formulaire, la page creat.php va récupérer les informations du formulaire avec le champ caché en plus des autres.
Il faudra ajouter une ligne de code dans votre fichier creat.php pour récupérer la valeur du champ caché.
C'est le même code PHP que pour récupérer les autres valeurs des champs de formuaire.
<?php
if(isset($_POST['idUser'])){ //On test si la valeur idUser existe
$idUser = $_POST['idUser']; //Si la valeur existe on la stock dans une variable PHP
}
?>
La suite du code PHP de votre fichier qui va créer un tableau contenant les informations de l'utilisateur ne changent pas.
Il n'y a que lors de l'enregistrement en Session que vous allez devoir choisir entre créer un nouvel enregistrement ou modifier un enregistrement.
Si on récupère un id en début de fichier alors il faudra écraser la ligne du tableau de membres avec le membre créé par la page.
Si il on ne récupère pas d'id en début de page alors il faudra créer une nouvelle ligne dans le tableau de membres.
<?php
if(isset($idUser)){ //On test si la page contient un id
$users[$idUser] = $user; //On ecrase la ligne du tableau avec le membre créé
}
else{ //Si pas d'id récupéré en début de page
$users[] = $user; //On va créer une nouvelle ligne dans le tableau de membres
}
$_SESSION['users'] = $users; //On enregistre le tableau en session
?>
Maintenant que vous avez réalisé toutes les fonctionnalités du projet en PHP (Creation, Modification, Lecture, Suppression), nous allons ranger le code PHP dans des fonctions.
Pour cela, vous allez créer 1 fichier PHP appelé fonction.php.
Dans ce fichier vous allez créer 4 fonctions :
Dans la fonction creat(), vous allez mettre le code PHP qui se trouve au debut du fichier creat.php
Dans la fonction read(), vous allez mettre le code PHP qui se trouve au debut du fichier read.php
Dans la fonction update(), vous allez mettre le code PHP qui se trouve au debut du fichier formulaire.php
Dans la fonction delete(), vous allez mettre le code PHP qui se trouve au debut du fichier delete.php
Au début du fichier fonction.php, vous allez ajouter le nom des variables qui correspond à chaque champ de saisie de votre formulaire de la page formulaire.php.
ATTENTION ! En PHP, il n'est pas possibe pour le code contenu dans une fonciton d'acceder directement à une variable qui n'est pas créé dans la fonction.
C'est un mécanise de sécurité pour éviter les bugs et autres problèmes.
Pour qu'une fonction puisse avoir accès aux variables déclarées en dehors de la fonction,
il faudra utiliser le mot clé global
suivit de la liste des variables à récupérer.
Le mot clé global est à mettre en début de chaque fonction qui va utiliser les variables déclarées en haut du fichier.
<?php
session_start(); //Déclanchement des sessions
$idUser;//Identifiant d'un utilisateur qui nous servira pour le delete et update
$users;
$nom;
$prenom;
$email;
$tel;
$title;
function creat(){
global $user,$nom,$prenom,$email // permet d'avoir accès aux variables du fichier en lecture et ecriture
//Ajouter le code PHP situé au début de votre fichier creat.php
}
function read(){
//Ajouter le code PHP situé au début de votre fichier read.php
}
function update(){
//Ajouter le code PHP situé au début de votre fichier formulaire.php
}
function delete(){
//Ajouter le code PHP situé au début de votre fichier delete.php
}
?>
Pour pouvoir utiliser les fonctions de votre fichier functions.php
dans vos autres fichiers, il faudra inclure le fichier à l'aide de la fonction
PHP include 'functions.php'
.
Ensuite vous pourrez utiliser vos fonctions en tapant simplement le nom de la fonction demandée ex : delete();
<?php
include 'functions.php'; //recupère le code PHP du fichier indiqué
delete(); Execution de la fonction delete;
//Suite de votre page avec la partie Html
?>
Le code que vous venez de créer dans le fichier functions.php est à 90% un objet PHP.
Pour que votre fichier functions.php se transforme en objet,
il ne vous reste plus qu'à indiquer que votre liste de fonctions et de variables est contenue dans un classe qui comporte un nom.
Regarder comment créer une classe et vous verrez qu'il ne vous reste qu'à déclarer votre classe et ajouter le contenu de votre code entre accolades.
Vous allez obtenir quelque chose qui ressemble au code ci-dessous :
<?php
session_start(); //Déclanchement des sessions
class Utilisateur{
public $idUser;//Identifiant d'un utilisateur qui nous servira pour le delete et update
public $users;
public $nom;
public $prenom;
public $email;
public $tel;
public $title;
public function creat(){
//Ajouter le code PHP situé au début de votre fichier creat.php
}
}
?>
Pour compléter votre formation sur la Programmation Orientée Objet, vous allez faire une recherche documentaire sur les fonctionnalités suivantes dédiées aux Objets en PHP
Vous allez répondre aux questions suivantes :
Ce travail sera à presenter vendredi en même temps que votre projet d'application web.