Créer un livre d'or
Élaboration d'un livre d'Or
À quoi peut servir un livre d'or ? C'est la première question qui peut venir en tête. La réponse est assez simple. À la manière des commentaires accompagnant des articles, il est possible de faire que les internautes puissent donner leur sentiment sur l'ensemble du site. Tant d'un point de vue esthétique, que concernant son contenu.
Le livre d'or n'a pas besoin d'une allure sofistiquée, par contre, des éléments essentiels sont incontournables.
Protocole
En toute simplicité, il s'agit de donner accès à une page que l'on peut agrémenter de textes de présentation, afin de mettre en valeur son site.
L'internaute n'a pas forcément envie de vous lire plus que nécessaire, mais cet accueil pourrait l'influencer.
Plusieurs principes peuvent être utilisés, mais le choix multiple aide la décision.
Le meilleur emplacement s'avère être le bas de page, en même temps que les mentions légales et le contact.
Formulaire de saisie
Le formulaire reste une partie de programmation importante, car contient l'algorithme pour intercepter les choix de l'internaute.
Éléments incontournables :
- Un identité
Loggin, Prénom ou Nom - Un courriel
Devra être unique - Un sujet
Proposer 3 ou 4 thèmes du site - Le texte
Essentiel - La date & l'heure
Le jour en cours
Un livre d'or étant signé qu'une seule fois par une personne, le courriel unique permet de vérifier l'existence de la personne dans le livre. Dans ce cas, une nouvelle proposition est rejetée.
La disposition doit tenir compte de la logique qui invite à se présenter successivement. Qui on est par son identité, puis son courriel. Vient ensuite le sujet et le texte que l'on propose. La date étant une saisie automatique, non maîtrisée par l'internaute.
Nous utiliserons dans cet exemple,
<input>...</input>
une balise
<select>...</select>
et une balise
<textarea>...</textarea>
Note
Cliquez l'onglet 'Affichage' pour voir le résultat.
Sauvegarde du livre d'or
Dans les cours, nous abordons l'utilisation de la base de données, élément essentiel pour conserver les informations recueillies. Le langage SQL offre suffisament d'outils pour une bonne gestion, en toute sécurité.
Pour commencer, il s'agit de créer une table nommée (par exemple) livreor avec les champs appropriés. Dans notre cas, nous choisissons : identite, courriel, sujet, texte et date. Ne pas oublier le champs qui permet d'indexer le tout (Dans notre exemple ID_livre).
Pour chaque champs, il faut en définir le type. Ainsi, les données sauvegardées recevront les bonnes valeurs :
ID_livre INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
identite VARCHAR(125) NULL,
courriel VARCHAR(250) NOT NULL,
sujet ENUM('sujet1','sujet2','sujet3') NOT NULL DEFAULT 'sujet1',
texte TEXT NOT NULL,
dateFiche DATETIME NOT NULL,
PRIMARY KEY(ID_livre)
) ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci
Ainsi, nous avons là une fiche pour chaque personne désirant laisser son avis dans le livre d'or. Le champs ID_livre étant auto incrémenté, les fiches s'ajouteront automatiquement. De plus il ne sera pas nécessaire de faire des mis à jour, ce qui simplifie la gestion de cette table.
Il est aussi possible de conserver l'IP du visiteur, avec la variable d'environnement $_SERVER, bien que cela ne soit forcément nécessaire.
Note
Cliquez l'onglet 'Exemples' pour voir l'utilisation de cette table.
Afficher le contenu du livre d'or
Il est important que chaque internaute puisse se retrouver dans le livre. La page proposera donc, sous forme de liste, une succession de fiches représentant chaque personne ayant signée le livre. Une liste inverse allant de la dernière en date vers la première. Le formulaire se trouvera juste au-dessus de cette liste. Et pour faire bonne mesure, il faudra prévoir une pagination permettant de n'avoir que cinq ou dix fiches, afin de ne pas surcharger la page.
Des exemples pour la présentation du livre
La mise en page du contenu du livre dépend évidemment du style du site. Néanmoins, il est impératif que la fluidité soit privilègiée.
Préparation PDO
$laTable = new PDO('mysql:dbname=' . SQLBASE . ';charset=utf8;host='.SQLHOTE, SQLUSER, SQLPASSE);
$laTable->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$laTable->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
?>
Ce script dans un fichier à part permet de l'inclure n'importe où cela s'avère nécessaire. (exemple: preparation.php)
Le script PHP pour la sauvegarde
include 'preparation.php';
if(isset($_POST)){
extract($_POST);
$dateFiche = date('Y-m-d H:i:s');
if(!empty($texte)){
$Requete = "INSERT INTO livreor SET identite = ?, courriel = ?, sujet = ?, texte = ?, dateFiche = ?";
try{
$acces = $laTable->prepare($Requete);
$acces->execute([$identite, $courriel, $sujet, $texte, $dateFiche]);
}
catch(Exception $e){
die("Erreur modification: " . $e->getMessage());
}
}
}
?>
Cet deuxième script dans un autre fichier, que l'on pourrait appeler enregistre.php. Son utilisation est lié au formulaire.
Le script PHP pour la lecture
include 'preparation.php';
$Requete = "SELECT * FROM livreor DESC dateFiche";
$acces = $laTable->prepare($Requete);
$acces->execute([$identite, $courriel, $sujet, $texte]);
while($ligne = $acces->fetch()){
<div class="ficheAvis">
echo $ligne->identite . "<br>";
echo $ligne->courriel . "<br>";
echo $ligne->sujet . "<br>";
echo $ligne->texte . "<br>";
</div>
}
?>
Tandis que ce troisième script pourrait être appelé lecture.php, et serait utilisé au moment de l'affichage de l'article concerné.
Évidemment, il faut prévoir pour chaque fiche un cadre avec un style défini, afin de bien les distinguer. Chaque champs prenant la place qui lui revient pour une bonne présentation.
Il est préférable de mettre le formulaire de saisie, pour une nouvelle fiche, au-dessus des fiches existantes.