Créer un site internet » Créer un site dynamique » Protection de l'administration et petit plus » Comment rendre la page d'accueil dynamique?
Comment rendre la page d'accueil dynamique?
Nous allons voir comme faire pour écrire sur la page d'accueil directement depuis l'interface d'administration et par la même occasion rendre les méta tags dynamique ... c'est à dire, avoir la possibilité de modifier à souhait le titre, la description et le contenu de la page d'accueil. Dans un premier il nous faut créer une table que l'on va nommer ACCUEIL et contiendra les champs id, titre, description et texte.
-- -- Structure de la table `ACCUEIL` -- CREATE TABLE IF NOT EXISTS `ACCUEIL` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titre` text collate latin1_general_ci NOT NULL, `description` text collate latin1_general_ci NOT NULL, `texte` text collate latin1_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ; --La table mis en place, nous intervenons maintenant dans le fichier index.php dans le quelle nous allons créer notre requête au tout début du fichier :
<?php //On se connecte à la base de données include('connexion_bd.php'); mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.'); //On sélectionne les données $index = mysql_query("SELECT titre,description,texte FROM ACCUEIL ORDER BY id ASC"); //On compte les données $verification = mysql_num_rows($index); //On boucle while($accueil = mysql_fetch_array($index)) { $titre=$accueil['titre']; $description=$accueil['description']; $contenu=$accueil['texte']; } ?>Jusque là, rien de fantastique ^^ et vous remarquerez que l'on ne sélectionne pas d'identifiant (id) et c'est normal puisque l'enregistrement et les modifications à venir vont se fairent sur un seul et unique id. Ceci dit, nous modifions maintenant la balise <title>, la méta description et la balise H1 pour les rendrent dynamique :
<title><?php if(isset($titre)){ echo $titre; } ?></title>
<meta name="Description" content="<?php if(isset($description)) { echo $description; } ?>" />
<h1><?php if(isset($titre)){ echo $titre; } ?></h1>Puis on insère notre contenu :
<?php //Si le titre ou la description sont vides, on informe par un message d'alerte if(empty($verification)) { echo '<big style="color:red">Attention, le titre et/ou la description de la page d\'accueil est vide!! Veuillez les remplir SVP.</big><br/>'; } //On affiche le contenu if(isset($contenu)) { echo $contenu; } ?>Bon, on peut faire directement un
echo $contenu mais comme tout le monde ne connaît pas l'importance de saisir un titre et une description unique par page pour le référencement, on indique alors un bon gros message d'alerte sur la page
. Voila, on en a finit avec la page d'accueil et on passe maintenant à la création d'une nouvelle page dédié à l'enregistrement et à la gestion de la page d'accueil. On créé une nouvelle page à partir de notre fichier "gabarit.php" que l'on va nommer "admin-index.php" et qui sera enregistré dans le dossier admin. Pour info, ce fichier va ressembler de base au fichier "ajouter-page.php" sur le quelle on va supprimer tout ce qui concerne les catégories et l'adapter pour qu'il enregistre les données dans la bonne table "ACCUEIL".
Ce fichier doit :
- Enregistrer nos données.
- Modifier nos données.
- Ré afficher nos données si il y a un enregistrement.
- Nous alerter si le titre ou la description est vide.
Pour la partie formulaire, c'est un peut la même chose. Si il y a quelque chose, on affiche nos données. Si il n'y a rien, bhaaa on affiche rien
.Le fichier admin-index.php dans son intégralité :
<!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>Gestion de la page d'accueil du site</title> <link href="../style.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="../ckeditor/ckeditor.js"></script> </head> <body> <div id="moncadre"> <?php include('menu.php');?> <div class="cadrecentrale"> <h1>Gestion de la page d'accueil du site</h1> <?php // on se connecte à la base de données include('../connexion_bd.php'); mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.'); //Traitement du formulaire if(isset($_POST["Valider"])) { $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"]))); $description = htmlspecialchars(stripcslashes($_POST["description"])); $contenu = stripcslashes($_POST["contenu"]); //Vérification du formulaire if(empty($titre)){ $alerte0 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de titre.</div>'; } else if(empty($description)){ $alerte1 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de description.</div>'; } //Si tout est ok else { //on vérifie si il y a un enregistrement $verif = mysql_query("SELECT * FROM ACCUEIL"); //on voie si il y a quelque chose if(mysql_num_rows($verif) == 0) { //Si il n'y a rien, on enregistre les données $result = mysql_query("INSERT INTO ACCUEIL VALUES ( '', '".mysql_real_escape_string($titre)."', '".mysql_real_escape_string($description)."', '".mysql_real_escape_string($contenu)."' ) "); //Si il y a une erreur, on crie ^^ if (!$result) { die('Requête invalide : ' . mysql_error()); } else{ //Si tout est ok, on informe le webmaster $message_ok = '<div class="erreur"><a name="ok"></a><b>Page enregistrée avec succès!</b></div>'; } } //Sinon si la 1ere requête retourne 0, c'est qu'il y a 1 enregistrement else if(mysql_num_rows($verif) == 1) { //On modifie les données de l'enregistrement $result = mysql_query("UPDATE ACCUEIL SET titre='".mysql_real_escape_string($titre)."', description='".mysql_real_escape_string($description)."', texte='".mysql_real_escape_string($contenu)."' WHERE id = 1"); //Si il y a une erreur, on crie ^^ if (!$result) { die('Requête invalide : ' . mysql_error()); } else{ //Si tout est ok, on informe le webmaster $message_ok = '<div class="erreur"><a name="ok"></a><b>Page enregistrée avec succès!</b></div>'; } } //On ferme else } //On ferme if(isset($_POST["Valider"])) } //On sélectionne les données pour les ré afficher dans le formulaire $index = mysql_query("SELECT titre,description,texte FROM ACCUEIL WHERE id=1"); while($accueil = mysql_fetch_array($index)) { $titre=$accueil['titre']; $description=$accueil['description']; $contenu=$accueil['texte']; } ?> <?php if(isset($message_ok)) { echo $message_ok; } ?> <form action="#ok" method="post"> <?php if(isset($alerte0)) { echo $alerte0; } ?> <p>Titre de la page d'accueil:<br/> <input name="titre" size="65" value="<?php if(isset($titre) AND !empty($titre)) { echo $titre; } else if(!empty($_POST["titre"])) { echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES)); } ?>" type="text"/> </p> <?php if(isset($alerte1)) { echo $alerte1; } ?> <p>Description de la page d'accueil:<br/> <textarea name="description" rows="10" cols="50" ><?php if(isset($description) AND !empty($description)) { echo $description; } else if(!empty($_POST["description"])) { echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES)); } ?></textarea></p> <?php if(isset($alerte2)) { echo $alerte2; } ?> <p>Contenu de la page d'accueil:<br/> <textarea name="contenu" rows="10" cols="50" > <?php if(isset($contenu) AND !empty($contenu)) { echo $contenu; } else if(!empty($_POST["contenu"])) { echo stripcslashes(htmlspecialchars($_POST["contenu"],ENT_QUOTES)); } ?> </textarea> <script type="text/javascript"> CKEDITOR.replace( 'contenu' ); </script></p> <p> <input name="Valider" value="Valider" type="submit"/> <input name="Effacer" value="Effacer" type="reset"/> </p> </form> </div> <?php include('../footer.php');?> </div> </body> </html>Petite explication concernant le formulaire :
Pour afficher le contenu de la table ACCUEIL dans le formulaire, on fait une simple requête comme vous le savez
. On va juste voir rapidement comment on ré affiche les données pour bien comprendre la bête
:
<input name="titre" size="65" value="<?php if(isset($titre) AND !empty($titre)) { echo $titre; } else if(!empty($_POST["titre"])) { echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES)); } ?>" type="text"/>C'est très simple, dans un premier temps on vérifie si la variable existe et si elle contient quelque chose et si tel est le cas on l'affiche :
if(isset($titre) AND !empty($titre)) { echo $titre; }Si la requête contient un gros "kedal", on ré affiche les données saisies par l'utilisateur (vous) au cas ou le formulaire plante ou génére une erreur (ce qui évite de tout ré écrire une seconde fois) :
else if(!empty($_POST["titre"])) { echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES)); }Voila, reste plus qu'à faire un simple lien depuis le fichier menu.php du dossier admin vers cette nouvelle page :
<li><a class="menu" title="Gestion page d'accueil" href="admin-index.php">Gestion page d'accueil</a></li>THE END ^^...

Signaler une erreur
Création d'un moteur de recherches
Protection de l'administration et petit plus
Formulaire d'upload d'images


