IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

code correct ? à améliorer ?


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    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 : 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;
    	}
    }

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu devrais plutot mettre la $connectionBDD en propreté de classe ou alors faire un Registry.

  3. #3
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    pourrait-tu m'en dire plus ?
    Tu veux dire que je crée une classe "Connexion" ?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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

  5. #5
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    alors j'ai créer la classe connexion de cette manière :

    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
     
    <?
     
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $requete = $this->connexion->getConnexion()->query($sql);
    a la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as mis <? a la place de <?php non ?

  7. #7
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    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 : 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
     
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->connectionBDD = NEW PDO(... etc ...);
    Il y a confusion ou erreur de frappe à mon sens.
    C'est $this->connection ou $this->connectionBDD ?

    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]

  9. #9
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    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.

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    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]

  11. #11
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    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

  12. #12
    Membre actif
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 336
    Points : 227
    Points
    227
    Par défaut
    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 : 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
     
    <?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 : 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
     
    <?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 : 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
     
    <?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 : 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> 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 : 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
     
    <?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 : 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
     
    <?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 : 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
     
     
    <!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 : 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
    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 : 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
     
    <?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 : 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
     
    <?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 : 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
    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 : 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
     
    <?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 : 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
     
    <?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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
     
    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.

Discussions similaires

  1. recherche code pour améliorer mon site
    Par ALTINEA dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 07/08/2007, 18h05
  2. [MySQL] Script blocant l'accès à intervalle d'une heure, code correct ou pas ?
    Par Overstone dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 06/08/2007, 09h03
  3. programme code cesar amélioré.
    Par m-laure dans le forum C
    Réponses: 4
    Dernier message: 01/04/2007, 15h45
  4. UPDATE (code correct ?)
    Par philuciole dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/08/2006, 15h54
  5. utilisation de tableaux : code correct ?
    Par kuzloka dans le forum C++
    Réponses: 5
    Dernier message: 25/12/2005, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo