Bonjour à tous,

Je suis occupé à apprendre MVC.

Un étudiant m'a fait une démo cet après-midi, je voudrais savoir ce que vous pensez de sa façon d'utiliser le MVC et surtout savoir si cela vous semble correct ?

1) Il me dit que "index.php" correspond au controler, est-ce correct ?

2) voici le code de index.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
<?php
session_start();
 
#les variables globales
require('./includes/VariablesGlobales.php');
# Fonctions BD et Fonctions Métier 
require('./includes/fonctionsDB.php');
# Fonctions qui génèrent de l'HTML
# Elles seront appelées dans le contrôleur principal (index.php) et/ou ses actions (les autres modules) tous revient vers index
require('./includes/fonctionsHTML.php');
 
// Connexion à la base de donnée
try {
    $dbh = connexionDB();
} catch (PDOException $e) {
    erreur(1);
}
 
# Constructions des éléments HTML communs à toutes les vues
$header = header_page($titre, $css);  //$titre et $css se trouvent dans variables_gloabes.php
$menu   = menu();
$footer = footer_page($email);
 
$modules = array('login','accueil','inscription','salles','reserver','erreur'); 
// Quelle action est demandée par l'utilisateur dans l'URL ?
if (isset($_GET['module']) && in_array($_GET['module'],$modules)) {
	# Inclusion du code contrôleur correspondant à l'action demandée
	require('./modulles/' . $_GET['module'] . '.php');
} 
else {
    # Inclusion du code contrôleur de la page d'accueil
    require('./modules/accueil.php');
}
?>
Voici le code de la page fonctionsHTML.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
76
77
78
79
80
81
82
83
84
85
 
<?php
 
# Fonction qui renvoie le code HTML de l'en-tête de toutes les pages
function header_page($titre, $css) {
	$header ="";
	$header.="<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">";
	$header.="<html>\n";
	$header.="<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" >\n";
	$header.="<link rel=\"stylesheet\" type=\"text/css\" href=\"$css\" media=\"all\" >\n";
 
	$header.="<title>$titre</title>\n</head>\n";
	return $header;
}
 
# Fonction qui renvoie le code HTML du menu de toutes les pages
function menu() {
	$menu ="";
	$menu.="<ul>
			<li><a href=\"?module=acceuil\">Accueil</a></li>
			<li><a href=\"?module=salles\">Reserver une salle</a></li>
			";
	if (isset($_SESSION['utilisateur'])) {
		$user = $_SESSION['utilisateur'];
		if($user->isAdministrateur){
			$menu.="<li><a href=\"?module=inscription\">Inscrire un nouveau membre</a></li>";
		}
	}
		$menu.="<li><a href=\"logout.php\">Deconnexion</a></li>";
	$menu.="</ul>";
	return $menu;
}
 
// Fonction qui renvoie le code HTML du pied de toutes les pages
function footer_page($email) {
	$footer ="";
	$footer.="<strong> date du jour" . date("j/m/Y") ." :: </strong>";
	# ! adresse email non cryptée : spam possible
	$footer.="<a href=\"mailto:";
	$footer.=$email;
	$footer.="\">";
	$footer.=$email;
	$footer.="</a>\n";
	return $footer;
}
 
 
 
# Fonction qui renvoie le code HTML du formulaire d'ajout d'un utilisateur
function form_inscription() {
	$form ='
	<form action="#" method="post">
	<p>Matricule :<input type="text" name="matricule" /></p>
	<p>Mot de passe : <input type="text" name="mdp" /></p>
	<p>Nom :<input type="text" name="nom" /></p>
	<p>Prenom :	<input type="text" name="prenom" /></p>
	<p>email :	<input type="text" name="email" /></p>
	<p>Administrateur : <input type="checkbox" name="administrateur" value="0" unchecked/></p>
	<p><input type="submit" value="Enregistrer"></p>
    </form>
	';
	return $form;
}
 
 
 
# Fonction qui renvoie le code HTML du formulaire de login
function form_login() {
	$form ='
	<form action="#" method="post">
	<p>Matricule : <input type="text" name="matricule" /></p>
	<p>Mot de passe : <input type="password" name="mdp" /></p>
	<p><input type="submit" value="Se connecter"></p>
    </form>
	';
	return $form;
}
 
function boite_erreur($html) {
    print'<div id="msg_erreur"><h3>Une ou plusieurs erreurs se sont produites :</h3>';
    print $html;
    print'</div>';
}
 
?>
et voici le code de la page inscription.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
 
<?php
// Connexion à la base de donné
try {
	$dbh = connexionDB();
} catch (PDOException $e) {
	erreur(1);
}
 
if (isset($_POST['matricule']) && isset($_POST['mdp']) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) ) {
 
	enregistrementUtilisateur($dbh, $matricule, $mdp, $nom, $prenom, $email, $_POST['souvenir']);
	print "<p>Enregistrement reussie</p>";
	header('location: ?module=accueil');
 
}else{
	boite_erreur("<p>Erreur, Aucun champ ne doit être vide!!!</p>");
}
 
form_inscription();
 
?>
Je me demandais donc si cette méthode MVC était correcte ?

Merci d'avance.

bee