Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 13h29   #1
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
Par défaut code correct ? à améliorer ?

voici mon code pour mon site.

étant débutant en PHP je souhaiterait que vous me conseiller et me dire ce qui ne va pas dans mon code ou ce qu'il y a à améliorer :

Code :
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
 
<?php
include_once('footer.class.php');
class Corps
{
 
        private $footer;
 
	public function __construct()
	{
		$this->footer = new Footer();
	}
 
	//cette fonction affiche le corps
	public function afficherCorps()
	{
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$connectionBDD = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
 
			//si l'attribut dans URL n'existe pas la page d'accueil est construite
			if(!isset($_GET['idPage']))
			{
				$this->accueil($connectionBDD);
			}
			else
			{	
				//corps de la page
				echo '<div id="corps">';
					echo '<p>';
						$this->rappelMenu($connectionBDD);
						$this->construireCorps($connectionBDD);
					echo '</p>';
					$this->footer->afficherFooter();
				echo '</div>';
			}
 
		}
		catch(Exception $e)
		{
			echo "Erreur :".$e->getMessage();
		}
	}
 
	//construit un titre qui se trouve dans un texte du corps de la page
	public function detailTitre($donne)
	{
		//si c'est le titre d'un texte
		if($donne['typeTexte'] == "DT")
		{
			echo '<h4>'.$donne['textePrecedent'].'</h4>';	
		}		
	}
 
	//construit le texte du coprs de la page
	public function detailTexte($donne)
	{
		//si c'est du texte simple
		if($donne['typeTexte'] == "DX")
		{
			echo "<p>".$donne['textePrecedent']."</p>";
		}
	}
 
	//construit une URL
	public function detailURL($donne,$connectionBDD)
	{
		//si c'est une URL
		if($donne['typeTexte'] == "DU")
		{	
			//si c'est un document on construit de tel sorte qu'on telecharge le document pour le regarder
			if(substr($donne['pointeVers'],0,3)=="DOC")
			{
				$sql = "SELECT * FROM insertion_job WHERE idPage='".$donne['pointeVers']."'";
				$requete = $connectionBDD->query($sql); 
				$ref = $requete->fetch();
				echo "<center><a href='word/".$ref['textePrecedent']."' target='_blank'>".$donne['textePrecedent']."</a></center>";
				echo "<center><a href='pdf/".$ref['texteSuivant']."' target='_blank'>(version pdf)</a></center><br/>";
				$requete->closeCursor();
			}
			//sinon on construit le lien qui pointe vers la page associée
			else
			{
				$id = $donne['pointeVers'];
 
				echo "<center><a href='index.php?idPage=$id'>".$donne['textePrecedent']."</a></center><br/>";	
			}
		}
	}
 
	//construit une liste numéroté
	public function detailNumerote($donne,$i)
	{
		//si le texte est numéroté
		if($donne['typeTexte'] == "DN")
		{
			$i = $i + 1;
			echo '<p class="tabulation">'.$i.'. '.$donne['textePrecedent'].'</p>';
		}
		return $i;
	}
 
	//construit une URL avec du texte qui se trouve avant le lien
	public function detailTexteUrl($donne)
	{
		//si texte avant url
		if($donne['typeTexte'] == "AU")
		{
			$id = $donne['pointeVers'];
			echo "<p>".$donne['textePrecedent']."<a href='index.php?idPage=$id'>".$donne['url']."</a></p>";
		}
	}
 
	//construit une URL avec du texte avant et apres le lien
	public function detailTexteUrlTexte($donne)
	{
		//si texte avant et apres url
		if($donne['typeTexte'] == "AP")
		{
			$id = $donne['pointeVers'];
 
			if($_GET['idPage']=="P01021")
			{
				echo "<span class='tabulation'>".$donne['textePrecedent']." "."<a href='index.php?idPage=$id' class='gras'>".$donne['url']." </a>".$donne['texteSuivant']."</span><br/>";
			}
			else
			{
				echo $donne['textePrecedent']."<a href='index.php?idPage=$id'>".$donne['url']."</a>".$donne['texteSuivant']."<br/>";
			}
		}
	}
 
	//si le tout le paragraphe d'un texte doit etre en italique
	public function detailItalique($donne)
	{
		//si texte italique
		if($donne['typeTexte'] == "DI")
		{
			echo "<span class='italique'>".$donne['textePrecedent']."</span>";
		}
	}
	//construit le corps de la page
	public function construireCorps($connectionBDD)
	{
 
		$i = 0;
		$sql = 'SELECT * FROM insertion_job WHERE idPage=\''.$_GET['idPage'].'\'AND sequence > 0 AND flag=1 ORDER BY sequence';
		$requete_1 = $connectionBDD->query($sql);
		while($donne = $requete_1->fetch())
		{
 
			$this->detailTitre($donne);
 
			$this->detailTexte($donne);
 
			$this->detailURL($donne,$connectionBDD);
 
			$i = $this->detailNumerote($donne,$i);
 
			$this->detailTexteUrl($donne);
 
			$this->detailTexteUrlTexte($donne);
 
			$this->detailItalique($donne);
		}
		$requete_1->closeCursor();
	}
 
	//cette fonction est appelée lorsqu'il faut afficher un rappel du menu et/ou sous-menu d'une rubrique
	//facilite la navigation pas besoin de revenir a une page précédente pour aller sur le lien suivant
	//vu que le menu est rappelé en haut gauche.
	public function rappelMenu($connectionBDD)
	{
		//si on se trouve sur les pages qui ont cet ID on reconstruit le menu
		if($_GET['idPage']=="P01011" OR $_GET['idPage']=="P01021" OR $_GET['idPage']=="P01031" OR $_GET['idPage']=="P01041" OR $_GET['idPage']=="P01051" OR $_GET['idPage']=="P01061" OR $_GET['idPage']=="P01071" OR $_GET['idPage']=="P01121" OR $_GET['idPage']=="P01221" OR $_GET['idPage']=="P01321" OR $_GET['idPage']=="P01421" OR $_GET['idPage']=="P01521"OR $_GET['idPage']=="DOC000" )
		{
			$j = 0;
			$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P01001\' AND typeTexte=\'DU\' ORDER BY sequence';
			$requete_1 = $connectionBDD->query($sql);
			echo '<div class="rappelMenu">';
				echo '<span class="gras">Le CV</span><br/>';
				while($donnee_1 = $requete_1->fetch())
				{
					$j = $j + 1;
					//si on pointe vers un document, on affiche 2 liens : format word et format PDF
					if(substr($donnee_1['pointeVers'],0,3)=="DOC")
					{
						$sql_2 = "SELECT * FROM insertion_job WHERE idPage='".$donnee_1['pointeVers']."'";
						$requete_2 = $connectionBDD->query($sql_2); 
						$ref = $requete_2->fetch();
						echo "<a href='word/".$ref['textePrecedent']."' target='_blank'>".$donnee_1['textePrecedent']."</a>";
						echo "<a href='pdf/".$ref['texteSuivant']."' target='_blank'>(version pdf)</a><br/>";
					}
					//sinon on pointe vers la page et les textes concernés
					else
					{
						$id = $donnee_1['pointeVers'];
						echo "<a href='index.php?idPage=$id'>".$donnee_1['textePrecedent']."</a><br/>";
					}
					//si on se retrouve dans une page qui possède cet ID on construit un sous-menu
					if( ($_GET['idPage']=="P01121" AND $j == 2) OR ($_GET['idPage']=="P01221" AND $j == 2)  OR ($_GET['idPage']=="P01321" AND $j == 2) OR ($_GET['idPage']=="P01421" AND $j == 2)OR ($_GET['idPage']=="P01521" AND $j == 2))
					{
						$sql_2 = 'SELECT * FROM insertion_job WHERE idPage=\'P01021\' AND typeTexte=\'AP\' ORDER BY sequence';
						// on fait une requete qui recupère les enregistrements qui rappel le menu	
						$requete_2 = $connectionBDD->query($sql_2);
 
						while($donne_2 = $requete_2->fetch())
						{
							$id = $donne_2['pointeVers'];
							echo "<dd><a href='index.php?idPage=$id'>".$donne_2['url']."</a>".$donne_2['texteSuivant']."</dd>";
						}
 
						$requete_2->closeCursor();
 
					}
				}
				$requete_1->closeCursor();
			echo '</div>';
			echo '<br/>';
		}
	}
 
 
	//appel de la fonction lorsqu'on est à l'accueil.
	//cette fonction créer l'accueil.
	public function accueil($connectionBDD)
	{
		$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P00000\'';
		$requete = $connectionBDD->query($sql);
 
		echo '<div id="corps">';
 
			echo '<p>';
 
				while($donne = $requete->fetch())
				{
					if($donne['typeTexte'] == "DT")
					{
						echo '<h4>'.$donne['textePrecedent'].'</h4>';
					}
					if($donne['typeTexte'] == "DX")
					{
						echo '<p>'.$donne['textePrecedent'].'</p>';
					}
				}
				$requete->closeCursor();
 
			echo '</p>';
 
		echo '</div>';
	}
}
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?php
 
