probleme avec un compteur de visite

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme avec un compteur de visite

par 2501gigi » 27 juin 2007, 17:45

Salut est merci pour cette reponse.

Bon oui j'ai bien une table nommée "visites" et oui il y a bien les champs "id" et "nombre" apres je je sais pas car quand je mais le code que tu ma mis pour afficher l'erreur il me met:
Aucune base n'a été sélectionnée

Voilà sa fait un moment que j'ai pas fais du php et quand on pratique pas tout le temps on est perdu.

par Ryle » 27 juin 2007, 16:46

Le message d'erreur indique que la variable passée au mysql_fetch n'est pas une ressource mysql valide... on en déduit donc que $valeur ne contient pas ce qu'il devrait... donc que mysql_query($sql_nb_visit) n'a pas retourné ce qu'il devait :)

Soit il y a eu un problème de connexion et la requête n'a pu être exécutée, soit il y a eu une erreur dans la requête. Afficher le message d'erreur t'en diras surement plus :
$valeur = mysql_query($sql_nb_visit) or die (mysql_error());
As-tu bien une table nommée "visites" ? contient-elle bien les champs "nombre" et "id" ?
Te connectes-tu sur la bonne base ? avec les bonnes infos de connexion ?

probleme avec un compteur de visite

par 2501gigi » 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.
<?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&egrave;tres de connexion &agrave; la base de donn&eacute;es: 
$delai = 7200;        /* Dur&eacute;e en seconde prise en compte pour &eacute;tablir qu'une visite est "unique" */ 
/* *********************************************************************************************** */ 
/* 
*** Fonction d'incr&eacute;mentation du compteur. 
*/ 
function increment_compteur() 
{ 
    /* R&eacute;cup&eacute;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&eacute;mentation du compteur. */ 
        $plus_un = $compteur['nombre']; 
        $plus_un += 1; 
        /* Mise &agrave; 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 &agrave; 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 &agrave; la base de donn&eacute;es : d'abord, v&eacute;rification que l'adresse IP est pr&eacute;sente ou non */ 
$sql_ip = "SELECT * from stats WHERE ip = '$adresse_ip'"; 
/* V&eacute;rification si l'IP est pr&eacute;sente dans la base de donn&eacute;e */ 
if($result_ip = mysql_query($sql_ip)) 
{ 
    /* Si l'IP est trouv&eacute;e, comparaison du d&eacute;lai entre le mktime enregistr&eacute; et celui actuel 
    Il s'agit alors de v&eacute;rifier &agrave; combien de temps remonte la pr&eacute;c&eacute;dente visite : 
    Si elle est au del&agrave; du d&eacute;lai fix&eacute;, on devra incr&eacute;menter le compteur de 1 */ 
    /* R&eacute;cup&eacute;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 &eacute;t&eacute; trouv&eacute;e et le d&eacute;lai n'est pas d&eacute;pass&eacute;: simple mise &agrave; jour du moment */ 
        } 
        else 
        { 
            mise_a_jour();/* L'ip a &eacute;t&eacute; trouv&eacute;e et le d&eacute;lai est d&eacute;pass&eacute;: mise &agrave; jour du moment et incr&eacute;mentation du compteur */ 
            increment_compteur(); 
        } 
    } 
    else /* aucun r&eacute;sultat n'est trouv&eacute; correspondant dans la bdd: on incr&eacute;temente le compteur et on inscrit une nouvelle ligne dans les adresses. */ 
    { 
        /* On &eacute;tablit alors une nouvelle ligne dans la table incluant l'adresse IP et le moment et 
        on incr&eacute;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&eacute;cup&eacute;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 &agrave; 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 :
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
la ligne 121 et celle si :
$sql_nb_visit = "SELECT nombre FROM visites WHERE (id = 1)";
$valeur = mysql_query($sql_nb_visit);
if($compteur = mysql_fetch_array($valeur)) //ligne 121
{
Bon voila si quelqu'un a une idée ?

Merci a tous et a toutes.