begin process at 2012 05 27 20:30:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Tutoriaux

 > SYSTÈME D'ARTICLES (+ HITS) AVEC MYSQL

SYSTÈME D'ARTICLES (+ HITS) AVEC MYSQL


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Tutoriaux Niveau :Débutant Date de création :20/11/2004 Date de mise à jour :25/11/2004 15:55:07 Vu :7 906

Auteur : bthivent

Ecrire un message privé
Site perso
Commentaire sur cette source (25)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voici un système d'articles. Il utilise mysql (une table). Caractéristiques :
- Titre, article, auteur, date et hits (nombres de clics)
- Deux fichiers (articles.php et viewarticle.php)

Voici la table mysql dont vous aurez besoin :

CREATE TABLE `table_articles` (
  `id` int(8) unsigned NOT NULL auto_increment,
  `auteur` varchar(255) NOT NULL default '',
  `date` int(15) unsigned NOT NULL default '0',
  `titre` varchar(255) NOT NULL default '',
  `texte` text NOT NULL,
  `hit` int(10) unsigned NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM ;

Source

  • articles.php :
  • <?php
  • //début des variables à éditer
  • $host = 'localhost';
  • $user = 'root';
  • $pass= '';
  • $bdd = 'ma_base';
  • $table_articles = 'table_articles';
  • //fin des variables à éditer
  • mysql_connect($host, $user, $pass); //connexion à mysql
  • mysql_select_db($bdd); //sélection de la base de données
  • if (isset($_POST['class'],$_POST['ordre']))
  • {
  • $class = $_POST['class'];
  • $ordre = $_POST['ordre'];
  • $sql = "SELECT id,auteur,titre,texte,date,hit FROM " . $table_articles . " ORDER BY " . $class . " " . $ordre; //requête ordonnée
  • $result = mysql_query($sql) or die('Erreur SQL : '.mysql_error());
  • }
  • else
  • {
  • $class = 'date';
  • $ordre = 'DESC';
  • $sql = "SELECT id,auteur,titre,texte,date,hit FROM " . $table_articles . " ORDER BY date DESC"; //requête ordonnée par défaut (date)
  • $result = mysql_query($sql) or die('Erreur SQL : '.mysql_error());
  • }
  • //singulier ou pluriel
  • if (mysql_numrows($result) <= 1)
  • {
  • echo mysql_numrows($result);
  • echo '&nbsp;article référencé :<br><br>';
  • }
  • else
  • {
  • echo mysql_numrows($result);
  • echo '&nbsp;articles référencés :<br><br>';
  • }
  • // formulaire pour l'ordre des articles
  • echo '<center><form method="POST" action="articles.php">
  • <select size="1" name="class">';
  • //si on a un ordre précis, on le sélectionne (selected) par défaut dans la liste
  • if ($class == 'date')
  • {
  • echo '<option value="date" selected>Par date';
  • }
  • else
  • {
  • echo '<option value="date">Par date';
  • }
  • if ($class == 'titre')
  • {
  • echo '<option value="titre" selected>Par titre';
  • }
  • else
  • {
  • echo '<option value="titre">Par titre';
  • }
  • if ($class == 'auteur')
  • {
  • echo '<option value="auteur" selected>Par auteur';
  • }
  • else
  • {
  • echo '<option value="auteur">Par auteur';
  • }
  • if($class == 'hit')
  • {
  • echo '<option value="hit" selected>Par hit';
  • }
  • else
  • {
  • echo '<option value="hit">Par hit';
  • }
  • echo '</select>';
  • echo '&nbsp;';
  • echo '<select size="1" name="ordre">';
  • if($ordre == 'DESC')
  • {
  • echo '<option value="DESC" selected>Décroissant';
  • }
  • else
  • {
  • echo '<option value="DESC">Décroissant';
  • }
  • if($ordre == 'ASC')
  • {
  • echo '<option value="ASC" selected>Croissant';
  • }
  • else
  • {
  • echo '<option value="ASC">Croissant';
  • }
  • echo '</select>';
  • echo '&nbsp;';
  • echo '<input type="submit" value="OK">';
  • echo '</center></form>';
  • //on ecrit les enregistrements
  • while($row = mysql_fetch_array($result)){
  • echo '<a href="viewarticle.php?id='.$row['id'].'">'; //lien vers viewarticle.php + id de l'article
  • echo ' - <b>'.$row['titre'].'</b>, ';
  • echo 'par '.$row['auteur'].' le ';
  • echo date("d/m/Y",$row['date']).' ';
  • echo '(lu '.$row['hit'].' fois).<br></a>';
  • echo substr($row['texte'], 0, 200).' ...</font><br>'; //on ecrits les 200 premiers caractères de l'article
  • echo '<br><br>';
  • }
  • mysql_close(); //on ferme la connexion mysql
  • ?>
  • //////////////////////////////////
  • /// viewarticle.php
  • //////////////////////////////////
  • <?php
  • //contrôle si un id est définie (par viewsource.php?id=...)
  • if (empty($_GET['id']))
  • {
  • die('Erreur, pas d\'id défini');
  • }
  • //début des variables à éditer
  • $host = 'localhost';
  • $user = 'root';
  • $pass= '';
  • $bdd = 'ma_base';
  • $table_articles = 'table_articles';
  • //fin des variables à éditer
  • $db = mysql_connect($host, $user, $pass); //connexion à mysql
  • mysql_select_db($bdd); //sélection de la base de données
  • $query = "SELECT * FROM $table_articles WHERE id='" . $_GET['id'] . "'"; //on sélectionne l'article
  • $result = mysql_query($query) or die('Erreur SQL : '.mysql_error());
  • $val = mysql_fetch_array($result); //on récupère les résultats
  • echo '<center><h2>'.$val['titre'].'</h2> par '.$val['auteur'].'</center><br><br>';
  • echo nl2br($val['texte']); //on écrit l'article avec nl2br() qui met les retours à la ligne
  • echo '<br><br><br><center><a href="index.php?p=articles">Retour</a></center><br><br>';
  • $val['hit']++; //on prend le nombre de cliques actuel
  • $hit = $val['hit']; //on l'augmente (de 1)
  • $sql = "UPDATE $table_articles SET hit='$hit' WHERE id='" . $_GET['id'] . "'"; //et on l'insert
  • $req = mysql_query($sql) or die('Erreur SQL : ' .mysql_error() . '<br>Requête : ' . $sql);
  • mysql_close(); //on ferme la connexion
  • ?>
articles.php :

<?php

//début des variables à éditer

$host = 'localhost';
$user = 'root';
$pass= '';
$bdd = 'ma_base';
$table_articles = 'table_articles';

//fin des variables à éditer

mysql_connect($host, $user, $pass); //connexion à mysql
  mysql_select_db($bdd); //sélection de la base de données

if (isset($_POST['class'],$_POST['ordre'])) 
{
	$class = $_POST['class'];
	$ordre = $_POST['ordre'];

	$sql = "SELECT id,auteur,titre,texte,date,hit FROM " . $table_articles . " ORDER BY " . $class . " " . $ordre; //requête ordonnée

	$result = mysql_query($sql) or die('Erreur SQL : '.mysql_error());
}
else
{
	$class = 'date';
	$ordre = 'DESC';
	$sql = "SELECT id,auteur,titre,texte,date,hit FROM " . $table_articles . " ORDER BY date DESC"; //requête ordonnée par défaut (date)

	$result = mysql_query($sql) or die('Erreur SQL : '.mysql_error());
}

//singulier ou pluriel

if (mysql_numrows($result) <= 1)
{
	echo mysql_numrows($result);
	echo '&nbsp;article référencé :<br><br>';
}
else
{
	echo mysql_numrows($result);
	echo '&nbsp;articles référencés :<br><br>';
}

 // formulaire pour l'ordre des articles

echo '<center><form method="POST" action="articles.php">
<select size="1" name="class">';

//si on a un ordre précis, on le sélectionne (selected) par défaut dans la liste

if ($class == 'date')
{
	echo '<option value="date" selected>Par date';
}
else
{
	echo '<option value="date">Par date';
}
if ($class == 'titre')
{
	echo '<option value="titre" selected>Par titre';
}
else
{
	echo '<option value="titre">Par titre';
}
if ($class == 'auteur')
{
	echo '<option value="auteur" selected>Par auteur';
}
else
{
	echo '<option value="auteur">Par auteur';
}
if($class == 'hit')
{
	echo '<option value="hit" selected>Par hit';
}
else
{
	echo '<option value="hit">Par hit';
}

echo '</select>';
echo '&nbsp;';
echo '<select size="1" name="ordre">';

if($ordre == 'DESC')
{
	echo '<option value="DESC" selected>Décroissant';
}
else
{
	echo '<option value="DESC">Décroissant';
}
if($ordre == 'ASC')
{
	echo '<option value="ASC" selected>Croissant';
}
else
{
	echo '<option value="ASC">Croissant';
}

echo '</select>';
echo '&nbsp;';
echo '<input type="submit" value="OK">';
echo '</center></form>';

//on ecrit les enregistrements

  while($row = mysql_fetch_array($result)){
    echo '<a href="viewarticle.php?id='.$row['id'].'">'; //lien vers viewarticle.php + id de l'article
    echo ' - <b>'.$row['titre'].'</b>, ';
    echo 'par '.$row['auteur'].' le ';
    echo date("d/m/Y",$row['date']).' ';
    echo '(lu '.$row['hit'].' fois).<br></a>';
    echo substr($row['texte'], 0, 200).' ...</font><br>'; //on ecrits les 200 premiers caractères de l'article
    echo '<br><br>';
  }

  mysql_close(); //on ferme la connexion mysql

?>

//////////////////////////////////
/// viewarticle.php
//////////////////////////////////

<?php

//contrôle si un id est définie (par viewsource.php?id=...)
if (empty($_GET['id']))
{
	die('Erreur, pas d\'id défini');
}

//début des variables à éditer

$host = 'localhost';
$user = 'root';
$pass= '';
$bdd = 'ma_base';
$table_articles = 'table_articles';

//fin des variables à éditer

  $db = mysql_connect($host, $user, $pass); //connexion à mysql
  mysql_select_db($bdd); //sélection de la base de données

  $query = "SELECT * FROM $table_articles WHERE id='" . $_GET['id'] . "'"; //on sélectionne l'article
  $result = mysql_query($query) or die('Erreur SQL : '.mysql_error());
  $val = mysql_fetch_array($result); //on récupère les résultats

  echo '<center><h2>'.$val['titre'].'</h2> par '.$val['auteur'].'</center><br><br>';
  echo nl2br($val['texte']); //on écrit l'article avec nl2br() qui met les retours à la ligne
  echo '<br><br><br><center><a href="index.php?p=articles">Retour</a></center><br><br>';

  $val['hit']++; //on prend le nombre de cliques actuel
  $hit = $val['hit']; //on l'augmente (de 1)
  $sql = "UPDATE $table_articles SET hit='$hit' WHERE id='" . $_GET['id'] . "'"; //et on l'insert
  $req = mysql_query($sql) or die('Erreur SQL : '  .mysql_error() . '<br>Requête : ' . $sql);

  mysql_close(); //on ferme la connexion

?>

 Conclusion

Vous pouvez faire votre propre script pour ajouter des articles.. ou alors les ajouter directement dans phpmyadmin ! ;)
@+


 Historique

20 novembre 2004 12:44:49 :
update code..
23 novembre 2004 17:30:31 :
update code (correction - frop01)
25 novembre 2004 15:55:07 :
Correction - Marshall_Mathers

 Sources du même auteur

Source avec Zip Source avec une capture FIRE-SOFT-BOARD
Source avec une capture FAIRE UN ALBUM PHOTO AUTOMATIQUE, AVEC DES CATÉGORIES, SANS ...
FAIRE UN SITE MULTILINGUE (ARRAY) + COOKIE
CONNAÎTRE LA VALEUR LA PLUS FRÉQUENTE D'UN CHAMPS (MYSQL)

 Sources de la même categorie

Source avec une capture INTÉGRER À UNE BASE DE DONNÉES DES COORDONNÉES GÉOGRAPHIQUES... par slhuilli
Source avec Zip DÉCOMPOSER UN CODE PHP AVEC LA FONCTION INCLUDE par Julien39
CRÉATION D'UN SCRIPT D'AUTHENTIFICATION par phpAnonyme
Source avec Zip Source avec une capture N/X API: GOOGLE MAPS DEPUIS PHP VALID W3C par GillesWebmaster
PHP EXTRAIRE DES MAILS D'UN GROS FICHIER LOCAL OU DISTANT par cosmoswarezone1