class Footer
{
	private $footer;
 
	public function __construct()
	{
		$this->footer = '<span class="gras">Copyright</span>';
	}
	//affichage du footer
	public function afficherFooter()
	{
		echo '<div id="footer"><p>';
		echo $this->getFooter();
		echo ' </p></div>';
	}
	//retourne le footer
	public function getFooter()
	{
		return $this->footer;
	}
}
Code :
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
 
<?php
 
class Head
{
	private $logo;
	private $titre;
 
	public function __construct()
	{
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$connectionBDD = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
 
			$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'TP\' AND flag=1';
			//on va rechercher tout ce que concerne le titre principal
			$requete = $connectionBDD->query($sql);
			$this->titre = $requete->fetch();
 
			$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'LO\' AND flag=1';
			//on va rechercher tout ce qui concerne le logo
			$requete = $connectionBDD->query($sql);
			$this->logo = $requete->fetch();
		}
		catch(Exception $e)
		{
			echo "Erreur :".$e->getMessage();
		}
	}
	//affiche logo du site
	public function afficherLogo()
	{
		echo '<div id="logo">';
			echo '<img src='.$this->logo['textePrecedent'].'alt="logo du site"/>';
		echo '</div>';
	}
	//affiche le titre général du site
	public function afficherTitre()
	{	
		echo '<div id="titre_site">';
			echo '<h3>'.$this->titre['textePrecedent'].'</h3>';
		echo '</div>';
	}
	//affiche l'en-tête de la page internet
	public function afficherHead()
	{
		$this->afficherLogo();
		$this->afficherTitre();
	}
 
}
Code :
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
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
	<head>
 
		<!-- indique ou se trouve le plug-in JQuery -->
		<script type="text/javascript" src="js/jquery.js" ></script>
		<!--debut du script JQuery-->
		<script type="text/javascript">
		//<!--	
			$(document).ready(function()
			{	
				//couleur de fond du site
				$('body').css('background','rgb(106,95,91)');
				//type de police du site
				$('body').css('font-family','Bell MT,Comic sans MS,Times New Roman, Times, serif');
				//fond du corps
				$("#corps").css('background','rgb(134,197,242)');
				//couleur pour les titre h3
				$("h3").css('color','rgb(134,197,242)');
 
				<?php
					include_once('site.class.php');
					$site = new Site();
					/*recupère le nombre de menu
					permet d'appliquer le style dynamiquement par passage de valeur du PHP à javascript*/
					echo "var compteur =".$site->getMenu()->getNbMenu(). ";";
				?>
				var i;
				for(i=0;i<=compteur;i++)
				{	
					//couleur de fond appliquer à chaque menu
					$("#sous_menu_"+i).css('background','rgb(134,197,242)');
					//taille de la police des titre des menus
					$("#menu_"+i).css('font-size','14px');
					//espacement entre les differents menu de 10pixel
					$("#sous_menu_"+i).css('padding-bottom', '10px');
					//espace de 3 pixel par rapport au bord gauche
					$("#sous_menu_"+i).css('padding-left', '3px');
					//taille de la police pour les intitulé du menu
					$("#sous_menu_"+i).css('font-size','12px');
				}
 
				//quand on passe au dessu de l'image (idPage =P01121)
				$("#exemple_3").mouseover(function() 
				{
					// on cache le cadre qui est a gauche
					$('.encadrer_5').hide();
					$('#footer').hide();
				});
				$("#exemple_3").mouseout(function() //quand on sort de la zone
				{
					$('.encadrer_5').show();//on réaffiche le cadre
					$('#footer').show();
				});
 
				//quand on passe au dessu de l'image (idPage =P01321)(idPage =P01221)(idPage =P01421)(idPage =P01521)
				$(".ex").hide();
 
				$(".lien").mouseover(function() 
				{
					// on cache le cadre qui est a gauche
					$('.ex').show();
					$('#footer').hide();
				});
				$(".lien").mouseout(function() //quand on sort de la zone
				{
					$('.ex').hide();//on réaffiche le cadre
					$('#footer').show();
				});
 
				// quand on passe au dessus de l'élément le curseur devient une main pour afficher
				$(".lien").hover( function () 
				{
					$(this).css('cursor','pointer');
				},function () 
				{
					$(this).css('cursor','auto');
				});
 
 
				//animation sur le titre du site en 1.5 seconde
				$("#titre_site").animate(
					{ 
						//width: "70%",
						//opacity: 0.4,	
						//marginLeft: "0.6in",
						fontSize: "1em"
						//borderWidth: "10px"
					}, 
					1500);
 
				/*cette manière de faire simplifie le fait qu il ne faut pas 
				ecrire le code avec les instruction de PHP*/
				<?php
 
				if(!isset($_GET['idPage']))
				{
				?>
					// cache les éléments du DOM
					$("#head").hide();
					$("#menu").hide();
					$("#corps").hide();
					$("#footer").hide();
					$("#acceuil").hide();
 
					//fait apparaitre les éléments du DOM
					$("#head").fadeTo('slow','1');
					$("#menu").fadeTo('slow','1');
					$("#corps").fadeTo('slow','1');
					$("#footer").fadeTo('slow','1');
					$("#acceuil").fadeTo('slow','1');
 
 
				<?php
				}
				?>
 
			});
		//-->
		</script>
 
		<!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>-->
		<meta http-equiv="pragma" content="no-cache"> 
		<link rel="stylesheet" type="text/css" href="css/design.css"/>
		<title>site</title>
 
	</head>
 
	<body>
 
		<?php
			$site->afficherSite();
		?>
 
	</body>
</html>
Code :
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
 
<?php
class Menu
{
	private $menu;
	private $nbMenu;
 
