probleme avec un compteur de visite
Posté : 27 juin 2007, 16:21
Salut a tous, bon voilà j'ai trouver il y a de sa quelque tempsun compteur de visites simple et efficasse sur se site que j'utilise tous le temps.
J'ai jamais eu de probleme jusqu'a maintenant alors que la page et super simple juger par vous meme.
En faite l'erreur que j'ai et la suivant :
Merci a tous et a toutes.
J'ai jamais eu de probleme jusqu'a maintenant alors que la page et super simple juger par vous meme.
<?php session_start(); ?>
<?php require_once('Connections/mabaseconnect.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>monsite.fr</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 { font-size: 30px;
font-style: italic;
font-weight: bold;
color: #9933CC;
}
-->
</style>
</head>
<body>
<table width="200" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><div align="center">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="750" height="376">
<param name="movie" value="anim%20flash/logo%20amoe3.swf">
<param name="quality" value="high">
<embed src="anim%20flash/logo%20amoe3.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="750" height="376"></embed>
</object>
</div></td>
</tr>
</table>
<p align="center"><span class="style1">SITE EN CONSTRUCTION...</span><br />
<br>
</p>
<p align="center">
<?php
// Paramètres de connexion à la base de données:
$delai = 7200; /* Durée en seconde prise en compte pour établir qu'une visite est "unique" */
/* *********************************************************************************************** */
/*
*** Fonction d'incrémentation du compteur.
*/
function increment_compteur()
{
/* Récupération de la valeur actuelle du compteur */
$sql_nb_visit = "SELECT nombre FROM visites WHERE (id = 1)";
$valeur = mysql_query($sql_nb_visit);
if($compteur = mysql_fetch_array($valeur))
{
/* Incrémentation du compteur. */
$plus_un = $compteur['nombre'];
$plus_un += 1;
/* Mise à jour du compteur. */
$sql_maj2 = "UPDATE visites SET nombre = ". $plus_un ." WHERE id = 1";
$maj_compteur = mysql_query($sql_maj2);
if(!($maj_compteur))
{
echo("<p>".mysql_error()."</p>\n");
}
}
}
/*
*** Fonction de mise à jour du moment de passage lorsque l'adresse IP existe dans la base.
*/
function mise_a_jour()
{
$adresse_ip = $_SERVER['REMOTE_ADDR'];
$maintenant = mktime();
$maj = "UPDATE stats SET jour = '$maintenant' where ip = '$adresse_ip' ";
$sql_maj = mysql_query($maj);
if(!($sql_maj))
{
echo("<p>".mysql_error."</p>\n");
}
}
/* *********************************************************************************************** */
$adresse_ip = $_SERVER['REMOTE_ADDR'];
$maintenant = mktime();
/* Connexion à la base de données : d'abord, vérification que l'adresse IP est présente ou non */
$sql_ip = "SELECT * from stats WHERE ip = '$adresse_ip'";
/* Vérification si l'IP est présente dans la base de donnée */
if($result_ip = mysql_query($sql_ip))
{
/* Si l'IP est trouvée, comparaison du délai entre le mktime enregistré et celui actuel
Il s'agit alors de vérifier à combien de temps remonte la précédente visite :
Si elle est au delà du délai fixé, on devra incrémenter le compteur de 1 */
/* Récupération de la valeur actuelle du compteur */
$instant = mysql_query($sql_ip);
if($chrono = mysql_fetch_array($instant))
{
if(($maintenant - $chrono['jour']) < $delai )
{
mise_a_jour();/* L'ip a été trouvée et le délai n'est pas dépassé: simple mise à jour du moment */
}
else
{
mise_a_jour();/* L'ip a été trouvée et le délai est dépassé: mise à jour du moment et incrémentation du compteur */
increment_compteur();
}
}
else /* aucun résultat n'est trouvé correspondant dans la bdd: on incrétemente le compteur et on inscrit une nouvelle ligne dans les adresses. */
{
/* On établit alors une nouvelle ligne dans la table incluant l'adresse IP et le moment et
on incrémente le compteur. */
$sql_ip2 = "INSERT INTO stats (ip, jour) VALUES ('$adresse_ip', '$maintenant')";
$resultat = mysql_query($sql_ip2);
if(!($resultat))
{
echo("<p>".mysql_error()."</p>\n");
}
increment_compteur();
}
}
/* Récupération de la valeur actuelle du compteur */
$sql_nb_visit = "SELECT nombre FROM visites WHERE (id = 1)";
$valeur = mysql_query($sql_nb_visit);
if($compteur = mysql_fetch_array($valeur))
{
echo("<div style=\"text-align:center\">\n");
echo("<p style=\"font-size: 13px; font-weight: bold\">Mes visiteurs à ce jours :<br/>");
echo($compteur['nombre']."</p>\n");
echo("</div>\n");
}
?>
</p>
</body>
</html>
<?php
?>
Vous voyer pas plus simple.En faite l'erreur que j'ai et la suivant :
la ligne 121 et celle si :Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\site\index.php on line 121
Bon voila si quelqu'un a une idée ?$sql_nb_visit = "SELECT nombre FROM visites WHERE (id = 1)";
$valeur = mysql_query($sql_nb_visit);
if($compteur = mysql_fetch_array($valeur)) //ligne 121
{
Merci a tous et a toutes.