Bonjour. J'ai tenté de créer un listage de données sur le principe du MVC qui fonctionne bien.
Ce topic a pour but de m'initier à l'Orienté Objet. Franchement, j'ai fais beaucoup de lectures
mais je n'arrive pas à déterminer par où commencer pour appliquer le OO dans mon code.
J'aurais besoin des incides. Peut-être aussi me dire si je l'ai bon pour le MVC du au moins
à la base. J'apprends plus par un exemple. Disons, des indices.
member.php:
member-config.inc.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 require(dirname(__FILE__).'/member-config.inc.php'); require(dirname(__FILE__).'/member-model.inc.php'); require(dirname(__FILE__).'/member-controller.inc.php'); require(dirname(__FILE__).'/member-view.inc.php');
member-controller.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 define('DB_SERVEUR', 'localhost'); define('DB_LOGIN','root'); define('DB_PASSWORD','pass'); define('DB_NOM','cms'); define('DB_TABLE','cms_member'); define('DB_DSN','mysql:host='. DB_SERVEUR .';dbname='. DB_NOM); define('MAX_PAR_PAGE', 1);
member-layout.inc.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 <?php //Contrôleur de l'application // Objets de connexion et de manipulatin de la BDD $oPDO = null; $oPDOStatement = null; // Tableau stockant les informations $aInfos = array(); // Tableau stockant les items récupérés de la BDD $aListe = array(); // Tableau stockant les erreurs générées $aErreurs = array(); // Nombre de ithems enregistrés dans la BDD $iNombre = 0; // Numéro de la page courante $iNumeroDePageCourante = 1; // Offset à partir duquel on récupère les données dans la BDD $iOffsetSelection = 0; // Contrôle de la pagination if(!empty($_GET['numeroPage']) && is_numeric($_GET['numeroPage']) && ($_GET['numeroPage']>1)) { $iNumeroDePageCourante = intval($_GET['numeroPage']); $iOffsetSelection = ($iNumeroDePageCourante - 1) * MAX_PAR_PAGE; } // Initialisation de la connexion avec la base de données $oPDO = PDOConnect(DB_DSN, DB_LOGIN, DB_PASSWORD); // Comptage du nombre en base de données $oPDOStatement = $oPDO->query('SELECT COUNT(1) AS nombre FROM '. DB_TABLE); $oPDOStatement->setFetchMode(PDO::FETCH_ASSOC); $aInfos = $oPDOStatement->fetch(); $iNombre = intval($aInfos['nombre']); // Récupération des items en fonction de la pagination if (sizeof($iNombre)>0) { $oPDOStatement = $oPDO->prepare( 'SELECT identification,description,creation FROM '. DB_TABLE .' ORDER BY creation DESC LIMIT :offset, '. MAX_PAR_PAGE ); $oPDOStatement->bindParam(':offset', $iOffsetSelection, PDO::PARAM_INT); $oPDOStatement->execute(); // Récupération des résultats sélectionnés dans le tableau $aListe $aListe = $oPDOStatement->fetchAll(PDO::FETCH_OBJ); } // Fermeture de la connexion SQL $oPDOStatement = null; $oPDO = null;
member-model.inc.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <!DOCTYPE html> <html> <head> <title><?php echo $title ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="created" content="Thu, 04 Apr 2013 20: 51: 32 GMT"> <link href="member-style.css" rel="stylesheet" type="text/css"> </head> <body> <?php echo $content ?> </body> </html>
member-view.inc.php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 <?php /** * Ce fichier contient toutes les fonctions * utiles à l'application **/ function PDOConnect($sDbDsn, $sDbLogin, $sDbPassword) { try { $oPDO = new PDO($sDbDsn, $sDbLogin, $sDbPassword); } catch (PDOException $e) { die('Une erreur interne est survenue'); } $oPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $oPDO; } function paginer($nb_results, $nb_results_p_page, $numero_page_courante, $nb_avant, $nb_apres) { // Initialisation de la variable a retourner $resultat = ''; // nombre total de pages $nb_pages = ceil($nb_results / $nb_results_p_page); // nombre de pages avant $avant = $numero_page_courante > ($nb_avant + 1) ? $nb_avant : $numero_page_courante - 1; // nombre de pages apres $apres = $numero_page_courante <= $nb_pages - $nb_apres ? $nb_apres : $nb_pages - $numero_page_courante; // page precedente if ($numero_page_courante > 1) { $resultat .= '<a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF']) .'?numeroPage='. ($numero_page_courante - 1) .'" title="Page précédente '. ($numero_page_courante - 1) . '">«</a> '; } else { $resultat .= '<span class="iPage">«</span> '; } // affichage des numeros de page for ($i = $numero_page_courante - $avant; $i <= $numero_page_courante + $apres; $i++) { // page courante if ($i == $numero_page_courante) { $resultat .= ' <strong><div class="aPage"><span class="aPageTtl">PAGE <</span>' . $i . '<span class="aPageTtl">> DE '. $nb_pages .'</span></div></strong> '; } else { $resultat .= ' <a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES) .'?numeroPage='. $i .'" title="Consulter la page '. $i . '">' . $i . '</a> '; } } // page suivante if($numero_page_courante < $nb_pages) { $resultat .= ' <a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF']) .'?numeroPage='. ($numero_page_courante + 1) .'" title="Consulter la page '. ($numero_page_courante + 1) . ' !">»</a> '; } else { $resultat .= ' <span class="iPage">»</span>'; } // On retourne le resultat return $resultat; }
J'ai vraiment besoin d'un coup de main. Je ne cherche pas à ce qu'on fasse mon code. Avec le temps, j'ai compris à séparer le PHP de l'affichage. Quoique je ne suis pas certain pour le contrôleur et le modèle. Mais, mon principal but est l'Orienté Objet de base. Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php $title = "Coin des artistes" ?> <?php ob_start(); ?> <h1>Profils</h1> <?php if ($iNombre > 0) : ?> <ul> <li><?php echo $iNombre; ?> ARTISTE<?php if ($iNombre > 1) : ?>S<?php endif; ?></li> </ul> <hr> <?php foreach ($aListe as $oItem) : ?> <div> <?php echo htmlspecialchars($oItem->identification); ?> : <?php echo htmlspecialchars($oItem->description); ?> </div> <hr> <?php endforeach; ?> <?php if ($iNombre > MAX_PAR_PAGE) : ?> <?php echo paginer($iNombre, MAX_PAR_PAGE, $iNumeroDePageCourante, 0, 0); ?> <?php endif; ?> <?php else : ?> <p> Aucun artiste enregistré </p> <?php endif; ?> <?php $content = ob_get_clean(); ?> <?php require(dirname(__FILE__).'/member-layout.inc.php'); ?>
Partager