Commentaires et avis

Commentaire de frop01 le 21/11/2004 14:08:04

Remarque :

Dans articles.php

Changer les lignes 47 et 48

cad le code :

echo '<center><form method="POST" action="articles.php"> // formulaire pour l'ordre des articles
<select size="1" name="class">';

par

echo '<center><form method="POST" action="articles.php">
<select size="1" name="class">'; // formulaire pour l'ordre des articles

Commentaire de bthivent le 22/11/2004 18:00:34

[:O]
alors là !
Désolé, mais je ne vois pas l'utilité de poster une commentaire de ce type !!! (p-ê à faire monter son classement ??)
Je suis en état de choque là...
lol

Commentaire de frop01 le 23/11/2004 00:22:04

Salut bthivent,

Désolé si je t'es choqué, je ne savais que tu avais une âme sensible à ce point. ;)

j'ai fais une petite remarque parsque si on fait un copier coller de ton code, ca ne marche pas sans qu'on rectifie le point que j'ai noté.



Commentaire de Bertrand_declerck le 23/11/2004 11:39:08

Bonjour bthivent !

Un grand merci pour ta source qui est très bien faite !

Je suis débutant en php et je me demandais comment
on appelle une page php ou html suite au clic de l'article qu'on a choisit ?

Tu ne pourrais pas me donner un exemple de code

