Netophonix - Le forum Index du Forum Netophonix - Le forum Index du Forum
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
Règles et fonctionnementRègles et fonctionnement   Liste des sagas mp3Liste des sagas mp3

Quelque adresse de tuto's sympas

 
Poster un nouveau sujet   Répondre au sujet    Netophonix - Le forum Index du Forum -> Informatique -> Tutoriaux web
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Cekos

Postulant
 Postulant


H/F: H/F:Homme
Inscrit le: 02 Avr 2007
Messages: 11
Localisation: Euhh ... chez moi ?


MessagePosté le: Mar 03 Avr 2007, 15:51    Sujet du message: [PHP/MySQL] Des news sur votre site Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Cekos

Postulant
 Postulant


H/F: H/F:Homme
Inscrit le: 02 Avr 2007
Messages: 11
Localisation: Euhh ... chez moi ?


MessagePosté le: Jeu 05 Avr 2007, 18:09    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Mitch_dsm

Administrateur
 Administrateur


H/F: H/F:Homme
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.

MessagePosté le: Jeu 05 Avr 2007, 18:19    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Cekos

Postulant
 Postulant


H/F: H/F:Homme
Inscrit le: 02 Avr 2007
Messages: 11
Localisation: Euhh ... chez moi ?


MessagePosté le: Jeu 05 Avr 2007, 18:28    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Nishiki

Neto-Chroniqueur
 Neto-Chroniqueur


H/F: H/F:Homme
Inscrit le: 15 Jan 2007
Age: 19
Messages: 505
Localisation: Zone 11


MessagePosté le: Jeu 05 Avr 2007, 22:01    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Netophonix - Le forum Index du Forum -> Tutoriaux web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
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




Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com