|
Le script de news fait partie des scripts PHP les simples à réaliser.
Les news, ce ne sont que des éléments d'une même table que nous affichons les uns en dessous des autres (soit un affichage basique des enregistrements d'une table MySQL).
Alors quelles sont les informations récurrentes des news que l'on affiche : .
- le nom de l'auteur de la news.
- la date de publication de la news.
- le texte de la news elle-même.
- un champs id de type AUTO_INCREMENT qui nous permettra de faire la distinction entre toutes les news. .
Ce qui nous donne alors tous les attributs dont nous allons avoir besoin pour la création de notre table contenant toutes les news. .
La table que nous allons créer pour notre script de news aura la structure suivante :
Requête table news:
CREATE TABLE news (
id int(6) NOT NULL auto_increment,
auteur VARCHAR(30) NOT NULL,
titre text NOT NULL,
date datetime NOT NULL default '0000-00-00 00:00:00',
texte_news text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
Et maintenant que le problème de la table est réglé. .
De combien de pages WEB avons-nous besoin pour mettre en place ce script ? .
Et bien nous aurons tout simplement besoin de : .
- une page affichant les diverses news (en général il s'agit de la page d'accueil du site) .
- une page permettant la rédaction de nos news (soit donc une page contenant un formulaire permettant la saisie de ces news) .
- une page insérant les news dans notre base de données. .
Donc un total de trois pages à écrire. .
Et afin d'améliorer la partie administration de ce script, nous pourrons bien sur réaliser d'autres pages WEB permettant : .
- de modifier une news.
- de supprimer une news.
Nous allons supposer que les news seront affichées sur la page d'accueil de votre site (soit sur la page index.php directement à la racine de votre site). .
Afin de ne pas trop retoucher le code de votre page index.php (soit la page d'accueil déjà existante de votre site) nous allons placer tout le code permettant d'afficher les news dans une autre page PHP (donc différente de la page d'accueil du site, et que l'on nommera news.php). .
Mai nous allons quand même pouvoir afficher les news sur la page d'accueil du site via la fonction include() de PHP. .
Voyons tout de suite le code de la page news.php :
Code de la page: news.php
<?php
// on se connecte à notre base
$base = mysql_connect ('serveur', 'login', 'password');
mysql_select_db('nom_base', $base);
// lancement de la requête. on sélectionne les news que l'on va ordonner suivant l'ordre "inverse" des dates (de la plus récente à la plus vieille :DESC) tout en ne sélectionnant que le nombre voulu de news à afficher (LIMIT)
$sql = 'SELECT auteur, titre, date, texte_news FROM news ORDER BY date DESC;';
// on lance la requête (mysql_query) et on impose un message d'erreur si la equête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// On compte le nombre de news stockées dans la base de données
$nb_news = mysql_num_rows($req);
if ($nb_news == 0) {
echo 'Aucune news enregistrée.';
}
else {
// si on a au moins une news, on l'affiche
while ($data = mysql_fetch_array($req)) {
// on décompose la date
sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min,
$sec);
// on affiche les résultats
echo '<br />News de : ' , htmlentities(trim($data['auteur'])) , '<br />';
echo 'Titre : ' , htmlentities(trim($data['titre'])) , '<br />';
echo 'Postée le : ' , $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' ,
$min , ':' , $sec , '<br /><br />';
echo 'News : ' , nl2br(htmlentities(trim($data['texte_news']))) , '<br />';
}
}
// on libère l'espace mémoire alloué à cette requête
mysql_free_result ($req);
// on ferme la connexion à la base de données
mysql_close ();
?>
Et voila
Ensuite, en supposant que vous ayez appelé cette page news.php et qu'elle se trouve à la racine de votre site WEB, il ne vous restera plus qu'à inclure ce code dans votre page index.php afin que les news apparaissent sur la page d'accueil de votre site.
Nous allons donc utiliser la fonction include(), et nous allons la placer (dans la page index.php) à l'endroit exact où vous voulez que les news apparaissent.
Par exemple, on pourrait très bien avoir comme code pour la page index.php :
Code de la page: index.php
<html>
<head>
<title>Index de mon site WEB</title>
</head>
<body>
<!—ici le code HTML avant l'affiche des news (tout dépend de la construction de votre site)
-->
<div>
<?php
// on inclut l'affichage de nos news
include ('news.php');
?>
</div>
<!—et ici le code HTML après l'affiche des news -->
</body>
</html>
La partie affichage des news est réglé.
On va écrire notre page nous permettant d'insérer de nouvelles news.
Pour cette page, le visiteur n'a pas intérêt à y accéder, nous allons la placer dans un répertoire de votre site WEB (répertoire que vous choisirez vous-même).
Ecrivons alors le code de la page, la page contenant un formulaire.
Le formulaire de cette page comportera alors
- un champ texte permettant d'écrire le nom de l'auteur de la news,
- un second champ texte permettant d'écrire le titre de la news
-et une textarea permettant de saisir la news elle-même.
On aura alors, pour la page insert_news.php :
Code de la page: insert_news.php
<?php
// on teste si le formulaire a été validé
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
// on se connecte à notre base
$base = mysql_connect ('serveur', 'login', 'password');
mysql_select_db('nom_base', $base);
// on teste la déclaration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['news'])) {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
else {
if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['news'])) {
$erreur = 'Au moins un des champs est vide.';
}
// si tout est bon, on peut commencer l'insertion dans la base
else {
// lancement de la requête d'insertion
$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).
'", "'.mysql_escape_string($_POST['titre']).'", "'.date("Y-m-d H:i:s").'", "'.
mysql_escape_string($_POST['news']).'")';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige vers la page d'accueil du site (attention, cette redirection ne
fonctionne qui si vous avez placé cette page dans un répertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'accès afin de retomber sur la page d'accueil du site.
header('Location: ../index.php');
// on termine le script courant
exit();
}
}
}
?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>
<body>
<!-- on fait pointer le formulaire vers la page traitant les données -->
<form action="insert_news.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST[
'auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Titre :</span>
</td><td>
<input type="text" name="titre" maxlength="50" size="50" value="<?php if (isset($_POST[
'titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
</td></tr><tr><td>
<span class="gras">News :</span>
</td><td>
<textarea name="news" cols="50" rows="10"><?php if (isset($_POST['news'])) echo
htmlentities(trim($_POST['news'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Poster la news">
</td></tr></table>
</form>
<?php
// on affiche les erreurs éventuelles
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>
Je vous laisse le soin de faire vous-même les pages permettant de modifier ou de supprimer une news (ce n'est pas si compliqué que çà, il suffit d'y bien réfléchir sur une feuille de papier avant de se lancer dans la programmation ).
Vous pouvez aussi pimenter avec une gestion de smily ou tout ce que vous desirez.
Haut de page
|