Bonjour,
Pour mon stage, je dois développer une application en PHP, mais je me retrouve coincé avec les variables POST pour communiquer avec la base de données.

Dans ma base de données (MySQL) j'ai 4 tables : Utilisateur, Site, Connexion et Modification

j'ai essayé d'utiliser un MVC pour que mon application sois propre.

Pour la partie vue:

J'ai utilisé le moteur de template PHPBB.

Pour la partie modèle:

j'ai donc un fichier "class.php" contenant mes 4 classes (Utilisateur,Site,Connexion,Modification) et un fichier "classBaseDonnees.php", contenant (utilisateurDB,SiteDB,ConnexionDB,ModificationDB),
ainsi pour rechercher un utilisateur on appelle la méthode "rechercher" de "UtilisateurDB" et elle nous revoit un objet "Utilisateur", de la même façon pour insérer un Utilisateur, j’appelle la méthode "inserer" de UtilisateurDB et lui passe en paramètre un utilisateur.

Ce qui me perturbe est la partie contrôleur:

J'ai un fichier IndexAdmin.php qui teste l'existence de différente variables POST et dans les templates, chaque bouton est un "input sumbit" dans un "<form>" associé a un " input hidden" pour envoyer une information.
Par exemple pour passer de la page de gestion des sites, à celle d'ajout d'un site, j'ai un "<form method='Post' action='index.php'>" contenant mon submit avec la valeur "ajouter" et un "input hidden" contenant name="affichage" et value="AffichageAjout"

le fichier index.php vérifie l’existence de affichage grâce à "isset" puis revoit le fichier template correspondant à la valeur du $_POST['affichage']

Le problème est le suivant dans la partie de l'administrateur: Dans une des pages j'ai à gauche la liste des utilisateurs. Lorsque l'on clique sur un utilisateur, ses sites s'affichent à droite. Mais je suis conscient qu'utiliser un formulaire pour chaque ligne ne serait pas ergonomique du tout, j'ai pensé à utiliser "onClick" de javascript, seulement je ne vois pas du tout comment rappeler "index.php" a partir d'un onClick en lui donnant des variables $POST

Auriez-vous des conseils, des méthodes sur la façon de procéder?

ps: je suis désolé pour la longueur de mon post, j'ai tenté d'être le plus clair et précis possible

Voici mon code:

indexAdmin.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
 
<?php
include('template.php');
include('classBaseDonnees.php');
include('moteur.php');
session_start();
 
//~ Cree tous les objets necessaires aux acces a la base de donnees, les placent en global pour que toutes les fonctions y aient accès
$GLOBALS['c']=new ConnectionBD($SQLport,$SQLnombase,$SQLidentifiant,$SQLmotdepasse);
$GLOBALS['m']=new ModificationDB($c);
$GLOBALS['s']=new SiteDB($c);
$GLOBALS['co']=new ConnexionDB($c);
$GLOBALS['udb']=new UtilisateurDB($c,$s,$co,$m);
$listeudb=$GLOBALS['udb']->rechercher();
 
if(isset($_POST['affichage'])){
if($_POST['affichage']=='AffichageHistorique'){
afficherConnexions();}
if($_POST['affichage']=='AffichageLDAP'){
afficherLDAP();}	
if($_POST['affichage']=='AffichageBackOffice'){
	afficherBackOffice();}
if($_POST['affichage']=='Connexions'){
afficherConnexions();}
if($_POST['affichage']=='Modifications'){
afficherModifications();}		
	}
 
else{afficherConnexions();}
 
