Bonjour,

Etant confronté à un site prenant une ampleur assez considérable, je migre celui-ci en MVC.

Cependant, j'ai quelque soucis à comprendre la différence entre le contrôleur et le modèle

Voici un exemple concret où je désirerais que l'on m'explique comment départager mon code entre un contrôleur et un modèle.

P.S : Je ne pose que le minimum.

1) je crée un classe de connexion avec des requêtes de bases

Code php : 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
 
<?php
define('DB_HOST','localhost');
define('DB_USER','****');
define('DB_PASS','***');
define('DB_NAME','****');
class DbConnect{
    private $host = DB_HOST;
    private $user = DB_USER;
    private $pass = DB_PASS;
    private $dbname = DB_NAME;
    private $stmt;
    public $db;
 
    public function __construct(){
        $dsn = 'mysql:host='.$this->host.';dbname='.$this->dbname;
        $options = array(
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
        );
        // Create a new PDO instanace
        try{
            $this->db = new PDO($dsn, $this->user, $this->pass, $options);
        }
        // Catch any errors
        catch(PDOException $e){
            die($e->getMessage());
        }
    }
    public function query($query){
        $this->stmt = $this->db->prepare($query);
    }
    public function execute(){
        return $this->stmt->execute();
    }
    public function resultset(){
        $this->execute();
        return $this->stmt->fetchAll(PDO::FETCH_OBJ);
    }
    public function single(){
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_OBJ);
    }    
}
?>

2) Mon login en entrée de la page d'accueil si pas de session ouverte:
(C'est là ou j'ai du mal à différencier model et controller)

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
$DB = new DbConnect();
$error = '';
if(!empty($_POST)){
    $DB->query('SELECT * FROM users WHERE u_login="admin"');
    $row = $DB->single();
    echo "<pre>";
    print_r($row);
    echo "</pre>";
}else{
    $error .= ' Veuillez entrer vos identifiants'; 
}

Et ma partie view du mvc que je comprends.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<form action="login" name="login" method="post">
    <input type="text" name="login">
    <input type="password" name="pswd">
    <input type="submit" value="Connexion">
</form>
Merci d'avance,
David