[php/sql]Statistique +record

Fermé
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 - 7 avril 2010 à 13:08
 Siluni - 10 avril 2010 à 18:45
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.
A voir également:

6 réponses

-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
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
7 avril 2010 à 20:02
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
-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
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
9 avril 2010 à 05:17
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Yuushi_Sato Messages postés 104 Date d'inscription mardi 1 décembre 2009 Statut Membre Dernière intervention 18 février 2021 1
10 avril 2010 à 02:51
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
$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