Affichage des articles par catégorie

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.
Nous allons maintenant créer une page qui permet de lister l'ensemble des articles contenu dans chaque catégories. Pour commencer, on ouvre le fichier des fonctions et on y insère la fonction suivante :
//Fonction permettant de supprimer l’extension du fichier ".php"
function sanspointphp($supprime_extension)
{
    $supprime_extension = substr($supprime_extension, 0, -4);
    return $supprime_extension;
}
Cette fonction permet de supprimer l'extension d'un fichier en supprimant ".php". Je vous expliquerais un peut plus tard à quoi sert exactement cette fonction.
 
A partir du gabarit du dossier "admin" on créé un nouveau fichier que l'on va nommer "voir-categorie.php" :
<?php
include('../fonctions.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>Article(s) de la cat&eacute;gorie</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
 
</head>
 
<body>
 
<div id="moncadre">
 
<?php include('menu.php');?>
 
<div class="cadrecentrale">
<!--code ici-->
</div>
 
<?php include('footer.php');?>
 
 
</div>
 
</body>
 
</html>
Si nous faisons un petit retour en arrière sur la page d'accueil de l'administration, on distingue le lien suivant qui permet de transmettre l'id de la catégorie:
<a href="voir-categorie.php?id='.$affiche['id'].'">'.$affiche['nom_categorie'].'</a>
Tout naturellement, nous récupérons cet id pour afficher le titre de la catégorie dans la page :
<?php
$id=$_GET['id'];
//On se connecte à la base de données
include('../connexion_bd.php');
connexion_bd();
 
//On va chercher le nom de la catégorie
$dossier_article = mysql_query("SELECT nom_categorie, titre_rewrite FROM CATEGORIES WHERE id='".mysql_real_escape_string($id)."'");
while($nom_dossier = mysql_fetch_array($dossier_article))
{
    $nom_du_dossier=$nom_dossier['titre_rewrite'];
    $titre=$nom_dossier['nom_categorie'];
}
 
echo '<h1>'.$titre.'</h1>';
Ensuite on va chercher les articles qui correspondent à la catégorie :
//On sélectionne les données des articles qui correspondent à la catégorie
$result = mysql_query("SELECT id,id_categorie,titre,titre_rewrite,valide FROM CONTENU WHERE id_categorie='$id' ORDER BY id ASC");
Si il n'y a rien, on affiche un message :
//Si vide, on informe
if(mysql_num_rows($result) == 0)
{
    echo '<div class="cadre"><p>Aucun article pour le moment!</p></div>';
}
A l'inverse, si il y a quelque chose, on affiche les données dans un simple tableau XHTML :
//Il y a quelque chose, on affiche les données
else {
    echo '<table style="width: 100%;" cellpadding="2" cellspacing="2"> <tbody>     <tr>     <td class="hauttd">Article</td>     <td class="hauttd">Modifier</td>     <td class="hauttd">Supprimer</td>     </tr>';
    while($affiche = mysql_fetch_array($result))
    {
        //On vérifie si l'article est en attente ou pas
        if($affiche['valide'] == "non")
        {
            $attente = '<span class="article-attente"></span>';
        }
        else
        {
            $attente = '<span class="article-ok"></span>';
        }
        echo '<tr><td>'.$attente.'<a target="_blank" href="http://'.$_SERVER['HTTP_HOST'].'/'.$nom_du_dossier.'/'.sanspointphp($affiche['titre_rewrite']).'">'.$affiche['titre'].'</a></td>     <td><a href="modifier-article.php?id='.$affiche['id'].'&rewrite='.$affiche['titre_rewrite'].'&cat='.$id.'"><img src="images/modifier.png" alt="Modifier"/></a></td>     <td><a href="supprimer-article.php?id='.$affiche['id'].'&rewrite='.$affiche['titre_rewrite'].'&cat='.$id.'"><img src="images/supprimer.png" alt="Supprimer"/></a></td></tr>';
    }
    echo '</tbody></table>';
    //On ferme else
}
?>
Explications :
 
Lors de la création d'un article que nous verrons un peut plus tard, nous avons la possibilités de mettre un article en attente. La partie ci-dessous permet d'indiquer par l'intermédiaire d'un visuel (image) si un article est en attente ou pas :
        //On vérifie si l'article est en attente ou pas
        if($affiche['valide'] == "non")
        {
            $attente = '<span class="article-attente"></span>';
        }
        else
        {
            $attente = '<span class="article-ok"></span>';
        }
Nous avons ensuite le lien suivant et la fameuse fonction  sanspointphp() :
<a target="_blank" href="http://'.$_SERVER['HTTP_HOST'].'/'.$nom_du_dossier.'/'.sanspointphp($affiche['titre_rewrite']).'">'.$affiche['titre'].'</a>
Quand un article est enregistré en BD dans la table CONTENU, le titre est enregistré dans le champ "titre" et le nom de la page est enregistré dans le champ "titre_rewrite". Si l'article à comme titre "Article 1" alors le champ "titre_rewrite" contiendra "article-1.php".
 
Dans la boucle while, la variable $affiche['titre_rewrite'] correspond donc à "article-1.php". Si on applique la fonction sanspointphp() à cette variable, soit, sanspointphp($affiche['titre_rewrite']), c'est comme si on faisais sanspointphp(article-1.php) et comme la fonction permet de supprimer les 4 derniers éléments d'une chaine, nous obtenons donc au final "article-1".
 
Quand au 2 derniers lien suivant, ils permettent d'accéder à la modification ou suppression de l'article :
<a href="modifier-article.php?id='.$affiche['id'].'&rewrite='.$affiche['titre_rewrite'].'&cat='.$id.'"><img src="images/modifier.png" alt="Modifier"/></a>

<a href="supprimer-article.php?id='.$affiche['id'].'&rewrite='.$affiche['titre_rewrite'].'&cat='.$id.'"><img src="images/supprimer.png" alt="Supprimer"/></a>
Affichage des articles dans la catégorie

Le fichier "voir-categorie.php" dans son ensemble :
<?php
include('../fonctions.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>Article(s) de la cat&eacute;gorie</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
 
</head>
 
<body>
 
<div id="moncadre">
 
<?php include('menu.php');?>
 
<div class="cadrecentrale">
 
<?php
$id=$_GET['id'];
//On se connecte à la base de données
include('../connexion_bd.php');
connexion_bd();
 
//On va chercher le nom de la catégorie
$dossier_article = mysql_query("SELECT nom_categorie, titre_rewrite FROM CATEGORIES WHERE id='".mysql_real_escape_string($id)."'");
while($nom_dossier = mysql_fetch_array($dossier_article))
{
	$nom_du_dossier=$nom_dossier['titre_rewrite'];
	$titre=$nom_dossier['nom_categorie'];
}
 
echo '<h1>'.$titre.'</h1>';
 
//On sélectionne les données des articles qui correspondent à la catégorie
$result = mysql_query("SELECT id,id_categorie,titre,titre_rewrite,valide FROM CONTENU WHERE id_categorie='$id' ORDER BY id ASC");
//Si vide, on informe
if(mysql_num_rows($result) == 0)
{
	echo '<div class="cadre"><p>Aucun article pour le moment!</p></div>';
}
//Il y a quelque chose, on affiche les données
else {
	echo '<table style="width: 100%;" cellpadding="2" cellspacing="2"> <tbody> 	<tr> 	<td class="hauttd">Article</td> 	<td class="hauttd">Modifier</td> 	<td class="hauttd">Supprimer</td> 	</tr>';
	while($affiche = mysql_fetch_array($result))
	{
		//On vérifie si l'article est en attente ou pas
		if($affiche['valide'] == "non")
		{ 
			$attente = '<span class="article-attente"></span>';
		}
		else
		{
			$attente = '<span class="article-ok"></span>';
		}
		echo '<tr><td>'.$attente.'<a target="_blank" href="http://'.$_SERVER['HTTP_HOST'].'/'.$nom_du_dossier.'/'.sanspointphp($affiche['titre_rewrite']).'">'.$affiche['titre'].'</a></td> 	<td><a href="modifier-article.php?id='.$affiche['id'].'&rewrite='.$affiche['titre_rewrite'].'&cat='.$id.'"><img src="images/modifier.png" alt="Modifier"/></a></td> 	<td><a href="supprimer-article.php?id='.$affiche['id'].'&rewrite='.$affiche['titre_rewrite'].'&cat='.$id.'"><img src="images/supprimer.png" alt="Supprimer"/></a></td></tr>';
	}
	echo '</tbody></table>';
	//On ferme else
}
?>
 
</div>
 
<?php include('footer.php');?>
 
 
</div>
 
</body>
 
</html>
Voir/déposer un commentaire (0) | Signaler un problème