	public function __construct()
	{
 
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$connectionBDD = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
 
			$sql = 'SELECT COUNT(*) FROM insertion_job WHERE typeTexte=\'MP\' AND flag=1';
			//nombre de menu
			$requete_1 = $connectionBDD->query($sql);
			$donne = $requete_1->fetch();
			$this->nbMenu = $donne[0];
 
			$i;
			$this->menu = array();
			//creation d'une matrice pour les menu et sous-menu autant de ligne qu'il n y a de menu
			for($i=0;$i<$this->nbMenu;$i++)
			{
				$this->menu[$i] = array();
			}			
		}
		catch(Exception $e)
		{
			die('Erreur :'.$e->getMessage());
		}
 
	}
 
	//méthode pour créer le menu
	public function creerMenu()
	{
 
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$connectionBDD = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
 
			$text_1 = $this->lireMenu($connectionBDD);
			$this->lireSousMenu($text_1,$connectionBDD);
 
 
		}
		catch(Exception $e)
		{
			die('Erreur :'.$e->getMessage());
		}
 
	}
	//méthode pour afficher le menu
	public function afficherMenu()
	{
 
		$i=1;
		echo "<div id='menu' align='left'>";
 
		echo '<div id="acceuil">';
			echo '<a href="index.php">Accueil</a>';
		echo '</div>';
 
		echo "<ul class='non_puce'>";
 
		foreach($this->menu as $ligne)
		{
			echo "<div id='sous_menu_$i' class='style'>";
			echo "<ul class='non_puce'>";
			foreach($ligne as $colone)
			{
				echo $colone;
 
			}
			echo "</ul>";
			echo "</div>";
			$i = $i+1;
		}
		echo "</ul>";
		echo "</div>";
	}
 
	//recupère les titre principaux du menu
	public function lireMenu($connectionBDD)
	{
		$i = 0;
 
		$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'MP\' AND flag=1';
		//recupère les éléments du menu principale
		$requete_1 = $connectionBDD->query($sql);
 
		//remplit par les titre principal du menu
		while($donne_1 = $requete_1->fetch())
		{
 
			$this->menu[$i][0] = "<li id='menu_$i' class='gras'>".$donne_1['textePrecedent']."</li>";
			$text_1[$i] = substr($donne_1['idPage'],0,3);
 
			$i = $i +1;
		}
		/*renvoi le tableau afin de permettre la comparaison
		  lors de l'appel de méthode pour construire les sous composant du menu*/
		return $text_1;
	}
 
	//recupere les sous-titres du menu
	public function lireSousMenu($text_1,$connectionBDD)
	{
		$j=1;
 
		for($i=0;$i<$this->nbMenu;$i++)
		{
			$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'SM\' AND flag=1';
			$requete = $connectionBDD->query($sql);
			while($donne = $requete->fetch())
			{
				$text_2 = substr($donne['idPage'],0,3);
				//si les 3 première occurence de l idPage du menu et du sous menu sont identique on creer le sous menu qui va avec le titre
				if($text_2 == $text_1[$i])
				{
					$id = $donne['pointeVers'];
					$this->menu[$i][$j] = "<li><a href='index.php?idPage=$id'>".$donne['textePrecedent']."</a></li>";
 
					$j = $j + 1;					
				}
				else
				{
					$j=1;
				}
 
			}
			$requete->closeCursor();
		}
 
	}
	//retourne le nombre de menu
	public function getNbMenu()
	{
		return $this->nbMenu;
	}
 
}
Code :
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
 
<?php
include_once('head.class.php');
include_once('menu.class.php');
include_once('corps.class.php');
 
 
 
class Site
{
	private $head;//en-tête du site
	private $corps;//corps du site
	private $menu;//menu du site
 
	public function __construct()
	{
		$this->head = new Head();
		$this->menu = new Menu();
		$this->corps = new Corps();
	}
 
	public function afficherSite()
	{
		$this->head->afficherHead();
 
		$this->menu->creerMenu();
 
		//affichage du menu
		$this->menu->afficherMenu();
 
		$this->corps->afficherCorps();	
 
	}
	//retourne le menu afin d'accéder à ses fonction via la classe site
	public function getMenu()
	{
		return $this->menu;
	}
}
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 13h46   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
tu devrais plutot mettre la $connectionBDD en propreté de classe ou alors faire un Registry.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 13h57   #3
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
pourrait-tu m'en dire plus ?
Tu veux dire que je crée une classe "Connexion" ?
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 14h02   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par dharkan Voir le message
pourrait-tu m'en dire plus ?
Tu veux dire que je crée une classe "Connexion" ?
oui la connexion n'a pas grand chose a faire dans les paramètres de méthode, donc oui faire un classe Connexion serait un bon début
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 15h09   #5
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
alors j'ai créer la classe connexion de cette manière :

Code :
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
 
<?
 
class Connexion
{
	private $connexion;
 
	public function __construct()
	{
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$this->connectionBDD = NEW PDO('mysql:host=localhost;dbname=cpas-tournai-be3','root','',$PDO_options);
		}
		catch(Exception $e)
		{
			echo "Erreur :".$e->getMessage()
		}
	}
 
	public function getConnexion()
	{
		return $this->connexion;
	}
}
dans la classe Corps j'ai tout remodifier de cet manière la ou j ai besoin de la connexion :

Code :
1
2
 
$requete = $this->connexion->getConnexion()->query($sql);
a la place de :

Code :
1
2
 
$requete = $connectionBDD->query($sql);
quand je veux afficher la page, celle-ci reste vide et lorsque je vais voir le code source de la page je trouve cette erreur :
Code :
1
2
 
<b>Fatal error</b>:  Class 'Connexion' not found in <b>C:\wamp\www\site_test\corps.class.php</b> on line <b>14</b><br />
pourtant j inclue bien le fichier connexion.class.php
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 16h23   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
t'as mis <? a la place de <?php non ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 07h42   #7
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
en effet, il manquait <? php a la place de <?. Erreur de débutant.
Par contre maintenant il me dit que j appel la méthode query() sur un non objet voici l'erreur renvoyée :


Call to a member function query()

ma classe connexion se présente de cette manière :

Code :
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
 
<?php
 
class Connexion
{
	private $connexion;
 
	public function __construct()
	{
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$this->connection = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
		}
		catch(Exception $e)
		{
			echo "Erreur :".$e->getMessage();
		}
	}
 
	public function getConnexion()
	{
		return $this->connexion;
	}
}
EDIT : J ai trouver d'où venait mon erreur :

Code :
1
2
3
4
5
6
 
 
...
private $connexion;
...
    $this->connection = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
je devait mettre ceci :

Code :
1
2
 
 $this->connexion = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
Erreur de débutant

Je réitère donc ma question :

Mon code est-il mieux ? qu'y a-t-il à améliorer ?
Faut-il que je respecte le MVC ? ou cet application peut s'en passer ?
personnellement je pense pas avoir besoin du MVC mais je reste ouvert à vos conseil
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 08h20   #8
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 706
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 706
Points : 3 274
Points : 3 274
Salut

Code :
$this->connectionBDD = NEW PDO(... etc ...);
Il y a confusion ou erreur de frappe à mon sens.
C'est $this->connection ou $this->connectionBDD ?

Citation:
personnellement je pense pas avoir besoin du MVC mais je reste ouvert à vos conseil
Ca dépend totalement du but recherché, et particulière à aujourd'hui comme demain (le futur : 2 ans, 3ans, ...).

La voie que tu prends peut très bien être la bonne comme à éviter.

Simple réflexion.
A ce stade tu prévois par exemple dans le Footer (classe Footer) un code HTML.
Mais est ce toutes les pages Web du site devra avoir ce même footer ?
Est-ce qu'un jour il n'y aurait pas 1, ou 2, 3 ... exceptions par là ?
Si ce n'est pas le cas, alors le concept actuel est bon, sinon, le concept ne sera plus bon, ou moins bon.
L'inconvénient c'est qu'il faudra intervenir dans le code pour répondre au besoin, et pas seulement modifier du HTML, mais le concept lui même, du moins, cette classe Footer dans cet exemple.

Faut analyser tout le reste comme ça.


Si on prend l'orientation du MVC, et bien ça intègre cet aspect là et théoriquement on pourra tout faire, car le concept MVC est justement de séparer les couches de manière à ce quelles soient le moins dépendantes les une des autres.

Donc il faut voir de plus près.
Mais le gros avantage du MVC selon moi, c'est justement permettre de faire des modifications en tout genre sur le site en réduisant le plus possible les effets de bords.
Si lors d'une modif il faut éplucher tout le code pour tenter de voir l'impact ou faire des tonnes de testes, c'est pas forcément ce qui a de mieux.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 09h22   #9
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
D'accord,

bon autant en Java sa me pose pas de problème et là le MVC ont va dire que sa me perd :

le modèle : Ok, ce sont les classes que j'ai postée.
la vue : il s'agit du code html que je doit séparer du model
les controller : (qui implement la plupart du temps des ActionListener en classe anonyme) je vois vraiment pas comment représenter cela en PHP.
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 09h56   #10
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 706
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 706
Points : 3 274
Points : 3 274
Citation:
le modèle : Ok, ce sont les classes que j'ai postée.
A là je ne pense pas.

Toutes ces classes contiennent toutes du HTML, du coup, c'est tout sauf des modèles à mon sens.
Je classerais plutôt ces classe comme des vues, car les vues c'est justement le HTML, c'est ça l'interface, non ?

Donc le problème, c'est que par exemple la vue Corps{} instancie une Objet Connexion, idem pour le Footer.

En MVC une vue ne doit pas contenir quoi que ce soit, pas un Objet métier comme une connexion.
Théoriquement, c'est du ressort du controller à faire appel aux modèles de données pour récupérer les données pour ensuite les transmettre aux vues.


Comme ça, vraiment au feeling ...
La classe Site{} pourrait éventuellement faire office de Controller, et par exemple récupérer l'ensemble des données (selon l'URL demandée).

Ensuite, pourquoi pas transmettre au Head, Corps et Footer les données quelles réclameraient, en considérant toujours que ces 3 dernières seraient des vues.


Enfin, une idée comme ça.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 12h02   #11
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
Citation:
Envoyé par dharkan Voir le message
la vue : il s'agit du code html que je doit séparer du model


sinon pour le reste je pense avoir les idées qui se clarifient
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2011, 09h45   #12
Nouveau Membre du Club
 
Développeur informatique
Inscription : mars 2010
Messages : 139
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : mars 2010
Messages : 139
Points : 37
Points : 37
alors voila , j ai terminé la vue et le modèle dans l'architecture de mon application. je vous met mon code afin que vous me puissiez me conseiller :

Modèle :

corps.class.php
Code :
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
 
<?php
include_once('footer.class.php');
include_once('connexion_base.class.php');
 
class Corps
{
 
	private $footer;
	private $connexion;
 
	public function __construct()
	{
		$this->footer = new Footer();
		$this->connexion = new ConnexionBase();
	}
 
	//renvoi la connexion
	public function getConnexion()
	{
		return $this->connexion->getConnexion();
	}
 
	//renvoi le footer
	public function getFooter()
	{
		return $this->footer;
	}
}
menu.class.php
Code :
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
 
<?php
include_once('connexion_base.class.php');
 
class Menu
{
	private $menu;
	private $nbMenu;
	private $connexion;
 
	public function __construct()
	{
 
		try
		{
			$this->connexion = new ConnexionBase();
 
			$sql = 'SELECT COUNT(*) FROM insertion_job WHERE typeTexte=\'MP\' AND flag=1';
			//nombre de menu
			$requete_1 = $this->connexion->getConnexion()->query($sql);
			$donne = $requete_1->fetch();
			$this->nbMenu = $donne[0];
 
			$i;
			$this->menu = array();
			//creation d'une matrice pour les menu et sous-menu autant de ligne qu'il n y a de menu
			for($i=0;$i<$this->nbMenu;$i++)
			{
				$this->menu[$i] = array();
			}			
		}
		catch(Exception $e)
		{
			die('Erreur :'.$e->getMessage());
		}
 
	}
 
	//méthode pour créer le menu
	public function creerMenu()
	{
 
		try
		{
			$text_1 = $this->lireMenu();
			$this->lireSousMenu($text_1);
		}
		catch(Exception $e)
		{
			die('Erreur :'.$e->getMessage());
		}
 
	}
 
	//recupère les titre principaux du menu
	public function lireMenu()
	{
		$i = 0;
 
		$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'MP\' AND flag=1';
		//recupère les éléments du menu principale
		$requete_1 = $this->connexion->getConnexion()->query($sql);
 
		//remplit par les titre principal du menu
		while($donne_1 = $requete_1->fetch())
		{
 
			$this->menu[$i][0] = "<li id='menu_$i' class='gras'>".$donne_1['textePrecedent']."</li>";
			$text_1[$i] = substr($donne_1['idPage'],0,3);
 
			$i = $i +1;
		}
		/*renvoi le tableau afin de permettre la comparaison
		  lors de l'appel de méthode pour construire les sous composant du menu*/
		return $text_1;
	}
 
	//recupere les sous-titres du menu
	public function lireSousMenu($text_1)
	{
		$j=1;
 
		for($i=0;$i<$this->nbMenu;$i++)
		{
			$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'SM\' AND flag=1';
			$requete = $this->connexion->getConnexion()->query($sql);
			while($donne = $requete->fetch())
			{
				$text_2 = substr($donne['idPage'],0,3);
				//si les 3 première occurence de l idPage du menu et du sous menu sont identique on creer le sous menu qui va avec le titre
				if($text_2 == $text_1[$i])
				{
					$id = $donne['pointeVers'];
					$this->menu[$i][$j] = "<li><a href='index.php?idPage=$id'>".$donne['textePrecedent']."</a></li>";
 
					$j = $j + 1;					
				}
				else
				{
					$j=1;
				}
 
			}
			$requete->closeCursor();
		}
 
	}
	//retourne le nombre de menu
	public function getNbMenu()
	{
		return $this->nbMenu;
	}
	//retourne le menu
	public function getMenu()
	{
		return $this->menu;
	}
 
}
head.class.php
Code :
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
 
<?php
include_once('connexion_base.class.php');
 
class Head
{
	private $logo;
	private $titre;
	private $connexion;
 
	public function __construct()
	{
		try
		{
			$this->connexion = new ConnexionBase();
 
			$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'TP\' AND flag=1';
			//on va rechercher tout ce que concerne le titre principal
			$requete = $this->connexion->getConnexion()->query($sql);
			$this->titre = $requete->fetch();
 
			$sql = 'SELECT * FROM insertion_job WHERE typeTexte=\'LO\' AND flag=1';
			//on va rechercher tout ce qui concerne le logo
			$requete = $this->connexion->getConnexion()->query($sql);
			$this->logo = $requete->fetch();
		}
		catch(Exception $e)
		{
			echo "Erreur :".$e->getMessage();
		}
	}
 
	public function getLogo()
	{
		return $this->logo['textePrecedent'];
	}
	public function getTitre()
	{
		return $this->titre['textePrecedent'];
	}
 
}
footer.class.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
<?php
 
class Footer
{
	private $footer;
 
	public function __construct()
	{
		$this->footer = '<span class="gras">Copyright</span> footer';
	}
	//affichage du footer
	public function afficherFooter()
	{
		echo '<div id="footer"><p>';
		echo $this->getFooter();
		echo ' </p></div>';
	}
	//retourne le footer
	public function getFooter()
	{
		return $this->footer;
	}
}
connexion_base.class.php
Code :
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
 
<?php
 
class ConnexionBase
{
	private $connexion;
 
	public function __construct()
	{
		try
		{
			$PDO_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$this->connexion = NEW PDO('mysql:host=localhost;dbname=mabase','root','',$PDO_options);
		}
		catch(Exception $e)
		{
			echo "Erreur :".$e->getMessage();
		}
	}
 
	public function getConnexion()
	{
		return $this->connexion;
	}
 
}
site.class.php
Code :
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
 
<?php
include_once('ViewHead.class.php');
include_once('ViewMenu.class.php');
include_once('ViewCorps.class.php');
 
class Site
{
	private $vueHead;//en-tête du site
	private $vueCorps;//corps du site
	private $vueMenu;//affiche le menu
 
	public function __construct()
	{
		$this->vueHead = new ViewHead();
		$this->vueMenu = new ViewMenu();
		$this->vueCorps = new ViewCorps();
	}
 
