Afficher, modifier, supprimer et ajouter des données dans la table OEUVRE

Connexion à votre base de Données

<?php
define("hostname","serveurmysql"); 
define("database","BDD_votreLogin");
define("username","votreLogin"); 
define("password","votreMotDePasse");

$dsn = 'mysql:dbname='.database.';host='.hostname.';charset=utf8';    

$bdd = new PDO($dsn, username, password);
             // pour afficher les erreurs
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
             // pour récupérer le résultat des requêtes SELECT sous forme de tableaux associatifs 
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); 
?> 

l'instruction ci dessous teste la connexion ; Si la connexion est correcte, supprimer cette instruction : <br>
<?php 
var_dump($bdd); 
?>

fichier connexion_bdd.php

rappel : si le résultat sur le navigateur est :

object(PDO)#1 (0) { } 

la connexion est correcte.

<?php
define("hostname","serveurmysql"); // ou localhost
define("database","BDD_votreLogin");
define("username","votreLogin"); 
define("password","votreMotDePasse");

$dsn = 'mysql:dbname='.database.';host='.hostname.';charset=utf8';    

$bdd = new PDO($dsn, username, password);
             // pour afficher les erreurs
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
             // pour récupérer le résultat des requêtes SELECT sous forme de tableaux associatifs 
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC); 

contenu final du fichier connexion_bdd.php


Nommer et organiser ses fichiers


Conventions : Nommer vos fichiers de la façon suivante : Table_operation.php, Table est le nom de la ressource (nom de la classe qui gère une ressource(table) dans un FrameWork), et operation est une des opérations suivantes : add delete edit show (nom des méthodes dans une classe d’un frameWork pour réaliser les opérations de base suivantes Create Read Update Delete : CRUD)

<?php
include("connexion_bdd.php");
touch Auteur_show.php  Auteur_add.php   Auteur_delete.php  Auteur_edit.php   
touch Adherent_show.php Adherent_add.php Adherent_delete.php Adherent_edit.php 
touch Oeuvre_show.php Oeuvre_add.php   Oeuvre_delete.php   Oeuvre_edit.php
touch Exemplaire_show.php  Exemplaire_add.php   Exemplaire_edit.php
touch Emprunt_add.php  Emprunt_return.php Emprunt_bilan.php Emprunt_deleteAll.php        
exemple de liste de fichiers

exemple de liste de fichiers

Exécution d’un instruction SQL avec un objet PDO

Rappels des TPs du semestre 1

Dans la documentation de PDO , on peut lire :

Conclusion :  

PRINCIPE :

Chaque script en début de fichier commence par vérifier les données, exécuter les requêtes SQL, créer les variables et tableaux associatifs nécessaires à l’affichage et éventuellement faire une redirection (faire les opérations du contrôleur, avec les accès aux modèles). Puis vient l’envoi d’une réponse au client : affichage de la vue si il n’y a pas redirection sur une autre page.

Conclusion :  

Faire tous les traitements avant de répondre au client (navigateur) : Accès à la base de données (lecture ajout modification suppression de données). Vérification des données. Création des variables et tableaux associatifs nécessaires à l’affichage ou éventuellement redirection sur une autre page.
* Vos scripts sont plus facilement réutilisables si vous cherchez à retourner une réponse au navigateur qui n’est pas de l’HTML (données au format JSON XML … pour le traitement d’une requête AJAX ), il suffit de renvoyer le résultat au lieu d’afficher le résultat (charger la vue).
* Les vues sont de plus en plus complexes (css, javascript, framework frontoffice…). Les développeurs séparent la logique de traitement de l’affichage (MVC model view controller).

for i in `ls [AOE]*.php` ; 
do 
    echo $i
    cat index.php >> $i;
done

Exemple : Affichage des données d’une Table

Rappels des TPs du semestre 1 (extrait d’un TP)

<?php
// connexion à la base de données : 
// création d'une instance d'un objet PDO de nom $bdd
include("connexion_bdd.php");
// traitement
$commande_SQL ="SELECT * FROM AUTEUR ORDER BY nomAuteur;";
$reponse = $bdd->query($commande_SQL); 
$donnees = $reponse->fetchAll();  

