Système d'articles (+ hits) avec mysql

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 156 fois - Téléchargée 34 fois

Contenu du snippet

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 / Exemple :


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 ! ;)
@+

A voir également

Ajouter un commentaire

Commentaires

Messages postés
11
Date d'inscription
samedi 31 mai 2008
Statut
Membre
Dernière intervention
8 février 2009

Simple, même peut être trop
Sinon c'est un bon script
J'ai aussi le prob. des dates
Messages postés
1
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
25 décembre 2007

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?
Messages postés
2
Date d'inscription
samedi 17 février 2007
Statut
Membre
Dernière intervention
3 mai 2009

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
Messages postés
8
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
11 septembre 2005

C'est vraiment gentil de dire ça
mais personne peut m'aider ?
a faire ça
Messages postés
49
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
26 janvier 2005
2
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
Afficher les 25 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.