Etant sur un projet personnel que je m'efforce de coder le mieux possible... avec les connaissances et l'expérience que j'ai bien entendu, ça ne veut donc pas dire que c'est bien codé. Mais bon j'essaye
Le point qui me tarode en ce moment c'est ma façon de faire pour essayer de séparer le code PHP du reste, donc du HTML et de la mise en page. Je procède de cette façon :
- Tout ce qui est traitement, requêtes et action se situe en haut de page.
- J'évite de mettre du code HTML dans mes variables mais quelques fois je n'ai pas le choix...
- Je me sert de la concaténation pour éviter de faire des boucles en pleins millieu du HTML
- Je n'affiche pas le code HTML via php, mais je fais plutôt plusieurs <?php ?> dans le HTML ( Un mauvais point au passage puisque niveau optimisation c'est bof... ).
Voilà dans les grandes lignes. J'aurais bien voulu avoir quelques avis de codeurs plus expérimentés pour savoir si je ne suis pas trop à coté de la plaque.
Voici un exemple complet puisque j'ai dans mon code les choses que j'utilise fréquemment : Constantes, résultat de requêtes, includes, concaténation
<?php
include 'inc_php/common.php';
#### Initialisation variables
$MenuPrincipal = NULL;
#### Construction du menu
$ReqSections = "SELECT id_sections, nom
FROM zcms_sections
WHERE etat = 1
ORDER BY ordre";
$ResSections = mysql_query( $ReqSections ) or die( mysql_error());
while( $ValSections = mysql_fetch_array( $ResSections ) )
{
$section = $ValSections['id_sections'];
$MenuPrincipal .= '<h2>'.$ValSections['nom'].'</h2>'; // Titre de la section
$ReqPages = "SELECT id_pages, nom
FROM zcms_pages
WHERE id_sections = $section AND etat = 1
ORDER BY ordre";
$MenuPrincipal .= '<ul class="menu">';
$ResPages = mysql_query( $ReqPages ) or die( mysql_error());
while( $ValPages = mysql_fetch_array( $ResPages ) ) // Liens de la section
{
$MenuPrincipal .= '<li><a href="index.php?page='.$ValPages['id_pages'].'">'.$ValPages['nom'].'</a></li>';
}
$MenuPrincipal .= '</ul>';
}
#### Si $page est posté en GET
if ( isset( $_GET['page'] ) )
{
// Récupération contenu page selectionée
$IdPage = mysql_real_escape_string( $_GET['page'] );
$ReqPage = "SELECT nom, description, contenu, mod_news
FROM zcms_pages
WHERE id_pages = $IdPage AND etat = 1";
$ResPage = mysql_query( $ReqPage ) or die(mysql_error());
$ValPage = mysql_fetch_array( $ResPage );
}
#### Si $page est pas posté en GET
else
{
// Récupération page par défaut, par rapport à l'ordre de sa section et à son propre ordre
$ReqPage = "SELECT nom, description, contenu, mod_news
FROM zcms_pages
WHERE etat = 1
ORDER by ordre LIMIT 0,1";
$ResPage = mysql_query( $ReqPage ) or die(mysql_error());
$ValPage = mysql_fetch_array( $ResPage );
}
#### Options affichage page
if ( AFFICHER_TITRE == 1 )
{
$TitrePage = $ValPage['nom'];
}
else
{
$TitrePage = NULL;
}
if ( $ValPage['description'] == NULL )
{
$DescriptionPage = DESCRIPTION_SITE;
}
else
{
$DescriptionPage = $ValPage['description'];
}
$ContenuPage = $ValPage['contenu'];
?>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><?php echo NOM_SITE.' : '.$TitrePage; ?></title>
<meta name="description" content="<?php echo $DescriptionPage; ?>" />
<meta name="keywords" content="<?php echo MOTSCLES_SITE; ?>" />
<style>
@import"<?php echo THEME_SITE; ?>";
@import"utilisateur/styles.css";
</style>
</head>
<body>
<div id="containeur">
<div id="header">
<h1><a title="<?php echo DESCRIPTION_SITE; ?>" href="<?php echo URL_SITE; ?>"><?php echo NOM_SITE; ?></a></h1>
</div>
<div id="colonne">
<?php echo $MenuPrincipal; ?>
</div>
<div id="block_principal">
<?php include 'news_liste.php'; ?>
<div id="page">
<h1><?php echo $TitrePage; ?></h1>
<?php echo $ContenuPage; ?>
</div>
</div>
<?php include 'inc_pages/footer.php'; ?>
</div>
</body>
</html>