Outils pour utilisateurs

Outils du site


bloc2:prog:web:mvc-exemple

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc2:prog:web:mvc-exemple [2023/03/29 14:34] – supprimée - modification externe (Unknown date) 127.0.0.1bloc2:prog:web:mvc-exemple [2023/04/11 11:50] (Version actuelle) – [Vue] admin
Ligne 1: Ligne 1:
 +====== Exemple MVC en PHP ======
  
 +===== Modèle =====
 +Exemple de modèle d'accès aux données 
 +<code php dataAccess.php>
 +<?php
 +
 +define("HOST", '127.0.0.1');
 +define("DB", 'maBdD');
 +define("USER", 'user1');
 +define("PASS", 'GabuZoMeu');
 +
 +// Exécute une requête SELECT et retourne le résultat sous la forme d'un tableau
 +function pdo_query($sql) {
 +    try {
 +        // ouverture d'une connexion vers le serveur de BdD
 +        $cnx = new PDO('mysql:dbname=' . DB . ';host=' . HOST . ';charset=UTF8', USER, PASS);
 +
 +        // exécution de la requête
 +        $stmt = $cnx->query($sql);
 +        if ($stmt !== false) {
 +            // extraction des résultats dans un tableau
 +            $result = $stmt->fetchAll();
 +        } 
 +        else {
 +            $result = false;
 +        }
 +    } catch (Exception $e) {
 +        $result = false;
 +    }
 +
 +    // fermeture de la connexion
 +    unset($cnx);
 +
 +    return $result;
 +}
 +
 +// Exécute une requête de mise à jour (insert, update ou delete) et retourne 
 +// le nombre de lignes touchées ou false
 +function pdo_exec($sql) {
 +    try {
 +        // ouverture d'une connexion vers le serveur de BdD
 +        $cnx = new PDO('mysql:dbname=' . DB . ';host=' . HOST . ';charset=UTF8', USER, PASS);
 +
 +        // exécution de la requête
 +        $result = $cnx->exec($sql);
 +    } catch (Exception $e) {
 +        $result = false;
 +    }
 +
 +    // fermeture de la connexion
 +    unset($cnx);
 +
 +    return $result;
 +}
 +</code>
 +===== Vue =====
 +Exemple de vues décomposées
 +<code php vue-charte.php>
 +<!doctype html> 
 +<html lang="fr">
 +  <head>
 +    <meta charset="utf-8">
 +      <link rel="stylesheet" href="style.css">
 +      <title>MVC Exemple</title>
 +  </head>
 +  <body>
 +    <nav>
 +      <?php include $menu; ?>
 +    </nav>
 +    <main>
 +      <?php include $contenu; ?>
 +    </main>
 +  </body>
 +</html>
 +</code>
 +<code html vue-menu.php>
 +<h2>Menu</h2>
 +<ul>
 +  <li><a href="index.php?action=demande1">Fonctionnalité n°1</a></li>
 +  <li><a href="index.php?action=demande2">Fonctionnalité n°2</a></li>
 +</ul>
 +</code>
 +<code html vue-accueil.php>
 +<h1>Page d'accueil</h1>
 +Le lorem ipsum est, en imprimerie, une suite de mots sans signification 
 +utilisée à titre provisoire pour calibrer une mise en page, le texte 
 +définitif venant remplacer le faux-texte dès qu'il est prêt ou que la 
 +mise en page est achevée. Généralement, on utilise un texte en faux latin, 
 +le Lorem ipsum ou Lipsum.
 +</code>
 +
 +===== Contrôleur =====
 +Exemple de contrôleur
 +<code php index.php>
 +<?php 
 + include "dataAccess.php"; 
 +
 + $action = filter_input(INPUT_GET, 'action', FILTER_SANITIZE_ENCODED);
 +
 + if ($action == 'demande1') {
 + // accès aux données
 + $sql1 = 'SELECT col1 col2, FROM table1';
 + $data = pdo_query($sql1);
 + if ($data === false) {
 + $contenu = 'vue-erreur.php';
 + }
 + else {
 + $contenu = 'vue-demande1.php';
 + }
 + }
 + elseif ($action == 'demande2') {
 + // accès aux données
 + $sql2 = 'SELECT col1 col2, FROM table2';
 + $data = pdo_query($sql2);
 + if ($data === false) {
 + $contenu = 'vue-erreur.php';
 + }
 + else {
 + $contenu = 'vue-demande2.php';
 + }
 + }
 + else {
 + $contenu = 'vue-accueil.php';
 + }
 +
 + $menu = 'vue-menu.php';
 + include 'vue-charte.php';
 +</code>