Merci bien à vous !

Commentaire de bthivent le 23/11/2004 17:24:49

frop01 > Arg désolé ! je n'avais pas vu ça...alors merci ! je vais le modifier

Bertrand_declerk > Je n'ai pas bien compris..une fois qu'on a cliqué sur l'article, ca ouvre la page qui affiche l'article selon l'id (-> viewarticle.php), mais je ne crois pas que cette page aie de nom spécial !

@+

Commentaire de frop01 le 23/11/2004 21:28:51

Salut bthivent>
Moi aussi je suis désolé vu mon commentaire un peu louche sans aucune formule de politesse et sans explication (le pourquoi)

alors sans rancune collègue ;)

Bon pour la question de bertrand, si j'ai bien compris ta demande

dans le fichier articles.php

on séléctionne la liste des articles à partir de la base de données avec une boucle ensuite dans la ligne :

echo '<a href="viewarticle.php&id='.$row['id'].'">'; //lien vers viewarticle.php + id de l'article

on affiche le lien vers le fichier viewarticle.php en passant l'id de l'article en paramètre dans l'url

ex : on aura http://www.monsite.com/viewarticle.php&id=125

et dans le fichier viewarticle.php, on récupère l'id avec la fonction $_GET['id'] pour s'en servir pour afficher l'article selon cet id

Si c'est pas ca alors reformule ta question ;)





Commentaire de Bertrand_declerck le 24/11/2004 11:01:22

Un grand merci à vous deux et encore désolé pour ma formulation mal aisée ! Frop01 c'est tout à fait ce que je souhaitais obtenir comme réponse !

Merci et bravo pour ta source initiale bthivent !

tchao

Commentaire de Marshall_Mathers le 24/11/2004 19:45:03

Salut à tous !!

J'ai un petit problème :
   Quand on clique sur le lien de l'article on arrive sur viewarticle.php&id=1 (apr exemple) mais moi il me dit que la page n'existe pas...