	public function afficherSite()//michel.quenoy@cpas-tournai.be
	{
		$this->vueHead->afficherHead();
 
		$this->vueMenu->afficherMenu();
 
 
		$this->vueCorps->afficherCorps();	
 
	}
	//retourne la vueMenu afin d'accéder à la classe ViewMenu
	public function getVueMenu()
	{
		return $this->vueMenu;
	}
}
index.class.php
Code :
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
 
	<head>
 
		<!-- indique ou se trouve le plug-in JQuery -->
		<script type="text/javascript" src="js/jquery.js" ></script>
		<!--debut du script JQuery-->
		<script type="text/javascript">
		//<!--	
			$(document).ready(function()
			{	
				//couleur de fond du site
				$('body').css('background','rgb(106,95,91)');
				//type de police du site
				$('html').css('font-family','Bell MT Std,Bell MT,Comic sans MS,Times New Roman, Times, serif');
 
				//fond du corps
				$("#corps").css('background','rgb(134,197,242)');
				//couleur pour les titre h3
				$("h3").css('color','rgb(134,197,242)');
 
				<?php
 
					include_once('site.class.php');
					$site = new Site();
					/*recupère le nombre de menu
					permet d'appliquer le style dynamiquement par passage de valeur du PHP à javascript*/
					echo "var compteur =".$site->getVueMenu()->getMenu()->getNbMenu(). ";";
				?>
				var i;
				for(i=0;i<=compteur;i++)
				{	
					//couleur de fond appliquer à chaque menu
					$("#sous_menu_"+i).css('background','rgb(134,197,242)');
					//taille de la police des titre des menus
					$("#menu_"+i).css('font-size','14px');
					//espacement entre les differents menu de 10pixel
					$("#sous_menu_"+i).css('padding-bottom', '10px');
					//espace de 3 pixel par rapport au bord gauche
					$("#sous_menu_"+i).css('padding-left', '3px');
					//taille de la police pour les intitulé du menu
					$("#sous_menu_"+i).css('font-size','12px');
				}
 
 
				//quand on passe au dessu de l'image (idPage =P01321)(idPage =P01221)(idPage =P01421)(idPage =P01521)
				$(".ex").hide();
				$("#ex1").hide();
				$("#ex2").hide();
				$("#ex3").hide();
 
				$(".commun").css('color','rgb(7,13,233)');
 
				$(".commun").hover( function () 
				{
					$(this).css('cursor','pointer');
				},function () 
				{
					$(this).css('cursor','auto');
				});
 
				$('.affiche').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('.ex').is(':hidden'))
					{
						$('.ex').slideDown('slow');
					}
				});
				$('.cache').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('.ex').is(':visible'))
					{
						$('.ex').hide();
					}
				});
 
				$('.affiche1').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('#ex1').is(':hidden'))
					{
						$('#ex1').slideDown('slow');
					}
				});
				$('.cache1').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('#ex1').is(':visible'))
					{
						$('#ex1').hide();
					}
				});
 
				$('.affiche2').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('#ex2').is(':hidden'))
					{
						$('#ex2').slideDown('slow');
					}
				});
				$('.cache2').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('#ex2').is(':visible'))
					{
						$('#ex2').hide();
					}
				});
 
				$('.affiche3').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('#ex3').is(':hidden'))
					{
						$('#ex3').slideDown('slow');
					}
				});
				$('.cache3').click(function()
				{
					//affiche le texte s'il est caché lors du clique
					if($('#ex3').is(':visible'))
					{
						$('#ex3').hide();
					}
				});
 
				//animation sur le titre du site en 1.5 seconde
				$("#titre_site").animate(
					{ 
						//width: "70%",
						//opacity: 0.4,	
						//marginLeft: "0.6in",
						fontSize: "1em"
						//borderWidth: "10px"
					}, 
					1500);
 
				/*cette manière de faire simplifie le fait qu il ne faut pas 
				ecrire le code avec les instruction de PHP*/
				<?php
 
				if(!isset($_GET['idPage']))
				{
				?>
					// cache les éléments du DOM
					$("#head").hide();
					$("#menu").hide();
					$("#corps").hide();
					$("#footer").hide();
					$("#acceuil").hide();
 
					//fait apparaitre les éléments du DOM
					$("#head").fadeTo('slow','1');
					$("#menu").fadeTo('slow','1');
					$("#corps").fadeTo('slow','1');
					$("#footer").fadeTo('slow','1');
					$("#acceuil").fadeTo('slow','1');
 
 
				<?php
				}
				?>
 
			});
		//-->
		</script>
 
		<!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>-->
		<meta http-equiv="pragma" content="no-cache"> 
		<link rel="stylesheet" type="text/css" href="css/design.css"/>
		<title>Cpas de Tournai - aide à l'insertion</title>
 
	</head>
 
	<body>
 
		<?php
			$site->afficherSite();
		?>
 
	</body>
</html>
La vue :

ViewCorps.class.php
Code :
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
 
<?php
include_once('corps.class.php');
 
class ViewCorps
{
	private $corps;
 
	public function __construct()
	{
		$this->corps = new Corps();
	}
 
 
	//cette fonction affiche le corps
	public function afficherCorps()
	{
 
		//si l'attribut dans URL n'existe pas la page d'accueil est construite
		if(!isset($_GET['idPage']))
		{
			$this->corps->accueil();
		}
		else
		{
			//corps de la page
			echo '<div id="corps">';
				echo '<p>';
					$this->rappelMenu();
					$this->construireCorps();
				echo '</p>';
				$this->corps->getFooter()->afficherFooter();
			echo '</div>';
		}
	}
 
	//construit un titre qui se trouve dans un texte du corps de la page
	public function detailTitre($donne)
	{
		//si c'est le titre d'un texte
		if($donne['typeTexte'] == "DT")
		{
			echo '<h4>'.$donne['textePrecedent'].'</h4>';
		}
	}
 
	//construit le texte du coprs de la page
	public function detailTexte($donne)
	{
		//si c'est du texte simple
		if($donne['typeTexte'] == "DX")
		{
			echo "<p>".$donne['textePrecedent']."</p>";
		}
	}
 
	//construit une URL
	public function detailURL($donne)
	{
		//si c'est une URL
		if($donne['typeTexte'] == "DU")
		{
			//si c'est un document on construit de tel sorte qu'on telecharge le document pour le regarder
			if(substr($donne['pointeVers'],0,3)=="DOC")
			{
				$sql = "SELECT * FROM insertion_job WHERE idPage='".$donne['pointeVers']."'";
				$requete = $this->corps->getConnexion()->query($sql);
				$ref = $requete->fetch();
				echo "<center><a href='word/".$ref['textePrecedent']."' target='_blank'>".$donne['textePrecedent']."</a></center>";
				echo "<center><a href='pdf/".$ref['texteSuivant']."' target='_blank'>(version pdf)</a></center><br/>";
				$requete->closeCursor();
			}
			//sinon on construit le lien qui pointe vers la page associée
			else
			{
				$id = $donne['pointeVers'];
 
				echo "<center><a href='index.php?idPage=$id'>".$donne['textePrecedent']."</a></center><br/>";
			}
		}
	}
 
	//construit une liste numéroté
	public function detailNumerote($donne,$i)
	{
		//si le texte est numéroté
		if($donne['typeTexte'] == "DN")
		{
			$i = $i + 1;
			echo '<p class="tabulation">'.$i.'. '.$donne['textePrecedent'].'</p>';
		}
		return $i;
	}
 
	//construit une URL avec du texte qui se trouve avant le lien
	public function detailTexteUrl($donne)
	{
		//si texte avant url
		if($donne['typeTexte'] == "AU")
		{
			$id = $donne['pointeVers'];
			echo "<p>".$donne['textePrecedent']."<a href='index.php?idPage=$id'>".$donne['url']."</a></p>";
		}
	}
 
	//construit une URL avec du texte avant et apres le lien
	public function detailTexteUrlTexte($donne)
	{
		//si texte avant et apres url
		if($donne['typeTexte'] == "AP")
		{
			$id = $donne['pointeVers'];
 
			if($_GET['idPage']=="P01021")
			{
				echo "<span class='tabulation'>".$donne['textePrecedent']." "."<a href='index.php?idPage=$id' class='gras'>".$donne['url']." </a>".$donne['texteSuivant']."</span><br/>";
			}
			else
			{
				echo $donne['textePrecedent']."<a href='index.php?idPage=$id'>".$donne['url']."</a>".$donne['texteSuivant']."<br/>";
			}
		}
	}
	//créer une liste a puce
	public function detailListe($donne)
	{
 
		//liste a puce
		if($donne['typeTexte'] == "DL")
		{ 		
			echo '<ul class="non_puce tabulation">';
				echo '<li class="tabulation">-'.$donne['textePrecedent'].'</li><br/>';
			echo '</ul>';
		}
 
	}
 
	//si le tout le paragraphe d'un texte doit etre en italique
	public function detailItalique($donne)
	{
		//si texte italique
		if($donne['typeTexte'] == "DI")
		{
			if($_GET['idPage']=="P01032")
			{
				echo '<div class="tab">';
				echo "<span class='italique'>".$donne['textePrecedent']."</span>";
				echo '</div><br/>';
			}
			else
			{
				echo "<span class='italique'>".$donne['textePrecedent']."</span><br/>";
			}
		}
 
	}
 
