 |
|
| Voir le sujet précédent :: Voir le sujet suivant |
| Auteur |
Message |
Cekos
Postulant


H/F:  Inscrit le: 02 Avr 2007 Messages: 11 Localisation: Euhh ... chez moi ?
|
|
Ce tuto a pour but de vous expliquer comment réaliser un système de news.
/!\ Ce tuto suppose un minimum de connaissance de PHP/MySQL
Dans un premier temps, quesqu'on va créer exactement ?
En fait, ce sera un script qui s'occupera d'afficher les news qui sont dans la base de donnée, et un formulaire+un script qui mettra les news dans la bdd ^^.
Et ca va servir à quoi ?
Et bin a partir d'un simple formulaire, vous pourrez annoncez les dernière nouveautés de votre saga mp3 au monde entier !!
Aller, c'est parti !!!
Grand 1. La partie "d'administration" des news.
Note : Faites attention, cette partie ne doit pas etre accesible par tout le monde, il faut donc la proteger par un mot de passe
1. La base de donnée
Bin pour stocker les news, tiens !
Si vous connaissez un peu le SQL (Structured Query Language), ce code ne devrait pas vous possez de problème.
Voici le code de la table SQL :
| Code: |
CREATE TABLE `news` (
`id` INT NOT NULL AUTO_INCREMENT,
`titre` VARCHAR(64) NOT NULL,
`auteur` VARCHAR(64) NOT NULL,
`texte` TEXT NOT NULL,
`date` VARCHAR(32) NOT NULL,
PRIMARY KEY (`id`)
);
|
Quelque point mérite d'être revu :
- l'id, est un chiffre unique qui s'attribura automatiquement a chaque nouvelle entrée dans la table
- la date, est un varchar plutot qu'une date, car MySQL ne supporte les date qu'au format AAA-MM-JJ (si je me rappelle bien), c'est pour cela que j'ai décidé de la stocker dans un champs varchar.
Pour le reste, ca doit etre ok.
2. Le formulaire d'ajout de news
Un formulaire tout simple.
| Code: |
<form name="news" action="ajout_news.php" method="POST">
Auteur : <input type="text" name="auteur" value="auteur" /><br />
Titre : <input type="text" name="titre" value="titre" /><br />
Date : <input type="text" name="date" value="<?php echo date('d/m/Y'); ?>"><br />
Texte: <textarea name="texte" cols="30" rows="5">texte de la news</textarea>
<input type="submit" value="Envoyer la news !" />
</form>
|
Faites bien attention a enregistrer ce formulaire dans un fichier PHP car sinon la fonction date ne marchera pas.
Rien a dire de plus sur ce formulaire ^^
3. Enregister les news dans la base de donnée
Le fichier s'appelle ajout_news.php (rien ne vous empeche de changer le nom, mais penser le changer dans le formulaire (l'action du form))
Le début du fichier, la connexion a la connexion à la base de donnée, pensez a remplacer les données par les votres.
| Code: |
<?php
$connection = mysql_connect("hote", "login", "password");
mysql_select_db("bdd"); |
Ici, on met dans des variables avec des noms plus simples les données du formulaires et par mesure de sécurité, on échappe les apostrophes et les balises HTML (avec "htmlspecialchars") :
| Code: |
$titre_news = $_POST['titre'];
$titre_news = htmlspecialchars($titre_news, ENT_QUOTES);
$date_news = $_POST['date'];
$date_news = htmlspecialchars($date_news, ENT_QUOTES);
$auteur_news = $_POST['auteur'];
$auteur_news = htmlspecialchars($auteur_news, ENT_QUOTES);
$texte_news = htmlspecialchars($_POST['texte'], ENT_QUOTES);
$texte_news = nl2br($texte_news); //Cette fonction sert a inserer les saut de ligne (qui n'y sont par directement)
|
Après, on verifie si un champs du formulaire n'est pas resté vide, si c'est le cas, on annule tout et on previent :
| Code: |
if ($texte_news == "" || $auteur_news == "" || $date_news == "" || $titre_news == "") {
echo 'Vous avez oubliez de remplir un champ ! <br /><a href="formulaire.php">Retour au formulaire</a>';
} |
Ensuite il faut faire quoi ? Et bien si on a toute les données, on les rentre dans la base de donnée !
On fait comme sa (Note : si vous avez modifier la structure de la base de donnée au début, il faut la modifier ici aussi) :
| Code: |
else {
mysql_connect("$S_SQL_host","$S_SQL_user","$S_SQL_pass") or die('Erreur SQL !<br>'.mysql_error());
mysql_select_db($S_SQL_db) or die('Erreur SQL !<br>'.mysql_error());
mysql_query("INSERT INTO `news` (`id`, `titre`, `auteur`, `date`, `texte`) VALUES ('', '$titre_news', '$auteur_news', '$date_news', '$texte_news')") or die('Erreur SQL !<br>'.mysql_error());
echo 'La News a été ajoutée !';
}
?> |
Ouf ! On en a fini avec le code qui ajoute les news dans la base de donnée ! Maintenant il faut qu'on les affiche ...
Le code de la page en entier :
| Code: |
<?php
//n'oubliez pas de remplacer par vos donnée ici !
$connection = mysql_connect("hote", "login", "password");
mysql_select_db("bdd");
$titre_news = $_POST['titre'];
$titre_news = htmlspecialchars($titre_news, ENT_QUOTES);
$date_news = $_POST['date'];
$date_news = htmlspecialchars($date_news, ENT_QUOTES);
$auteur_news = $_POST['auteur'];
$auteur_news = htmlspecialchars($auteur_news, ENT_QUOTES);
$texte_news = htmlspecialchars($_POST['texte'], ENT_QUOTES);
$texte_news = nl2br($texte_news); //Cette fonction sert a inserer les saut de ligne (qui n'y sont par directement)
if ($texte_news == "" || $auteur_news == "" || $date_news == "" || $titre_news == "") {
echo 'Vous avez oubliez de remplir un champ ! <br /><a href="formulaire.php">Retour au formulaire</a>';
}
else {
mysql_connect("$S_SQL_host","$S_SQL_user","$S_SQL_pass") or die('Erreur SQL !<br>'.mysql_error());
mysql_select_db($S_SQL_db) or die('Erreur SQL !<br>'.mysql_error());
mysql_query("INSERT INTO `news` (`id`, `titre`, `auteur`, `date`, `texte`) VALUES ('', '$titre_news', '$auteur_news', '$date_news', '$texte_news')") or die('Erreur SQL !<br>'.mysql_error());
echo 'La News a été ajoutée !';
}
?> |
_________________ PHP : Programmation Hyper Puissante !! (Si Si !) |
|
| Revenir en haut de page |
|
 |
