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:
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-config.inc.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-controller.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-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
 
<!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-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
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) . '">&laquo;</a>&nbsp;';
  }
  else
  {
    $resultat .= '<span class="iPage">&laquo;</span>&nbsp;';
  }
 
  // 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 .= '&nbsp;<strong><div class="aPage"><span class="aPageTtl">PAGE <</span>' . $i . '<span class="aPageTtl">> DE '. $nb_pages .'</span></div></strong>&nbsp;';
    }
    else
    {
      $resultat .= '&nbsp;<a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES) .'?numeroPage='. $i .'" title="Consulter la page '. $i . '">' . $i . '</a>&nbsp;';
    }
  }
 
  // page suivante
  if($numero_page_courante < $nb_pages)
  {
    $resultat .= '&nbsp;<a class="linkPage" href="'. htmlspecialchars($_SERVER['PHP_SELF']) .'?numeroPage='. ($numero_page_courante + 1) .'" title="Consulter la page '. ($numero_page_courante + 1) . ' !">&raquo;</a>&nbsp;';
  }
  else
  {
    $resultat .= '&nbsp;<span class="iPage">&raquo;</span>';
  }
 
 
  // On retourne le resultat
  return $resultat;
}
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
 
<?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'); ?>
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.