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 : 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
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 : 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
 
<?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 : 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
 
<?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 : 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
 
 
<!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 : 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
 
<?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 : 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
 
<?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;
	}
}