Cekos
Postulant


H/F:  Inscrit le: 02 Avr 2007 Messages: 11 Localisation: Euhh ... chez moi ?
|
|
Grand 2. Afficher les news
1. La page qui les affiches
Cette page n'est pas très compliqué. D'ailleurs, je suis sur que vous pouriez trouver vous même ... Allez cherche un peu ... Je vais vous aidez :
- 1 - On se connecte tant a la bdd et on recherche les news.
- 2 - On fait une boucle qui dit : "Tant qu'il y a des news, on les affiche"
Allez, a vous de jouez !
...
...
...
...
...
Alors, vous avez trouvez ? Oui ? Non ? En tout cas, on va passer a la correction :
Vous deviez faire quelque chose comme sa :
| Code: |
<?php
$connection = mysql_connect("hote", "login", "password");
mysql_select_db("bdd");
$req="SELECT * FROM `news`";
$recup_new=mysql_query($sql) OR DIE('Erreur SQL !<br>'.mysql_error());
while($data = mysql_fetch_array($recup_news))
{
echo '<p align="center"><strong>'$data['titre']'</strong></p>';
echo '<p align="center">'$data['texte']'</p>';
echo '<p align="right">'$data['auteur']'</p>';
echo '<p align="right">'$data['date']'</p>';
}
?> |
Etudions le "while" d'un peu plus près :
Pour ceux qui ne connaisse pas, cette fonction est une boucle qui execute des instructions tant qu'un condition est vérifiée.
Dans notre cas la ligne :
| Code: |
| while($data = mysql_fetch_array($recup_news)) |
veut dire "Tant que la requete $recup_news renvoie des resultat, on execute les instruction de la boucle."
En l'occurence, les instructions de la boucle servent a affiché une news.
2. Une Administration plus poussée
Premièrement, créez un page liste_news.php :
Cette page va servir a afficher la liste des news, et a proposer la modification ou suppression de celle-ci.
| Code: |
<table><tr>
<th>Titre</th>
<th>Modifier</th>
<th>Supprimer</th>
</tr>
<?php
$connection = mysql_connect("hote", "login", "password");
mysql_select_db("bdd");
$liste_news = mysql_query('SELECT * FROM news ORDER BY id DESC');
while ($news = mysql_fetch_array($liste_news))
{
?>
<tr>
<td><?php echo $news['titre']; ?></td>
<td><?php echo '<a href="modif_news.php?news_id='.$news['id'].'">'; ?>Modifier</a></td>
<td><?php echo '<a href="suppr_news.php?news_id='.$news['id'].'">'; ?>Supprimer</a></td>
</tr>
<?php
}
?>
</table> |
Le reste de cette partie est en cours d'écriture ^^ désolé !
3. Et ensuite ?
He bin on arrive au bout du tuto. C'était pas si dur que ca ?
Vous pouvez essayer d'améliorez le design, parceque la c'est vraiment basique.
Plus tard j'essayerais de continuer ce tuto pour ajouter un système de commentaires, un affichage des news sur plusieurs page, et d'autres truc bien ...
En tout cas, maintenant que vous avez des news sur votre site, depechez de faire un mp3 pour pouvoir l'annoncer  _________________ PHP : Programmation Hyper Puissante !! (Si Si !)
Dernière édition par Cekos le Ven 06 Avr 2007, 14:28; édité 4 fois |
|
| Revenir en haut de page |
|
 |