	//construit le corps de la page
	public function construireCorps()
	{
 
		$i = 0;
 
		$sql = 'SELECT * FROM insertion_job WHERE idPage=\''.$_GET['idPage'].'\'AND sequence > 0 AND flag=1 ORDER BY sequence';
		$requete_1 = $this->corps->getConnexion()->query($sql);
		while($donne = $requete_1->fetch())
		{
 
			$this->detailTitre($donne);
 
			$this->detailTexte($donne);
 
			$this->detailURL($donne);
 
			$i = $this->detailNumerote($donne,$i);
 
			$this->detailTexteUrl($donne);
 
			$this->detailTexteUrlTexte($donne);
 
			$this->detailItalique($donne);
 
			$this->detailListe($donne);
 
		}
		$requete_1->closeCursor();
	}
 
	//cette fonction est appelée lorsqu'il faut afficher un rappel du menu et/ou sous-menu d'une rubrique
	//facilite la navigation pas besoin de revenir a une page précédente pour aller sur le lien suivant
	//vu que le menu est rappelé en haut gauche.
	public function rappelMenu()
	{
		//si on se trouve sur les pages qui ont cet ID on reconstruit le menu
		if($_GET['idPage']=="P01011" OR $_GET['idPage']=="P01021" OR $_GET['idPage']=="P01031" OR $_GET['idPage']=="P01041" OR $_GET['idPage']=="P01051" OR $_GET['idPage']=="P01061" OR $_GET['idPage']=="P01071" OR $_GET['idPage']=="P01121" OR $_GET['idPage']=="P01221" OR $_GET['idPage']=="P01321" OR $_GET['idPage']=="P01421" OR $_GET['idPage']=="P01521" OR $_GET['idPage']=="DOC000")
		{
			$j = 0;
			$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P01001\' AND typeTexte=\'DU\' ORDER BY sequence';
			$requete_1 = $this->corps->getConnexion()->query($sql);
			echo '<div class="rappelMenu">';
				echo '<span class="gras">Le CV</span><br/>';
				while($donnee_1 = $requete_1->fetch())
				{
					$j = $j + 1;
					//si on pointe vers un document, on affiche 2 liens : format word et format PDF
					if(substr($donnee_1['pointeVers'],0,3)=="DOC")
					{
						$sql_2 = "SELECT * FROM insertion_job WHERE idPage='".$donnee_1['pointeVers']."'";
						$requete_2 = $this->corps->getConnexion()->query($sql_2);
						$ref = $requete_2->fetch();
						echo "<a href='word/".$ref['textePrecedent']."' target='_blank'>".$donnee_1['textePrecedent']."</a>";
						echo "<a href='pdf/".$ref['texteSuivant']."' target='_blank'>(version pdf)</a><br/>";
					}
					//sinon on pointe vers la page et les textes concernés
					else
					{
						$id = $donnee_1['pointeVers'];
						echo "<a href='index.php?idPage=$id'>".$donnee_1['textePrecedent']."</a><br/>";
					}
					//si on se retrouve dans une page qui possède cet ID on construit un sous-menu
					if( ($_GET['idPage']=="P01121" AND $j == 2) OR ($_GET['idPage']=="P01221" AND $j == 2)  OR ($_GET['idPage']=="P01321" AND $j == 2) OR ($_GET['idPage']=="P01421" AND $j == 2)OR ($_GET['idPage']=="P01521" AND $j == 2))
					{
						$sql_2 = 'SELECT * FROM insertion_job WHERE idPage=\'P01021\' AND typeTexte=\'AP\' ORDER BY sequence';
						// on fait une requete qui recupère les enregistrements qui rappel le menu
						$requete_2 = $this->corps->getConnexion()->query($sql_2);
 
						while($donne_2 = $requete_2->fetch())
						{
							$id = $donne_2['pointeVers'];
							echo "<dd><a href='index.php?idPage=$id'>".$donne_2['url']."</a>".$donne_2['texteSuivant']."</dd>";
						}
 
						$requete_2->closeCursor();
 
					}
				}
				$requete_1->closeCursor();
			echo '</div>';
			echo '<br/>';
		}
		if( $_GET['idPage']=="P01012" OR $_GET['idPage']=="P01022"OR $_GET['idPage']=="P01032"OR $_GET['idPage']=="P01042"OR $_GET['idPage']=="P01052" OR $_GET['idPage']=="P01062" OR $_GET['idPage']=="P01072" OR $_GET['idPage']=="P01082")
		{
			$j = 0;
			$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P01002\' AND typeTexte=\'DU\' ORDER BY sequence';
			$requete_1 = $this->corps->getConnexion()->getConnexion()->query($sql);
			echo '<div class="rappelMenu">';
				echo '<span class="gras">La lettre de motivation</span><br/>';
				while($donnee_1 = $requete_1->fetch())
				{
					$j = $j + 1;
					//si on pointe vers un document, on affiche 2 liens : format word et format PDF
					if(substr($donnee_1['pointeVers'],0,3)=="DOC")
					{
						$sql_2 = "SELECT * FROM insertion_job WHERE idPage='".$donnee_1['pointeVers']."'";
						$requete_2 = $this->corps->getConnexion()->getConnexion()->query($sql_2);
						$ref = $requete_2->fetch();
						echo "<a href='word/".$ref['textePrecedent']."' target='_blank'>".$donnee_1['textePrecedent']."</a>";
						echo "<a href='pdf/".$ref['texteSuivant']."' target='_blank'>(version pdf)</a><br/>";
					}
					//sinon on pointe vers la page et les textes concernés
					else
					{
						$id = $donnee_1['pointeVers'];
						echo "<a href='index.php?idPage=$id'>".$donnee_1['textePrecedent']."</a><br/>";
					}
					//si on se retrouve dans une page qui possède cet ID on construit un sous-menu
					// if( ($_GET['idPage']=="P01121" AND $j == 2) OR ($_GET['idPage']=="P01221" AND $j == 2)  OR ($_GET['idPage']=="P01321" AND $j == 2) OR ($_GET['idPage']=="P01421" AND $j == 2)OR ($_GET['idPage']=="P01521" AND $j == 2))
					// {
						// $sql_2 = 'SELECT * FROM insertion_job WHERE idPage=\'P01021\' AND typeTexte=\'AP\' ORDER BY sequence';
						// on fait une requete qui recupère les enregistrements qui rappel le menu
						// $requete_2 = $this->connexion->getConnexion()->query($sql_2);
 
						// while($donne_2 = $requete_2->fetch())
						// {
							// $id = $donne_2['pointeVers'];
							// echo "<dd><a href='index.php?idPage=$id'>".$donne_2['url']."</a>".$donne_2['texteSuivant']."</dd>";
						// }
 
						// $requete_2->closeCursor();
 
					// }
				}
				$requete_1->closeCursor();
			echo '</div>';
			echo '<br/>';
		}
	}
 
 
	//appel de la fonction lorsqu'on est à l'accueil.
	//cette fonction créer l'accueil.
	public function accueil()
	{
		$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P00000\' AND flag=1';
		$requete = $this->corps->getConnexion()->getConnexion()->query($sql);
 
		echo '<div id="corps">';
 
			echo '<p>';
 
				while($donne = $requete->fetch())
				{
					if($donne['typeTexte'] == "DT")
					{
						echo '<h4>'.$donne['textePrecedent'].'</h4>';
					}
					if($donne['typeTexte'] == "DX")
					{
						echo '<p>'.$donne['textePrecedent'].'</p>';
					}
				}
				$requete->closeCursor();
 
			echo '</p>';
 
		echo '</div>';
	}
 
}
ViewMenu.class.php
Code :
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
 
<?php
include_once('menu.class.php');
 
class ViewMenu
{
	private $menu;
 
	public function __construct()
	{
		$this->menu = new Menu();
	}
 
