Bonjour à tous,

J'ai commencé à développer un espace membre générique pour une utilisation future en essayant d'appliquer au mieux les principes du patron MVC.

Tout fonctionne bien, j'ai développé les fonctionnalités suivantes :

  • inscription d'un membre,
  • connexion d'un membre,
  • afficher son profil,
  • modifier son profil.


J'utilise MySQL pour stocker les informations des membres.

Je me suis attaqué à l'affichage de la liste des profils des membres et cela fonctionne bien mais je bute sur un problème :

Je trouve que le code de ma Vue (qui affiche la liste des membres) contient "trop de code php", alors qu'elle devrait contenir, en principe, que de l'HTML...

Voici mes sources :

1) la fonction du modèle "membres.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
function selectioner_liste_membres() {
 
	$pdo = PDO2::getInstance();
	$requete = $pdo->prepare("SELECT id,nom_utilisateur, adresse_email, avatar, date_inscription
		FROM membres
		");
 
	$requete->execute();
	if ($result = $requete->fetchAll(PDO::FETCH_ASSOC)) {
 
		$requete->closeCursor();
		return $result;
	}
	return false;
 
}
2) le contrôleur "afficher_liste_membres.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
<?php
if (!utilisateur_est_connecte()) {
 
	// On affiche la page d'erreur comme quoi l'utilisateur doit être connecté pour voir la page
	include CHEMIN_VUE_GLOBALE.'erreur_non_connecte.php';
 
} else {
 
 
	// on selection la liste des membres inscrits
	$liste_membres=selectioner_liste_membres();
 
	if (!empty($liste_membres)) {
 
 
 
			include CHEMIN_VUE.'liste_membres_utilisateurs.php';
 
 
	}
	else {
 
		include CHEMIN_VUE.'liste_membres_inexistante.php';
	}
 
 
}
3) la Vue "liste_membres_utilisateurs.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
<?php 
$html_liste='';
foreach($liste_membres as $num_membre=>$infos_membre) {
 
	list(,$nom_utilisateur,$adresse_email,$avatar,$date_inscription) = array_values($infos_membre);
 
	$html_liste.='<h2>Profil de '.htmlspecialchars($nom_utilisateur).'</h2>';
	$html_liste.='<table border="1"><tr><img  src="'.$avatar.'" title="Avatar de '.htmlspecialchars($nom_utilisateur).'" BORDER="2" WIDTH="'.AVATAR_LARGEUR_MAXI.'" HEIGHT="'.AVATAR_HAUTEUR_MAXI.'" /></td></tr></table>';
 
 
 
	$html_liste.='<p>';
 
	$html_liste.='<span class="label_profil">Adresse email</span> : '.htmlspecialchars($adresse_email).'<br />';
	$html_liste.='<span class="label_profil">Date d inscription</span> : '.dateFR($date_inscription);
 
}
 
 
echo $html_liste;

Ma question est : Est-il possible de recoder le contrôleur et la vue de manière à respecter la contrainte précédente que je me suis imposée?

Merci infiniment pour toute suggestion qui pourrait m'aider à résoudre ce problème !