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

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

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.