	//méthode pour afficher le menu
	public function afficherMenu()
	{
		$this->menu->creerMenu();
 
		$i=1;
		echo "<div id='menu' align='left'>";
 
		echo '<div id="acceuil">';
			echo '<a href="index.php">Accueil</a>';
		echo '</div>';
 
		echo "<ul class='non_puce'>";
 
		foreach($this->menu->getMenu() as $ligne)
		{
			echo "<div id='sous_menu_$i' class='style'>";
			echo "<ul class='non_puce'>";
			foreach($ligne as $colone)
			{
				echo $colone;
 
			}
			echo "</ul>";
			echo "</div>";
			$i = $i+1;
		}
		echo "</ul>";
		echo "</div>";
	}
 
	public function getMenu()
	{
		return $this->menu;
	}
}
ViewHead.class.php
Code :
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
 
<?php
include_once('head.class.php');
 
class ViewHead
{
	private $header;
 
	public function __construct()
	{
		$this->header = new Head();
	}
 
	//affiche logo du site
	public function afficherLogo()
	{
		echo '<div id="logo">';
			echo '<img src='.$this->header->getLogo().'alt="logo du site"/>';
		echo '</div>';
	}
 
	//affiche le titre général du site
	public function afficherTitre()
	{	
		echo '<div id="titre_site">';
			echo '<h3>'.$this->header->getTitre().'</h3>';
		echo '</div>';
	}
 
	//affiche l'en-tête de la page internet
	public function afficherHead()
	{
		$this->afficherLogo();
		$this->afficherTitre();
	}
}
EDIT :
J'ai finallement developper les Controller voici les 2 classe supplémentaire et la modif des classes correspondant

vue

ViewCorps.class.php
Code :
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
 
<?php
include_once('corps.class.php');
include_once('ControllerCorps.class.php');
 
class ViewCorps
{
	private $corps;
	private $controllerCorps;
	public function __construct()
	{
		$this->corps = new Corps();
		$this->controllerCorps = new ControllerCorps();
	}
 
 
	//cette fonction affiche le corps
	public function afficherCorps()
	{
 
		//si l'attribut dans URL n'existe pas la page d'accueil est construite
		if(!isset($_GET['idPage']))
		{
			$this->accueil();		
		}
		else
		{
			//corps de la page
			echo '<div id="corps">';
				echo '<p>';
					$this->rappelMenu();
					$this->construireCorps();
				echo '</p>';
				$this->corps->getFooter()->afficherFooter();
			echo '</div>';
		}
	}
 
	//construit un titre qui se trouve dans un texte du corps de la page
	public function detailTitre($donne)
	{
		//si c'est le titre d'un texte
		if($donne['typeTexte'] == "DT")
		{
			echo '<h4>'.$donne['textePrecedent'].'</h4>';
		}
	}
 
	//construit le texte du coprs de la page
	public function detailTexte($donne)
	{
		//si c'est du texte simple
		if($donne['typeTexte'] == "DX")
		{
			echo "<p>".$donne['textePrecedent']."</p>";
		}
	}
 
	//construit une URL
	public function detailURL($donne)
	{
		//si c'est une URL
		if($donne['typeTexte'] == "DU")
		{
			//si c'est un document on construit de tel sorte qu'on telecharge le document pour le regarder
			if(substr($donne['pointeVers'],0,3)=="DOC")
			{
				$sql = "SELECT * FROM insertion_job WHERE idPage='".$donne['pointeVers']."'";
				$requete = $this->corps->getConnexion()->query($sql);
				$ref = $requete->fetch();
 
				echo "<center><a href=".$this->controllerCorps->lienWord($ref['textePrecedent'])." target='_blank'>".$donne['textePrecedent']."</a></center>";
				echo "<center><a href='pdf/".$ref['texteSuivant']."' target='_blank'>(version pdf)</a></center><br/>";
				$requete->closeCursor();
			}
			//sinon on construit le lien qui pointe vers la page associée
			else
			{
				$lien = $this->controllerCorps->versPage($donne['pointeVers']);
				echo "<center><a href=$lien>".$donne['textePrecedent']."</a></center><br/>";
			}
		}
	}
 
	//construit une liste numéroté
	public function detailNumerote($donne,$i)
	{
		//si le texte est numéroté
		if($donne['typeTexte'] == "DN")
		{
			$i = $i + 1;
			echo '<p class="tabulation">'.$i.'. '.$donne['textePrecedent'].'</p>';
		}
		return $i;
	}
 
	//construit une URL avec du texte qui se trouve avant le lien
	public function detailTexteUrl($donne)
	{
		//si texte avant url
		if($donne['typeTexte'] == "AU")
		{
			$lien = $this->controllerCorps->versPage($donne['pointeVers']);
			echo "<p>".$donne['textePrecedent']."<a href=$lien>".$donne['url']."</a></p>";
		}
	}
 
	//construit une URL avec du texte avant et apres le lien
	public function detailTexteUrlTexte($donne)
	{
		//si texte avant et apres url
		if($donne['typeTexte'] == "AP")
		{
			$lien = $this->controllerCorps->versPage($donne['pointeVers']);
 
			if($_GET['idPage']=="P01021")
			{
				echo "<span class='tabulation'>".$donne['textePrecedent']." "."<a href=$lien class='gras'>".$donne['url']." </a>".$donne['texteSuivant']."</span><br/>";
			}
			else
			{
				echo $donne['textePrecedent']."<a href=$lien>".$donne['url']."</a>".$donne['texteSuivant']."<br/>";
			}
		}
	}
	//créer une liste a puce
	public function detailListe($donne)
	{
 
		//liste a puce
		if($donne['typeTexte'] == "DL")
		{ 		
			echo '<ul class="non_puce tabulation">';
				echo '<li class="tabulation">-'.$donne['textePrecedent'].'</li><br/>';
			echo '</ul>';
		}
 
	}
 
	//si le tout le paragraphe d'un texte doit etre en italique
	public function detailItalique($donne)
	{
		//si texte italique
		if($donne['typeTexte'] == "DI")
		{
			if($_GET['idPage']=="P01032")
			{
				echo '<div class="tab">';
				echo "<span class='italique'>".$donne['textePrecedent']."</span>";
				echo '</div><br/>';
			}
			else
			{
				echo "<span class='italique'>".$donne['textePrecedent']."</span><br/>";
			}
		}
 
	}
 
	//construit le corps de la page
	public function construireCorps()
	{
 
		$i = 0;
 
		$sql = 'SELECT * FROM insertion_job WHERE idPage=\''.$_GET['idPage'].'\'AND sequence > 0 AND flag=1 ORDER BY sequence';
		$requete_1 = $this->corps->getConnexion()->query($sql);
		while($donne = $requete_1->fetch())
		{
 
			$this->detailTitre($donne);
 
			$this->detailTexte($donne);
 
			$this->detailURL($donne);
 
			$i = $this->detailNumerote($donne,$i);
 
			$this->detailTexteUrl($donne);
 
			$this->detailTexteUrlTexte($donne);
 
			$this->detailItalique($donne);
 
			$this->detailListe($donne);
 
		}
		$requete_1->closeCursor();
	}
 
