Mise en place de la page affichant les articles

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
A partir du fichier "index.php" qui nous sert de modèle, nous créons un nouveau fichier nommé "page1.php" :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
 <head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>***</title>
<meta name="Description" content="***" />
<link href="http://<?php echo $_SERVER['HTTP_HOST'];?>/style.css" rel="stylesheet" type="text/css"/>
</head>
 
<body>
 
<div id="moncadre">
<?php include('menu.php');?>
<div class="cadrecentrale">
<?php include('formulaire.php');?>
<h1>***</h1>
</div>
<?php include('footer.php');?>
</div>
 
</body>
</html>
 Nous allons afficher dans cette page :
  • Le titre de l'article.
  • Le contenu de l'article.
  • La date d'édition de l'article.
  • Un fil d’Ariane.
  • Un système de commentaire.
  • Les X derniers articles similaires aléatoirement.
Nous commençons à coder au dessus du "DOCTYPE".

On inclue les fonctions et on va chercher directement dans l'url en cours le nom de la page avec son extension par l'intermédiaire de la fonction pathinfo()  qui retourne des informations sur un chemin système :
<?php
include('fonctions.php');
//fichier avec extension pour la requête sql
$path_parts = pathinfo($_SERVER['SCRIPT_FILENAME']);
Si on effectue un print_r() sur la variable "$path_parts" comme ci-dessous :
echo '<pre>';
print_r($path_parts);
echo '</pre>';
..nous obtenons le tableau suivant :
Array
(
    [dirname] => C:/wamp/www/FREE/categorie-2
    [basename] => article-3.php
    [extension] => php
    [filename] => article-3
)
 La variable "$path_parts['basename']" contient donc l'url de la page en cours qui correspond également à ce qui est enregistré dans le champ "titre_rewrite" de la table "CONTENU"...ce qui va nous permettre de sortir simplement toute les données correspondant à l'article.

On place l'élément du tableau ['basename'] dans une variable :
$nom_du_fichier = $path_parts['basename'];
On utilise cette même variable en supprimant l’extension du fichier pour l'utiliser dans le fil d’Ariane :
//fichier sans l'extension utilisé dans le fil d'Ariane
$nom_du_fichier_sans_extension = sanspointphp($nom_du_fichier);
On se connecte à la BD puis on va chercher les données de l'article :
//On se connecte à la base de données
include('connexion_bd.php');
connexion_bd();
//On va chercher tout ce qui correspond au nom du fichier
$page = mysql_query("SELECT * FROM CONTENU WHERE titre_rewrite='".mysql_real_escape_string($nom_du_fichier)."'");
On vérifie si il y a quelque chose et si il ni y rien, on redirige vers l'accueil :
//on voie si il y a quelque chose
if(mysql_num_rows($page) == 0)
{
    //Si il n'y a rien, on redirige vers l'index
    header("Status : 301 Moved Permanently");
    header('location:http://'.$_SERVER['HTTP_HOST'].'');
    exit();
}
Si il y a quelque chose, on place les données dans des variables :
else
{
    //il y a quelque chose
    while($affiche = mysql_fetch_array($page))
    {  
        //$id sert pour le système de commentaire
        $id = $affiche['id'];
        $titre=$affiche['titre'];
        $description=$affiche['description'];
        $contenu=$affiche['texte'];
        $id_categorie = $affiche['id_categorie'];
        $date = convertit_date($affiche['date']);
        $commentaire = $affiche['commentaire'];
    }
 On va chercher les infos de la catégorie qui correspondent pour construire le fil d’Ariane et on referme le tout :
    $categorie = mysql_query("SELECT nom_categorie,titre_rewrite FROM CATEGORIES WHERE id='".mysql_real_escape_string($id_categorie)."'");
    while($affiche_categorie = mysql_fetch_array($categorie))
    {
        $titre_categorie=$affiche_categorie['nom_categorie'];
        $titre_categorie_rewrite=$affiche_categorie['titre_rewrite'];
    }
}
?>
 Nous pouvons à présent remplir les données des méta-tags :
  <title><?php echo $titre;?></title>
  <meta name="Description" content="<?php echo $description;?>" />
  <link rel="canonical" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/<?php echo $titre_categorie_rewrite;?>/<?php echo $nom_du_fichier_sans_extension;?>" />
On remplit la balise h1 et on place la date :
<h1><?php echo $titre;?></h1><span class="date"><?php echo $date;?></span>
Puis nous créons le fil d'ariane :
<p class="fil-ariane"><a title="Accueil" href="http://<?php echo $_SERVER['HTTP_HOST'];?>">Accueil</a> »
<strong><a title="<?php echo $titre_categorie;?>" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/<?php echo $titre_categorie_rewrite;?>/"><?php echo $titre_categorie;?></a></strong> »
<strong><a title="<?php echo $titre;?>" href="http://<?php echo $_SERVER['HTTP_HOST'];?>/<?php echo $titre_categorie_rewrite;?>/<?php echo $nom_du_fichier_sans_extension;?>"><?php echo $titre;?></a></strong>
</p>
Juste après, on affiche le contenu :
<?php
echo $contenu;
On va chercher 5 articles au pif appartenant à la même catégorie que l'article en cours.

Cette partie est facultative mais elle a 2 intérêts :
  1. Les articles peuvent intéresser vos visiteurs et vous les gardés ainsi plus longtemps sur votre site.
  2. ça permet d'effectuer un maillage interne.
//On va chercher les X articles similaires
$page_similaire = mysql_query("SELECT titre, titre_rewrite FROM CONTENU WHERE titre_rewrite!='".mysql_real_escape_string($nom_du_fichier)."' AND valide = 'oui' AND id_categorie = '".mysql_real_escape_string($id_categorie)."' ORDER BY RAND() LIMIT 5");
 
//Si il y a quelque chose
if(mysql_num_rows($page_similaire) != 0)
{
echo '<span class="commentaire-thematique">Dans la même thématique</span><ul class="articles-similaires">';
    //il y a quelque chose
    while($affiche_similaire = mysql_fetch_array($page_similaire))
    {
      echo '<li><strong><a title="'.$affiche_similaire['titre'].'" href="http://'.$_SERVER['HTTP_HOST'].'/'.$titre_categorie_rewrite.'/'.sanspointphp($affiche_similaire['titre_rewrite']).'">'.$affiche_similaire['titre'].'</a></strong></li>';
    }
echo '</ul>';
}
Pour finir, on inclue le système de commentaires :
//On affiche ou pas le système de commentaires
if($commentaire == "oui" AND !empty($adresse_email)){
include('commentaire.php');
}
?>
2 conditions sont requises pour afficher le système de commentaires :
  1. Vous devez choisir de l'inclure lors de la rédaction d'un article.
  2. Votre adresse mail doit être renseigné dans le fichier des fonctions.
schéma du code php jusqu'à la requête sql
Voir/déposer un commentaire (0) | Signaler un problème