CRUD 1
Introduction à la programmation orientée objet en PHP
Les fonctionnalités d'un manager
Un objet gérant des entités issues d'une BDD est généralement appelé un "manager". Comme un manager ne fonctionne pas sans support de stockage (dans notre cas, une BDD), on va prendre un exemple concret en créant un gestionnaire pour nos personnages, qui va donc se charger d'en ajouter, d'en modifier, d'en supprimer et d'en récupérer.Pour pouvoir gérer au mieux des entités présentes en BDD (ici, nos abonnés), il va falloir quelques fonctionnalités de base. Quelles sont-elles ? Un manager doit pouvoir :
- Enregistrer une nouvelle instance
- Sélectionner une instance
- Modifier une instance
- Supprimer une instance
Le fichier index.php
<!DOCTYPE html>
<html lang="fr">
<head>
<title>POO PHP</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/mesStyles.css">
</head>
<body>
<h1>Inscription</h1>
<?php
require 'classes/utilisateur.class.php';
require 'classes/admin.class.php';
require 'classes/abonne.class.php';
require 'config/login.php';
require 'classes/manager.class.php';
//$bdd est une instance de PDO (voir dans le fichier login.php)
$Manager = new Manager($bdd);
$Manager -> createInscrits('Papy33', 123, 'Sud');
$Manager -> readInscrits();
?>
</body>
</html>
Le fichier classes/manager.class.php
⚠ A noter que l'exemple ci-dessus est loin d'être parfait au niveau sécurité... Cette question est abordée dans le chapitre suivant.
<?php
class Manager {
private $_db; // Instance de PDO
public function __construct($bdd) {
$this->setDb($bdd);
}
public function setDb($bdd) {
$this->_db = $bdd;
}
// ⚠ Méthode non sécurisée : voir chapitre suivant
public function createInscrits($nom, $pass, $region) {
$requete = 'INSERT INTO inscrits(id_inscrits, nom_inscrits, pass_inscrits, region_inscrits)
VALUES(null,"'.$nom.'","'.$pass.'","'.$region.'")';
$resultat = $this -> _db -> prepare($requete);
$resultat -> execute();
}
public function readInscrits() {
$requete = 'SELECT id_inscrits, nom_inscrits FROM inscrits ORDER BY id_inscrits DESC';
$resultat = $this -> _db -> query($requete);
echo '<ul>';
while($ligne= $resultat->fetch(PDO::FETCH_ASSOC)){
echo '<li>N° '.$ligne['id_inscrits'].' : '.ucfirst($ligne['nom_inscrits']).'</li>';
}
echo '</ul>';
}
public function updateInscrits($new_nom, $id) {
$requete = "UPDATE inscrits SET nom_inscrits = '".$new_nom."' WHERE id_inscrits='".$id."'";
$resultat = $this -> _db -> prepare($requete);
$resultat -> execute();
}
public function deleteInscrits($id) {
$requete = 'DELETE FROM inscrits WHERE id_inscrits ='.$id;
$this -> _db -> query($requete);
}
}