	//cette fonction est appelée lorsqu'il faut afficher un rappel du menu et/ou sous-menu d'une rubrique
	//facilite la navigation pas besoin de revenir a une page précédente pour aller sur le lien suivant
	//vu que le menu est rappelé en haut gauche.
	public function rappelMenu()
	{
		//si on se trouve sur les pages qui ont cet ID on reconstruit le menu
		if($_GET['idPage']=="P01011" OR $_GET['idPage']=="P01021" OR $_GET['idPage']=="P01031" OR $_GET['idPage']=="P01041" OR $_GET['idPage']=="P01051" OR $_GET['idPage']=="P01061" OR $_GET['idPage']=="P01071" OR $_GET['idPage']=="P01121" OR $_GET['idPage']=="P01221" OR $_GET['idPage']=="P01321" OR $_GET['idPage']=="P01421" OR $_GET['idPage']=="P01521" OR $_GET['idPage']=="DOC000")
		{
			$j = 0;
			$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P01001\' AND typeTexte=\'DU\' ORDER BY sequence';
			$requete_1 = $this->corps->getConnexion()->query($sql);
			echo '<div class="rappelMenu">';
				echo '<span class="gras">Le CV</span><br/>';
				while($donnee_1 = $requete_1->fetch())
				{
					$j = $j + 1;
					//si on pointe vers un document, on affiche 2 liens : format word et format PDF
					if(substr($donnee_1['pointeVers'],0,3)=="DOC")
					{
						$sql_2 = "SELECT * FROM insertion_job WHERE idPage='".$donnee_1['pointeVers']."'";
						$requete_2 = $this->corps->getConnexion()->query($sql_2);
						$ref = $requete_2->fetch();
						echo "<a href=".$this->controllerCorps->lienWord($ref['textePrecedent'])." target='_blank'>".$donnee_1['textePrecedent']."</a>";
						echo "<a href=".$this->controllerCorps->lienPDF($ref['texteSuivant'])." target='_blank'>(version pdf)</a><br/>";
					}
					//sinon on pointe vers la page et les textes concernés
					else
					{
						$lien = $this->controllerCorps->versPage($donnee_1['pointeVers']);
						echo "<a href=$lien>".$donnee_1['textePrecedent']."</a><br/>";
					}
					//si on se retrouve dans une page qui possède cet ID on construit un sous-menu
					if( ($_GET['idPage']=="P01121" AND $j == 2) OR ($_GET['idPage']=="P01221" AND $j == 2)  OR ($_GET['idPage']=="P01321" AND $j == 2) OR ($_GET['idPage']=="P01421" AND $j == 2)OR ($_GET['idPage']=="P01521" AND $j == 2))
					{
						$sql_2 = 'SELECT * FROM insertion_job WHERE idPage=\'P01021\' AND typeTexte=\'AP\' ORDER BY sequence';
						// on fait une requete qui recupère les enregistrements qui rappel le menu
						$requete_2 = $this->corps->getConnexion()->query($sql_2);
 
						while($donne_2 = $requete_2->fetch())
						{
							$lien = $this->controllerCorps->versPage($donne_2['pointeVers']);
							echo "<dd><a href=$lien>".$donne_2['url']."</a>".$donne_2['texteSuivant']."</dd>";
						}
 
						$requete_2->closeCursor();
 
					}
				}
				$requete_1->closeCursor();
			echo '</div>';
			echo '<br/>';
		}
		if( $_GET['idPage']=="P01012" OR $_GET['idPage']=="P01022"OR $_GET['idPage']=="P01032"OR $_GET['idPage']=="P01042"OR $_GET['idPage']=="P01052" OR $_GET['idPage']=="P01062" OR $_GET['idPage']=="P01072" OR $_GET['idPage']=="P01082")
		{
			$j = 0;
			$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P01002\' AND typeTexte=\'DU\' ORDER BY sequence';
			$requete_1 = $this->corps->getConnexion()->query($sql);
			echo '<div class="rappelMenu">';
				echo '<span class="gras">La lettre de motivation</span><br/>';
				while($donnee_1 = $requete_1->fetch())
				{
					$j = $j + 1;
					//si on pointe vers un document, on affiche 2 liens : format word et format PDF
					if(substr($donnee_1['pointeVers'],0,3)=="DOC")
					{
						$sql_2 = "SELECT * FROM insertion_job WHERE idPage='".$donnee_1['pointeVers']."'";
						$requete_2 = $this->corps->getConnexion()->getConnexion()->query($sql_2);
						$ref = $requete_2->fetch();
						echo "<a href=".$this->controllerCorps->lienWord($ref['textePrecedent'])." target='_blank'>".$donnee_1['textePrecedent']."</a>";
						echo "<a href=".$this->controllerCorps->lienPDF($ref['texteSuivant'])." target='_blank'>(version pdf)</a><br/>";
					}
					//sinon on pointe vers la page et les textes concernés
					else
					{
						$lien = $this->controllerCorps->versPage($donnee_1['pointeVers']);
						echo "<a href=$lien>".$donnee_1['textePrecedent']."</a><br/>";
					}
					//si on se retrouve dans une page qui possède cet ID on construit un sous-menu
					// if( ($_GET['idPage']=="P01121" AND $j == 2) OR ($_GET['idPage']=="P01221" AND $j == 2)  OR ($_GET['idPage']=="P01321" AND $j == 2) OR ($_GET['idPage']=="P01421" AND $j == 2)OR ($_GET['idPage']=="P01521" AND $j == 2))
					// {
						// $sql_2 = 'SELECT * FROM insertion_job WHERE idPage=\'P01021\' AND typeTexte=\'AP\' ORDER BY sequence';
						// on fait une requete qui recupère les enregistrements qui rappel le menu
						// $requete_2 = $this->connexion->getConnexion()->query($sql_2);
 
						// while($donne_2 = $requete_2->fetch())
						// {
							// $id = $donne_2['pointeVers'];
							// echo "<dd><a href='index.php?idPage=$id'>".$donne_2['url']."</a>".$donne_2['texteSuivant']."</dd>";
						// }
 
						// $requete_2->closeCursor();
 
					// }
				}
				$requete_1->closeCursor();
			echo '</div>';
			echo '<br/>';
		}
	}
 
 
	//appel de la fonction lorsqu'on est à l'accueil.
	//cette fonction créer l'accueil.
	public function accueil()
	{
		$sql = 'SELECT * FROM insertion_job WHERE idPage=\'P00000\' AND flag=1';
		$requete = $this->corps->getConnexion()->query($sql);
 
		echo '<div id="corps">';
 
			echo '<p>';
 
				while($donne = $requete->fetch())
				{
					if($donne['typeTexte'] == "DT")
					{
						echo '<h4>'.$donne['textePrecedent'].'</h4>';
					}
					if($donne['typeTexte'] == "DX")
					{
						echo '<p>'.$donne['textePrecedent'].'</p>';
					}
				}
				$requete->closeCursor();
 
			echo '</p>';
		$this->corps->getFooter()->afficherFooter();
		echo '</div>';
	}
 
}
ViewMenu.class.php
Code :
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
 
<?php
include_once('menu.class.php');
include_once('ControllerMenu.class.php');
 
class ViewMenu
{
	private $menu;
	private $controllerMenu;
 
	public function __construct()
	{
		$this->menu = new Menu();
		$this->controllerMenu = new ControllerMenu();
 
	}
 
	//méthode pour afficher le menu
	public function afficherMenu()
	{
		$this->menu->creerMenu();
 
 
		echo "<div id='menu' align='left'>";
 
		echo '<div id="acceuil">';
			$reference = $this->controllerMenu->versAccueil();
			echo '<a href='.$reference.'>Accueil</a>';
		echo '</div>';
 
		echo "<ul class='non_puce'>";
 
 
 
		$i=0;
		foreach($this->menu->getMenu() as $ligne )
		{
			$j=0;
 
 
			echo "<div id='sous_menu_$i' class='style'>";
			echo "<ul class='non_puce'>";
			foreach($ligne as $colone )
			{	
				if($j==0)
				{
					echo "<li id='menu_$i' class='gras'>".$colone."</li>";
				}
				else
				{
					//reference vers la page a atteindre
					$reference = $this->controllerMenu->versPage($i,$j,$this->menu->getId());
					echo  "<li><a href=$reference>".$colone."</a></li>";
				}
 
				$j = $j +1;
			}
			echo "</ul>";
			echo "</div>";
			$i = $i+1;
		}
		echo "</ul>";
 
		echo "</div>";
	}
 
	public function getMenu()
	{
		return $this->menu;
	}
}
controller

ControllerCorps.class.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php
 
class ControllerCorps
{
 
	public function lienWord($texte)
	{
		return "'word/$texte'";
	}
 
	public function lienPDF($texte)
	{
		return "'pdf/$texte'";
	}
 
	public function versPage($id)
	{
		return "'index.php?idPage=$id'";
	}
}
ControllerMenu.class.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php
 
class ControllerMenu
{
 
	//renvoi l'id de la page recherchée
	public function versPage($i,$j,$tabId)
	{
 
		$id = $tabId[$i];
 
		return "'index.php?idPage=$id[$j]'";
	}
 
	public function versAccueil()
	{
		return "index.php";
	}
}
Je reste ouvert à vos conseil et critique.
dans l'attente de vous lire.
dharkan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h42.


 
 
 
 
Partenaires

Hébergement Web