Mitch_dsm
Administrateur


H/F:  Inscrit le: 10 Déc 2006 Age: 32 Messages: 1581 Localisation: banlieue parisienne
A travaillé sur : Matrick, Los Cojones Yubejon (narrateur), Faites comme chez nous, Les blagues du jour, Tutophonix, guest dans La D.G.S.C.E.
|
|
Vu l'âge que tu as, pour faire un tuto aussi pédagogique, soit t'es un petit génie soit ton pseudo est utilisé par plusieurs personne. En tout cas tout ça est très instructif et en adéquation avec le sujet du forum. Bravo. _________________ Mitch DSM Phantom Netophonist
http://domainesm.free.fr |
|
| Revenir en haut de page |
|
 |
Cekos
Postulant


H/F:  Inscrit le: 02 Avr 2007 Messages: 11 Localisation: Euhh ... chez moi ?
|
|
| Mitch_dsm a écrit: |
Vu l'âge que tu as, pour faire un tuto aussi pédagogique, soit t'es un petit génie soit ton pseudo est utilisé par plusieurs personne. En tout cas tout ça est très instructif et en adéquation avec le sujet du forum. Bravo. |
Merci beaucoup, je pensais avoir des talent pédagogique de cette ampleur là ^^. Faut croire que je suis un petit génie parceque j'ai inventé mon pseudo de toute pièce et je pense pas que des gens m'ai copié
Je vais continué puisque ca marche bien !
P.S. : Je tient a préciser que j'ai écris tout le tuot moi même, je n'ai en aucun cas copié sur des tutos existants !  _________________ PHP : Programmation Hyper Puissante !! (Si Si !) |
|
| Revenir en haut de page |
|
 |
Nishiki
Neto-Chroniqueur


H/F:  Inscrit le: 15 Jan 2007 Age: 19 Messages: 505 Localisation: Zone 11
|
|
Moi j'ai fait un système de news sur une page, avec les droits de supprimer ou éditer une news _________________
 |
|
| Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|