Top liste en php + mysql

Contenu du snippet

#
# Structure de la table `ip_topliste`
#

CREATE TABLE ip_topliste (
ip varchar(16) NOT NULL default '',
vote decimal(6,0) NOT NULL default '0',
jour date NOT NULL default '0000-00-00'
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Structure de la table `topliste`
#

CREATE TABLE topliste (
id int(11) NOT NULL auto_increment,
titre varchar(150) NOT NULL default '',
lien varchar(150) NOT NULL default '',
details varchar(255) NOT NULL default '',
entrees decimal(6,0) NOT NULL default '0',
votes decimal(6,0) NOT NULL default '0',
inscription datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id)
) TYPE=MyISAM;

voila la requete sql !
ensuite, changez les variables en haut de page, et pour les votes, c'est votrescript.php?op=voter&sid=id_du_site
Vous pouvez donner le nom que vous voulez a ce script, rien n'y changera !!

Source / Exemple :


<?php
$host = "localhost";
$user= "root";
$pass = "pass";
$base = "mabase";
$c = mysql_connect("$host","$user","$pass");
mysql_select_db("$base",$c);
function index($debut){
print "<CENTER><TITLE>Topliste De mon site perso !</TITLE>Top De mon site perso !<P><FORM method=\"POST\" action=\"$PHP_SELF\">Rechercher: <INPUT type=\"text\" name=\"motcles\" value=\"$motcles\"><INPUT type=\"hidden\" name=\"op\" value=\"rechercher\"> <INPUT type=\"submit\" value=\"Rechercher !\"></FORM><P></CENTER>";
if(!isset($debut)){
$sql = mysql_query("SELECT * FROM topliste ORDER by votes AND entrees DESC LIMIT 0,20");
}
elseif($debut){
$fin = $debut + 20;
$sql = mysql_query("SELECT * FROM topliste ORDER by votes AND entrees DESC LIMIT $debut,$fin");
}
//$ni = mysql_num_rows(mysql_query("SELECT * FROM topliste"));
print "<CENTER><TABLE align=center border=\"1\" cellspacing=0 cellpadding=0 width=\"90%\">";
print "<TR><TD align=center width=\"10%\">Place</TD><TD align=center width=\"70%\">Détails</TD><TD align=center width=\"10%\">Entrées</TD><TD align=center width=\"10%\">Votes</TD></TR>";
if($debut)
$j = $debut;
while(list($id,$titre,$lien,$details,$entrees,$votes,$datei,$login,$pass)=mysql_fetch_row($sql)){
$j++;
print "<TR><TD align=center width=\"10%\">$j.</TD><TD align=center width=\"70%\"><CENTER><A HREF=\"$PHP_SELF?op=visiter&sid=$id\" target=\"_blank\">$titre</A><BR>$details</CENTER></TD><TD align=center width=\"10%\">$entrees</TD><TD align=center width=\"10%\">$votes<BR><a HREF=\"$PHP_SELF?op=voter&sid=$id\">Voter</A></TD></TR>";
}
print "</TABLE></CENTER>";
$nb = mysql_num_rows(mysql_query("SELECT * FROM topliste"));
if($nb > 20){
$nb = $nb / 20;
$nb = ceil($nb);
$nb = $nb + 1;
echo "<CENTER>";
for($i=1; $i < $nb; $i++){
$d = $i;
if($i == 1){
$d = $i - 1;
}
$debut = $d.'0';
print "<A HREF=\"$PHP_SELF?debut=$debut\">$i</A>&nbsp;";
}
echo "</CENTER>";
}
}