// affichage de la vue
?>

<?php foreach($donnees as $row): ?> 
   <?php echo $row['nomAuteur']; ?>  <br /> 
<?php endforeach;?>

Affichage du contenu de la table OEUVRE

exemple de script pour mettre toutes les données de la table OEUVRE dans un tableau associatif

exemple de script pour mettre toutes les données de la table OEUVRE dans un tableau associatif

exemple de script pour afficher le tableau associatif qui contient toutes les lignes de la table OEUVRE

exemple de script pour afficher le tableau associatif qui contient toutes les lignes de la table OEUVRE

exemple de script pour afficher le tableau associatif en traitant le cas ou le tableau associatif est vide

exemple de script pour afficher le tableau associatif en traitant le cas ou le tableau associatif est vide

exemple de script pour afficher le tableau associatif avec des liens pour ajouter modifier ou supprimer des enregistrements

exemple de script pour afficher le tableau associatif avec des liens pour ajouter modifier ou supprimer des enregistrements

Ajouter un enregistrement dans la table OEUVRE

La table “OEUVRE” est composée de 4 champs dont la clé primaire est un entier qui s’incrémente automatiquement.
Il n’y a pas de traitement dans un premier temps mais juste l’affichage d’un formulaire

exemple de script pour afficher un formulaire pour ajouter une OEUVRE

exemple de script pour afficher un formulaire pour ajouter une OEUVRE


exemple de script pour ajouter une OEUVRE lors de la soumission du formulaire

exemple de script pour ajouter une OEUVRE lors de la soumission du formulaire

REMARQUE : Ce script ne traite pas les erreurs et n’utilise pas de liste déroulante. Cependant recopier toutes les valeurs des champs INPUT dans un autre tableau associatif permet de séparer le filtrage (htmlentities) et la vérification de ces données.

Supprimer un enregistrement dans la table OEUVRE

exemple de script pour supprimer un enregistrement une OEUVRE

exemple de script pour supprimer un enregistrement une OEUVRE


REMARQUE : ce script ne n’utilise pas de formulaire pour demander une confirmation de cette opération (pour ajouter, modifier ou supprimer un enregistrement, il faudrait pour des raisons de sécurité passer par un formulaire dans lequel on place une clé (token) et non un lien, cf cours de S3 en Web). Ajouter une instruction pour signaler une erreur sur l’identifiant passé dans l’URL serait un plus. Lors du projet il est demander de rajouter un script pour vérifier que l’opération peut fonctionner : dans ce cas vérifier qu’il n’existe pas d’exemplaire de cette Oeuvre (voir tp suivant).

Modifier un enregistrement dans la table OEUVRE

exemple de code :


exemple de script pour récupérer l’enregistrement à modifier de la table OEUVRE

exemple de script pour récupérer l’enregistrement à modifier de la table OEUVRE

exemple de script pour afficher un formulaire pour modifier l’enregistrement avec les données du script précédent

exemple de script pour afficher un formulaire pour modifier l’enregistrement avec les données du script précédent

exemple de script pour modifier l’enregistrement lors de la soumission du formulaire à placer en début de page

exemple de script pour modifier l’enregistrement lors de la soumission du formulaire à placer en début de page


REMARQUE : ce script ne traite pas les erreurs, ne vérifie pas que les données sont correctes et n’utilise pas de liste déroulante pour sélectionner un auteur existant dans la base de données.


Travail à finir pour la prochaine séance

Réaliser le CRUD sur les tables AUTEUR et ADHERENT sur le même principe pour pouvoir lire/ajouter/modifier/supprimer des enregistrements avec une interface Web dans ces 2 tables (1 table à la charge de chacun des 2 étudiants du groupe).
8 fichiers à créer :
* Auteur_show.php, Auteur_edit.php, Auteur_delete.php, Auteur_add.php
* Adherent_show.php, Adherent_edit.php, Adherent_delete.php, Adherent_add.php

gérer les adhérents (étudiant 1)

exemple de vue

exemple de vue

exemple de vue

exemple de vue

gérer les auteurs (étudiant 2)

exemple de vue

exemple de vue

exemple de vue

exemple de vue