[php/sql]Statistique +record

Yuushi_Sato Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   -  
 Siluni -
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. Siluni
     
    -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
    0
  2. Yuushi_Sato Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   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
    0
  3. Siluni
     
    -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
    0
  4. Yuushi_Sato Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Yuushi_Sato Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   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);
    0
  7. Siluni
     
    $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'),
    )
    
    0