function afficherConnexions(){
	//~ Moteur de Templates phpBB 
	//~ Définit le chemin des templates
	$template=new Template('./');
	//~ Associe les templates à une variable 
	$template->set_filenames(array('body'=>'AffichageAdminHistorique.html'));
	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
	//~ Associe les champs des templates aux valeurs de utilisateur
	$template->assign_vars(array('titre'=> 'Connexions',
								 'Prenom'=>$utilisateur[0]->getPrenom(),
								 'Nom'=>$utilisateur[0]->getNom()));
	//~ Recherche tous les sites enregistrés par cet utilisateur
	$connexions=$GLOBALS['co']->rechercher();
	//~ Associe aux champs du block les différentes instances de Site 
	for ($k=0;$k<count($connexions);$k++){
		$utilisateur=$GLOBALS['udb']->rechercherID($connexions[$k]->getUtilisateur())[0];
		$template->assign_block_vars('historique', array('prenom' => $utilisateur->getPrenom(),
														 'nom' => $utilisateur->getNom(),
														 'date' => $connexions[$k]->getDate()
 
 
 
		));
	}
 
	//~ Affiche le template 
	$template->pparse('body');  
}
 
 
function afficherModifications(){
	//~ Moteur de Templates phpBB 
	//~ Définit le chemin des templates
	$template=new Template('./');
	//~ Associe les templates à une variable 
	$template->set_filenames(array('body'=>'AffichageAdminHistorique.html'));
	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
	//~ Associe les champs des templates aux valeurs de utilisateur
	$template->assign_vars(array('Prenom'=>$utilisateur[0]->getPrenom(),
								 'titre'=> 'Modifications',
								 'Nom'=>$utilisateur[0]->getNom()));
 
	//~ Recherche tous les sites enregistrés par cet utilisateur
	$modifications=$GLOBALS['m']->rechercher();
	//~ Associe aux champs du block les différentes instances de Site 
	for ($k=0;$k<count($modifications);$k++){
		$utilisateur=$GLOBALS['udb']->rechercherID($modifications[$k]->getUtilisateur())[0];
		$template->assign_block_vars('modifications', array('prenom' => $utilisateur->getPrenom(),
														 'nom' => $utilisateur->getNom(),
														 'libelle'=>$modifications[$k]->getLibelleSite(),
														 'date' => $modifications[$k]->getDate(),
														 'type' => $modifications[$k]->getType()
 
 
 
		));
	}
	$template->pparse('body');  }
 
	function afficherBackOffice(){
	//~ Moteur de Templates phpBB 
	//~ Définit le chemin des templates
	$template=new Template('./');
	//~ Associe les templates à une variable 
	$template->set_filenames(array('body'=>'AffichageAdminBackOffice.html'));
	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
	//~ Associe les champs des templates aux valeurs de utilisateur
	$template->assign_vars(array('Prenom'=>$utilisateur[0]->getPrenom(),
								 'Nom'=>$utilisateur[0]->getNom()));
	//~ Recherche tous les sites enregistrés par cet utilisateur
	$utilisateurs=$GLOBALS['udb']->rechercher();
	//~ Associe aux champs du block les différentes instances de Site 
	for ($k=0;$k<count($utilisateurs);$k++){
		$template->assign_block_vars('utilisateurs', array(	'prenom'=>$utilisateurs[$k]->getPrenom(),
															'nom' => $utilisateurs[$k]->getNom(),
 
 
 
 
		));
	}
	$template->pparse('body');  
}
 
 
	function afficherLDAP(){
	//~ Moteur de Templates phpBB 
	//~ Définit le chemin des templates
	$template=new Template('./');
	//~ Associe les templates à une variable 
	$template->set_filenames(array('body'=>'AffichageAdminBackOffice.html'));
	//~ Recupere dans l'utilisateur propriétaire de la session dans la base de données 
	$utilisateur=$GLOBALS['udb']->rechercherID($_SESSION['id']);
	//~ Associe les champs des templates aux valeurs de utilisateur
	$template->assign_vars(array('Prenom'=>$utilisateur[0]->getPrenom(),
								 'Nom'=>$utilisateur[0]->getNom()));
	//~ Recherche tous les sites enregistrés par cet utilisateur
	$modifications=$GLOBALS['m']->rechercher();
	//~ Associe aux champs du block les différentes instances de Site 
	for ($k=0;$k<count($connexions);$k++){
		$utilisateur=$GLOBALS['udb']->rechercherID($modifications[$k]->getUtilisateur())[0];
		$template->assign_block_vars('historique', array('prenom' => $utilisateur->getPrenom(),
														 'nom' => $utilisateur->getNom(),
														 'libelle'=>$connexions[$k]->getLibelle(),
														 'date' => $connexions[$k]->getDate(),
														 'type' => $connexions[$k]->getType()
 
 
 
		));
	}
 
 
 
 
	//~ Affiche le template 
	$template->pparse('body');  
}
?>
voici le template, les sites sont censés être dans le #sites
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
<!DOCTYPE html>
<html>
	<head>
		<title>Titre Page</title>
		<link rel="stylesheet" href="AffichageAdmin.css">
		<meta charset="utf-8">
		<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
		<script type="text/javascript" src="affichage.js"></script>
	</head>
	<body>
		<h1 id="utilisateur">{Prenom} {Nom}</h1>
		<div id="date">Erreur Date</div>
		<!--Menu de base permettant d'acceder aux différentes interfaces -->
            <ul id="sous_menu">
              <li>
 
<!--
                <button id="AffichageHistorique"  onClick="AffichageHistorique()" >Historique</button>
-->
        <form method='POST' action=indexAdmin.php>
			<input type="submit"  value="Historique">
			<input type="hidden"  name="affichage"  value='AffichageHistorique'>
		</form>
              </li>
              <li>
		<form method='POST' action=indexAdmin.php>
			<input type="submit"  value="LDAP">
			<input type="hidden"  name="affichage"  value='AffichageLDAP'>
		</form>
<!--
                 <button  id="AffichageLDAP" onClick="AffichageLDAP()">LDAP</button>
-->
              </li>
              <li>
                 <button class='actif' id="AffichageBackOffice" >Back Office</button>
              </li>
            </ul>
           	<!-- Zone de droite modifiée selon les actions de l'administrateur -->
              <div id="affichage">
				<div id="utilisateurs">
					<h2>Utilisateurs</h2>
					<!-- BEGIN utilisateurs -->
				<div>{utilisateurs.prenom} {utilisateurs.nom}</div>
				 <!-- END utilisateurs -->
				</div>
				<div id="sites">
					<h2>Gestion des Liens</h2>
				</div>
                <script>
					afficherHorloge();
                </script>
 
	</body>
</html>