[php/sql]Statistique +record

Bonjour,
voila j'aimerais savoir comment faire pour afficher :
-le nombre de visiteurs par jour.
-le record par mois.

voici ma table:
CREATE TABLE 'statistiques' (
  'id' int(11) NOT NULL auto_increment,
  'date' datetime NOT NULL default '0000-00-00 00:00:00',
  'ip' varchar(15) collate latin1_german2_ci NOT NULL default '',
  PRIMARY KEY  ('id')
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=1 ;


Mon enregistrement dans ma bdd:
$date = date("Y-m-d H:i:s");  
 
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {  
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];  
}  
elseif(isset($_SERVER["HTTP_CLIENT_IP"])) {  
$ip = $_SERVER["HTTP_CLIENT_IP"];  
}  
else {  
$ip = $_SERVER["REMOTE_ADDR"];  
}  
 
include("database.php");

mysql_connect($hosting, $login, $pass)  OR die("Erreur de connexion");
mysql_select_db($base) OR die("Erreur de sélection de la base");

$sql = mysql_query("INSERT INTO statistiques VALUES ('', '.$date.', '.$ip.')")or die("Erreur : ".$sql."<br />".mysql_error());  
 
mysql_close();


Ma page de visualisation:
include("database.php");

mysql_connect($hosting, $login, $pass)  OR die("Erreur de connexion");
mysql_select_db($base) OR die("Erreur de sélection de la base");  
 
// on cherche le nombre de pages visitées depuis le début (création du site)  
$select = mysql_query("SELECT id FROM statistiques")or die ("Erreur : ".mysql_error() );  
$total_visitees = mysql_num_rows($select);  
mysql_free_result($select);  
 
// on cherche le nombre de visiteurs depuis le début (création du site)  
$sql0 = mysql_query("SELECT DISTINCT ip FROM statistiques")or die("Erreur SQL !<br />".$sql0."<br />".mysql_error());  
$total_visiteur = mysql_num_rows ($sql0);  
mysql_free_result($sql0);  
 
echo "<tr><td align=\"center\">Nbre(s) de Visiteur(s) :  <font color=#FF0000><b>".$total_visiteur."</b></font></td></tr>
<tr><td align=\"center\">Nbre(s) Page(s) Vue(s) : <font color=#FF0000><b>".$total_visitees."</b></font></td></tr>"; 


Comment faire?
J'ai besoin de votre aide, merci d'avance.

6 réponses

  1. -le nombre de visiteurs par jour.
    SELECT COUNT(*) FROM 'statistiques' WHERE 'date' BETWEEN SUBDATE(NOW(), INTERVAL 1 DAY) AND NOW();

    -le record par mois.
    SELECT date, MAX(nb) FROM (SELECT COUNT(*) AS nb, date FROM 'statistiques' WHERE 'date' BETWEEN SUBDATE(NOW(), INTERVAL 1 MOUNTH) AND NOW() GROUP BY DATE(date, "%Y-%m-%d")); 

    plus trop sur de la seconde mais quelque chose comme ça
    1. merci de ta réponse j'ai enfin trouvé

      -le nombre de visiteurs par jour.
      $sql1 = mysql_query("SELECT MONTH(date) ip,COUNT(*) FROM statistiques GROUP by ip  ;");
      $total_visiteur_jour = mysql_num_rows ($sql1);  
      mysql_free_result($sql1);


      -le record par mois.
      $sql2 = mysql_query("SELECT date,COUNT(distinct ip),count(ip) FROM statistiques WHERE MONTH(date)=MONTH(CURRENT_DATE() ) GROUP BY DATE(date)");
      $total_record = mysql_num_rows ($sql2);  
      mysql_free_result($sql2);

      la seconde requete je ne suis pas encore sur on verras dans 1 mois si c'est bon
      1. -le nombre de visiteurs par jour.

        $sql1 = mysql_query("SELECT MONTH(date) ip,COUNT(*) FROM statistiques GROUP by ip ;");
        $total_visiteur_jour = mysql_num_rows ($sql1);
        mysql_free_result($sql1);

        avec ça tu n'as pas le nombre d'utilisateur à la journée, enfin bon, tu vas t'en rendre compte demain
        1. si j'ai vue mon erreur j'ai corriger mais j'ai un probleme avec ta requete sql sur le nbre de visiteur par jour
          1. bonjour,

            voila j'ai un problème sur ma table:


            CREATE TABLE 'statistiques' (
              'id' int(11) NOT NULL auto_increment,
              'date' datetime NOT NULL default '0000-00-00 00:00:00',
              'ip' varchar(15) collate latin1_german2_ci NOT NULL default '',
              PRIMARY KEY  ('id'),
              KEY 'date' ('date'),
              KEY 'ip' ('ip'(10))
            ) ENGINE=MyISAM AUTO_INCREMENT=385 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=385 ; 


            sa rajoute la même ip a chaque page vue, avec la date(h:m:s) différente, totale pour 22 visiteurs déja 385 entrée dans la table, comment y remédier?

            Niveaux de comptage par visiteur par jour voici ma requête modifier et opérationnel:

            $sql1 = mysql_query("SELECT date,COUNT(distinct ip),count(ip) FROM statistiques WHERE DAY(date)=DAY(CURRENT_DATE()) GROUP BY ip");
            $total_visiteur_jour = mysql_num_rows ($sql1);  
            mysql_free_result($sql1);


            Niveaux record par mois restant a tester debut du mois pour voir:
            $sql2 = mysql_query("SELECT ip,COUNT(DISTINCT date),COUNT(date) FROM statistiques WHERE MONTH(date)=MONTH(CURRENT_DATE()) GROUP BY ip");
            $total_record = mysql_num_rows ($sql2);  
            mysql_free_result($sql2);
            1. $sql1 = mysql_query("SELECT COUNT(*) FROM 'statistiques' WHERE 'date' > SUBDATE(NOW(), INTERVAL 1 DAY)");
              
              list($total_visiteur_jour) = mysql_fetch_rows ($sql1);
              echo  $total_visiteur_jour;
              


              modification pour utilisateur different
              SELECT COUNT(*) FROM 'statistiques' WHERE 'date' > SUBDATE(NOW(), INTERVAL 1 DAY) GROUP BY ip


              pour éviter d'avoir toujours les même IP qui s'insère, insère l'ip 1 seule fois par jour, ou instaure une session

              ou modifie la structure comme ceci
              CREATE TABLE 'statistiques' (
                'id' int(11) NOT NULL auto_increment,
                'date_deb' datetime NOT NULL default NOW(),
                'date_fin' datetime NOT NULL default NOW(),
                'ip' varchar(15) collate latin1_german2_ci NOT NULL default '',
                'recurrence' int(11) NOR NULL default 1;  
                PRIMARY KEY  ('id'),
              )