Est-ce que je pourrai avoir un peu d'aide !!!

(PS : j'utilise Free ;) )

Commentaire de frop01 le 24/11/2004 23:28:23

c'est normal si l'article n°1 n'existe pas dans la base de données

Essai de remplir la table avec des données (articles)

Commentaire de Marshall_Mathers le 25/11/2004 07:23:36

Si,

J'ai vérifié, toutes les données sont présentes (id, auteur, texte, date, hit) dans la table_articles

Commentaire de frop01 le 25/11/2004 10:10:47

Ahh oui t'as bien raison !! au lieu de passer les paramètre en uril par un "?" il ya un "&"

donc change la ligne 114 du la page article.php

    echo '<a href="viewarticle.php&id='.$row['id'].'">'; //lien vers viewarticle.php + id de l'article


par

    echo '<a href="viewarticle.php?id='.$row['id'].'">'; //lien vers viewarticle.php + id de l'article

et voila ;)

Commentaire de frop01 le 25/11/2004 11:24:48

reSalut bthivent,

Pourquoi le type de la date est Int(15)

`date` int(15) unsigned NOT NULL default '0',

??





Commentaire de Marshall_Mathers le 25/11/2004 12:43:46

frop01>>>

Bien Merci !!

Commentaire de bthivent le 25/11/2004 15:52:04

Marshall_Mathers > avant de voir la réponse de frop01, j'ai moi même remarqué l'énorme bêtise (pour pas dire connerie lol..) que j'ai faite.. Je vais la corriger, merci ! :)

frop01 > Merci de répondre à ma place! ;)
pour le int(15) je sais plus trop ! tu me demande ça dans le sens que j'aurais pu utiliser un mediumint ??

Commentaire de bthivent le 25/11/2004 16:01:38

frop01 > ca y est j'y suis.. pourquoi tu me demande que c'est un integer ?
C'est en fait parce que j'avais un formulaire pour insérer des articles enfin on s'en fou.. La raison est que j'utilisait time()..

Commentaire de frop01 le 25/11/2004 21:08:35

bthivent > merci bcp
tout est logique !

Commentaire de Bertrand_declerck le 26/11/2004 14:01:16

Bon alors pour finir, quelqu'un pourrais-t-il me fournir un code qui marche alors après avoir corrigé l'erreur avec le ! ?

C'était dans la structure de la table l'erreur ?

Commentaire de frop01 le 26/11/2004 14:46:52

Bertrand > Ca marche pas chez toi ?

car y plus d'erreur dans le code ni dans la table

Commentaire de Marshall_Mathers le 26/11/2004 19:01:21

Bertrand > salut,

j'me souvein plus très bien mais je crois qu'il y avait une erreur au niveau de l'appelle de viewarticle.php (il y avait un S ==> viewarticleS.php)

voila

Commentaire de cam972 le 01/05/2005 23:17:01

Comment j'ajoute un article autre que par la Base de Donnée   ?
Merci
@+

Commentaire de bthivent le 05/05/2005 15:47:17

Il faut créer un formulaire et un script d'insertion...
Pour plus de renseignements, va sur des sites pour apprendre le html et le php

Commentaire de cam972 le 05/05/2005 17:21:29

C'est vraiment gentil de dire ça
mais personne peut m'aider ?
a faire ça

Commentaire de yoda_544 le 22/09/2007 03:33:58

bthivent:Il faut créer un formulaire et un script d'insertion...

comme ton script est classé "débutant", sa aurait était sympas
de mettre le script d'insertion avec ton "système d'article

Commentaire de shadowcrack le 25/12/2007 15:46:57

bonjour a tous et merci a bthivent pour son trés bon script,voila mon probleme apres avoir installé ce script qui marche presque a merveille sauf que la date des articles sont tous en date du 01/01/1970 que faire?

Commentaire de m54 le 08/02/2009 14:06:06 8/10

Simple, même peut être trop
Sinon c'est un bon script
J'ai aussi le prob. des dates

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales