Il fonctionne sur le modèle VMC.
Page controller :
include("model.php");
include("view.php");
class Controller {
private $view;
private $model;
private $paramGet;
public function __construct() {
$this->view = new View();
$this->model = new Model();
$this->paramGet = (!empty($_GET))?$_GET:array('action'=>'home');
$this->paramPost = (!empty($_POST))?$_POST:null;
}
public function dispatch(){
if ($this->paramPost) {
$method = $this->paramPost['action'];
$this->model->$method($this->paramPost);
}
switch ($this->paramGet['action']) {
case 'home':
$this->view->displayHome();
break;
case 'liste':
$liste = $this->model->getList();
$this->view->displayList($liste);
break;
case 'ajouter':
$parmForm = $this->model->ajouter();
$this->view->displayAjouter($parmForm);
break;
case 'modifier':
$this->view->displayModifier($_GET);
break;
case 'supprimer':
$this->model->supprimer($_GET);
break;
default:
$this->view->displayHome();
break;
}
}
}
Page model :
class Model {
private $connection;
private $requete;
public function __construct(){
define('SERVER','localhost');
define('USER','root');
define('PASSWORD','');
define('BASE','table');
// Instanciation d'un nouvel objet PDO
// Connexion au serveur et test
try {
$this->connection = new PDO("mysql:host=".SERVER.";dbname=".BASE, USER, PASSWORD);
}
catch (Exception $e) {
die('Erreur : ' .$e->getMessage());
}
// Forcer l'encodage de PDO
$this->connection->exec("SET CHARACTER SET utf8");
}
public function getList() {
$this->requete="SELECT * FROM prospects";
$liste=null;
try {
// exécution de la requête
$resultat=$this->connection->query($this->requete);
if ($resultat) {
$liste=$resultat->fetchAll(PDO::FETCH_NUM);
}
}
catch (Exception $e) {
die('Erreur : ' . $e->getMessage());
}
return $liste;
}
public function ajouter($parmForm) {
$sql='INSERT INTO prospects VALUES ("", :parm1, :parm2, :parm3, :parm4, :parm5, :parm6)';
$this->requete = $this->connection->prepare($sql);
$this->requete->bindParam(':parm1', $parmForm['parm1']);
$this->requete->bindParam(':parm2', $parmForm['parm2']);
$this->requete->bindParam(':parm3', $parmForm['parm3']);
$this->requete->bindParam(':parm4', $parmForm['parm4']);
$this->requete->bindParam(':parm5', $parmForm['parm5']);
$this->requete->bindParam(':parm6', $parmForm['parm6']);
$this->executeTryCatch();
}
public function modifier($parmForm) {
$this->requete = 'UPDATE prospects SET nom=:parm1, prenom=:parm2, adresse=:parm3, cp=:parm4, ville=:parm5, commentaire=:parm6 WHERE id=:parm0';
$this->requete = $this->connection->prepare($this->requete);
$this->requete->bindParam(':parm0', $parmForm['parm0']);
$this->requete->bindParam(':parm1', $parmForm['parm1']);
$this->requete->bindParam(':parm2', $parmForm['parm2']);
$this->requete->bindParam(':parm3', $parmForm['parm3']);
$this->requete->bindParam(':parm4', $parmForm['parm4']);
$this->requete->bindParam(':parm5', $parmForm['parm5']);
$this->requete->bindParam(':parm6', $parmForm['parm6']);
$this->executeTryCatch();
}
public function supprimer($parmForm) {
$this->requete = 'DELETE FROM prospects WHERE id=:parm0';
$this->requete = $this->connection->prepare($this->requete);
$this->requete->bindParam(':parm0', $parmForm['parm0']);
$this->executeTryCatch();
header('Location: http://localhost/php/crm/index.php?page=User&action=liste');
}
private function executeTryCatch() {
try {
$this->requete->execute();
}
catch (Exception $e) {
die ('Erreur : ' . $e->getMessage());
}
// Ferme le curseur, permettant à la requête d'être de nouveau exécutée
$this->requete->closeCursor();
}
}
Page view :
class View {
// Attribut page
private $page;
// Conctructeur
public function __construct(){
$this->page = $this->searchHTML('header');
$this->page .= $this->searchHTML('nav');
}
// Affichage de la page Accueil
public function displayHome(){
$this->page .= "<h1>Je suis sur la page d'Accueil</h1>";
echo $this->display();
}
// Affichage de la liste d'enregistrements
public function displayList($liste){
$this->page .="<h1>Je suis sur la liste des prospects</h1>";
// On stock les données dans la variable $tableau
$tableau = '<div class="container">'
. '<table class="table table-striped table-bordered">'
. '<thead>'
. '<th>id</th><th>Nom</th><th>Prénom</th><th>Adresse</th><th>Code Postal</th><th>Ville</th><th>Commentaire</th><th>Modification</th><th>Suppression</th>'
. '</thead><tbody>';
// On boucle sur la liste et on ajouter une ligne à chaque boucle
foreach ($liste as $ligne) {
$tableau .= "<tr><td>$ligne[0]</td>"
."<td>$ligne[1]</td>"
."<td>$ligne[2]</td>"
."<td>$ligne[3]</td>"
."<td>$ligne[4]</td>"
."<td>$ligne[5]</td>"
."<td>$ligne[6]</td>"
."<td><a href='index.php?action=modifier&parm0=$ligne[0]&parm1=$ligne[1]&parm2=$ligne[2]&parm3=$ligne[3]&parm4=$ligne[4]&parm5=$ligne[5]&parm6=$ligne[6]'><span class='glyphicon glyphicon-pencil'></span></a></td>"
."<td><a href='index.php?action=supprimer&parm0=$ligne[0]&parm1=$ligne[1]&parm2=$ligne[2]&parm3=$ligne[3]&parm4=$ligne[4]&parm5=$ligne[5]&parm3=$ligne[6]'><span class='glyphicon glyphicon-remove'></span></a></td></tr>";
}
// On ferme le tableau
$tableau .="</tbody></table></div>";
$this->page .= $tableau;
echo $this->display();
}
// Affichage du footer
public function display(){
$this->page .= $this->searchHTML('footer');
echo $this->page;
}
// Extraction des données d'un fichier
// parm String filename : nom du fichier dont il faut extraire le contenu
private function searchHTML($filename){
$content = file_get_contents('html/'.$filename.'.html');
return $content;
}
// Affichage d'un enregistrement dans un formulaire
private function displayForm($paramaters){
$this->page .= $this->searchHTML('form');
$this->page = str_replace("{readonly}", $paramaters["readonly"], $this->page);
$this->page = str_replace("{parm0}", $paramaters["parm0"], $this->page);
$this->page = str_replace("{parm1}", $paramaters["parm1"], $this->page);
$this->page = str_replace("{parm2}", $paramaters["parm2"], $this->page);
$this->page = str_replace("{parm3}", $paramaters["parm3"], $this->page);
$this->page = str_replace("{parm4}", $paramaters["parm4"], $this->page);
$this->page = str_replace("{parm5}", $paramaters["parm5"], $this->page);
$this->page = str_replace("{parm6}", $paramaters["parm6"], $this->page);
$this->page = str_replace("{action}", $paramaters["action"], $this->page);
$this->page = str_replace("{lib_action}", $paramaters["lib_action"], $this->page);
echo $this->display();
}
// Ajouter d'un utilisateur
public function displayAjouter(){
$this->page .="<h1>Je suis sur la page d'ajout d'un prospect.</h1>";
$paramaters = array(
"readonly"=>"",
"parm0"=>"",
"parm1"=>"",
"parm2"=>"",
"parm3"=>"",
"parm4"=>"",
"parm5"=>"",
"parm6"=>"",
"action"=>"ajouter",
"lib_action"=>"Ajouter"
);
$this->displayForm($paramaters);
}
// Modifier un utilisateur
public function displayModifier($paramGet){
$this->page .="<h1>Je suis sur la page de modifier un prospect.</h1>";
$paramaters = array(
"readonly"=>"",
"parm0"=>$paramGet['parm0'],
"parm1"=>$paramGet['parm1'],
"parm2"=>$paramGet['parm2'],
"parm3"=>$paramGet['parm3'],
"parm4"=>$paramGet['parm4'],
"parm5"=>$paramGet['parm5'],
"parm6"=>$paramGet['parm6'],
"action"=>"modifier",
"lib_action"=>"Modifier"
);
$this->displayForm($paramaters);
}
// Supprimer un utilisateur
public function displaySupprimer($paramGet){
$this->page .="<h1>Je suis sur la page de suppression d'un prospect.</h1>";
$paramaters = array(
"readonly"=>"",
"parm0"=>$paramGet['parm0'],
"parm1"=>$paramGet['parm1'],
"parm2"=>$paramGet['parm2'],
"parm3"=>$paramGet['parm3'],
"parm4"=>$paramGet['parm4'],
"parm5"=>$paramGet['parm5'],
"parm6"=>$paramGet['parm6'],
"action"=>"supprimer",
"lib_action"=>"Supprimer"
);
$this->displayForm($paramaters);
}
}
Le tout s'affiche dans un formulaire : form.html :
<div class="container">
<div class="panel-heading">
<h2>Fiche</h2>
</div>
<div class="panel-body">
<form action="index.php?page=User&action=liste" class="form-vertical" method="post">
<fieldset>
<div class="form-group">
<label for="parm0">Identifiant</label>
<input class="form-control" id="parm0" name="parm0" type="text" readonly value="{parm0}"/>
</div>
<div class="form-group">
<label for="parm1">Nom</label>
<input class="form-control" id="parm1" name="parm1" type="text" {readonly} value="{parm1}"/>
</div>
<div class="form-group">
<label for="parm2">Prénom</label>
<input class="form-control" id="parm2" name="parm2" type="text" {readonly} value="{parm2}"/>
</div>
<div class="form-group">
<label for="parm3">Adresse</label>
<input class="form-control" id="parm3" name="parm3" type="text" {readonly} value="{parm3}"/>
</div>
<div class="form-group">
<label for="parm4">Code Postal</label>
<input class="form-control" id="parm4" name="parm4" type="text" {readonly} value="{parm4}"/>
</div>
<div class="form-group">
<label for="parm5">Ville</label>
<input class="form-control" id="parm5" name="parm5" type="text" {readonly} value="{parm5}"/>
</div>
<div class="form-group">
<label for="parm6">Commentaire</label>
<input class="form-control" id="parm6" name="parm6" type="text" {readonly} value="{parm6}"/>
</div>
</fieldset>
<fieldset>
<div class="form-group">
<button class="btn btn-primary" type="submit" id="action" name="action" value="{action}">{lib_action}</button>
</div>
</fieldset>
</form>
</div>
</div>
Pour la partie ajouter un prospect, il n'y a pas de pb. Par contre quant il suffit de modifier et de supprimer, cela ne marche pas.Merci d'avance pour vos aides.