Welcome! Anonymous


[Script] Newsletter

[Script] Newsletter

Messagede Tchupa » Dim 13 Juil 2008 00:10

Bonjour , voilà je vais vous expliquer le plus simple possible comment faire une newsletter pour votre site web.

Tout d'abord la base de donnée.
Demandons-nous 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 identificateur unique (par exemple un champs id de type AUTO_INCREMENT) qui nous permettra de faire la distinction entre toutes les news.

Voici le code pour créer la table.Il vous suffit de la copier coller dans requête sql sous phpmyadmin par exmeple.
Code: Tout sélectionner

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;
Attaquons nous au script php.
Avant de continuer plus loin le script, 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).
Ensuite, 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).
Cependant, pas de panique, nous allons quand même pouvoir afficher les news sur la page d'accueil du site via la fonction include() de PHP.
Mes camarades vous dirons que j'aime les includes. C'est car ça permet d'avoir une structure plus organiser et un codage plus léger et plus propre :dollars:

Voilà le code de la page news.php

Code: Tout sélectionner

  <?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 requête ne se passe pas bien (or die)  
$req = mysql_query($sql) or die('Erreur SQL !
'
.$sql.'
'
.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 '
News de : '
, htmlentities(trim($data['auteur'])) , '
'
;
echo 'Titre : ' , htmlentities(trim($data['titre'])) , '
'
;
echo 'Postée le : ' , $jour , '/' , $mois , '/' , $an , ' à ' , $heure , ':' , $min , ':' , $sec , '

'
;
echo 'News : ' , nl2br(htmlentities(trim($data['texte_news']))) , '
'
;
 }  
 }  
// 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 ();  
?>

 
Si vous avez bien garder l'appèlation de la page en "news.php" il suffit ensuite tout simplement d'ajouter le code suivant dans votre index.php

Code: Tout sélectionner

<html>
<head>
<title>Index de mon site WEB</title>
</head>
<body>
<!-- code HTML avant l'affiche des news (tout dépend comment est constitué votre site) -->
<?php
// on inclut l'affichage de nos news  
include ('news.php');  
?>
 <!-- code HTML après l'affiche des news (tout dépend comment est constitué votre site) -->
</body>
</html>
 
Code: Tout sélectionner

<?php
 // on teste si le formulaire a été validé  
if (isset($_POST['go']) &amp;&amp; $_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.'
'
.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 '

'
,$erreur;  
?>
</body>
</html>

 
Voilà votre newsletter est prête .
Bonne continuation .
Bon aller je vous laisse il est temps pour pépé Tchup d'aller se coucher good night les amis.
:throb: ღ ♥Kornette | Blog de Tchupa Corporate
Avatar de l’utilisateur
Tchupa
Fondateur
Fondateur
 
Messages: 4209
Inscription: Dim 25 Déc 2005 18:27
Tchup`s - points: 830.00
Localisation: In My Mind

Publicité

Retourner vers Les scripts PHP

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité