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; } }
Partager