function rechercher($motcles,$debut){
if(!isset($debut)){
print "<CENTER><TITLE>Top Liste De mon site perso !</TITLE>Top Liste De mon site perso ! <P><FORM method=\"POST\" action=\"$PHP_SELF\">Rechercher: <INPUT type=\"text\" name=\"motcles\" value=\"$motcles\"><INPUT type=\"hidden\" name=\"op\" value=\"rechercher\"> <INPUT type=\"submit\" value=\"Rechercher !\"></FORM><P></CENTER>";
$sql = mysql_query("SELECT * FROM topliste WHERE details LIKE '%$motcles%' OR titre LIKE '%$motcles%' ORDER by votes AND entrees DESC LIMIT 0,20");
}
elseif($debut){
$fin = $debut + 20;
$sql = mysql_query("SELECT * FROM topliste WHERE details LIKE '%$motcles%' OR titre LIKE '%$motcles%' ORDER by votes AND entrees DESC LIMIT $debut,$fin");
}
$nnnp = mysql_num_rows($sql);
print "<CENTER>Il y a $nnnp résultat(s) correspondant à la recherche <I>$motcles</I>.<P></CENTER>";
print "<CENTER><TABLE align=center border=\"1\" cellspacing=0 cellpadding=0 width=\"90%\">";
print "<TR><TD align=center width=\"10%\">Place</TD><TD align=center width=\"70%\">Détails</TD><TD align=center width=\"10%\">Entrées</TD><TD align=center width=\"10%\">Votes</TD></TR>";
if($debut)
$j = $debut;
while(list($id,$titre,$lien,$details,$entrees,$votes,$datei,$login,$pass)=mysql_fetch_row($sql)){
$j++;
print "<TR><TD align=center width=\"10%\">$j.</TD><TD align=center width=\"70%\"><CENTER><A HREF=\"$PHP_SELF?op=visiter&sid=$id\" target=\"_blank\">$titre</A><BR>$details</CENTER></TD><TD align=center width=\"10%\">$entrees</TD><TD align=center width=\"10%\">$votes<BR><A HREF=\"$PHP_SELF?op=voter&sid=$id\">Voter</A></TD></TR>";
}
print "</TABLE></CENTER>";

$nb = mysql_num_rows(mysql_query("SELECT * FROM topliste WHERE titre LIKE '%$motcles%' OR details LIKE '%$motcles%'"));
if($nb > 20){
$nb = $nb / 20;
$nb = ceil($nb);
$nb = $nb + 1;
echo "<CENTER>";
for($i=1; $i < $nb; $i++){
$d = $i;
if($i == 1){
$d = $i - 1;
}
$debut = $d.'0';
print "<A HREF=\"$PHP_SELF?debut=$debut\">$i</A>&nbsp;";
}
echo "</CENTER>";
}
}

function visiter($sid){
$sql = mysql_query("SELECT id,lien,entrees FROM topliste WHERE id='$sid'");
list($id,$lien,$entrees) = mysql_fetch_row($sql);
$ne = $entrees + 1;
@mysql_query("UPDATE topliste SET entrees='$ne' WHERE id='$sid'") or print "IMPOSSIBLE DE COMPTABILISER VOTRE VISITE !";
header("Location:$lien");
}

function voter($sid){
$sql = mysql_query("SELECT id,lien,votes FROM topliste WHERE id='$sid'");
list($id,$lien,$votes) = mysql_fetch_row($sql);
$ne = $votes + 1;
$auj = date("Y:m:d");
$nbip = mysql_num_rows(mysql_query("SELECT * FROM ip_topliste WHERE ip='$REMOTE_ADDR' AND vote='$sid' AND jour='$auj'"));
$nbip2 = mysql_num_rows(mysql_query("SELECT * FROM ip_topliste"));
if($nbip == "0"){
@mysql_query("UPDATE topliste SET votes='$ne' WHERE id='$sid'") or print "IMPOSSIBLE DE COMPTABILISER VOTRE VISITE !";
@mysql_query("INSERT INTO ip_topliste VALUES('$REMOTE_ADDR','$sid','$auj')") or print "IMPOSSIBLE d'AJOUTER IP !";
}
@mysql_query("DELETE FROM ip_visiteurs WHERE date!='$auj'");
index("00");
}

switch($op){

case "voter":
voter($sid);
break;

case "rechercher":
rechercher($motcles,$debut);
break;

case "visiter":
visiter($sid);
break;

default:
index($debut);
break;
}
?>

Conclusion :


Aucun bug connu :) !
MErci a moi, webmaster de http://www.spidsl.com !

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.