par
spifspaf » 15 févr. 2013, 00:12
Bonjours à tous
après avoir cherché un bon moment et étant débutant en php
je cherche à savoir comment je peux compter des enregistrements dans une base sql
sachant que je récupère les ip des visiteurs du site et les pages visitées
ce que je recherche à faire :
c'est comptabiliser le nombre total de pages visitées par adresse ip en évitant les doublons d'ip
genre :
ip 0.0.0.1 visite la page a
ip 0.0.0.1 visite la page b
ip 0.0.0.10 visite la page a
ip 0.0.0.10 visite la page b
ip 0.0.0.11 visite la page a
j'arrive a éviter les doublons d'ip avec un SELECT DISTINCT mais je ne trouve pas comment comptabiliser le total des pages visitées par ip
genre à l'affichage :
ip 0.0.0.1 à visité 2 pages
ip 0.0.0.10 à visité 2 pages
ip 0.0.0.11 à visité 1 page
voici un bout mon code pour la requête et l'affichage :
Code : Tout sélectionner
<?php
include'menu_filtre_stats_site.php';
?>
<br><br>Les stats: Filtre par ip<br /><br />
<?php
// on se connecte à notre base
$base = mysql_connect ('****', '****', '****');
mysql_select_db ('****', $base);
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT count(*) FROM traceur_site ';
// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);
// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune réponse trouvée';
}
else {
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche
echo '<tr>';
echo '<td bgcolor="#669999"><b><u> Ip du visiteur </u></b></td>';
echo '<td bgcolor="#669999"><b><u> Page Visitée ou nombre(s) de connexion(s) </u></b></td>';
echo '</tr>'."\n";
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;
$nb_affichage_par_page = 10;
// Préparation de la requête avec le LIMIT
$sql = 'SELECT DISTINCT ip_site FROM traceur_site ORDER BY ip_site DESC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on affiches les résultats dans la <table>
echo '<tr>';
echo '<td bgcolor="#CCCCCC"> ', htmlentities(trim($data['ip_site'])) , ' </td>';
/// echo '<td bgcolor="#CCCCCC"> ', htmlentities(trim($data['ip_site'])) , ' </td>';
echo '</tr>'."\n";
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
echo '</table><br />';
// on affiche enfin notre barre
echo '<span class="gras"> page :'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 5).'</span>';
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);
// on ferme la connexion à la base de données.
mysql_close ();
?>
merci d'avance pour l'aide

Bonjours à tous
après avoir cherché un bon moment et étant débutant en php
je cherche à savoir comment je peux compter des enregistrements dans une base sql
sachant que je récupère les ip des visiteurs du site et les pages visitées
ce que je recherche à faire :
c'est comptabiliser le nombre total de pages visitées par adresse ip en évitant les doublons d'ip
genre :
ip 0.0.0.1 visite la page a
ip 0.0.0.1 visite la page b
ip 0.0.0.10 visite la page a
ip 0.0.0.10 visite la page b
ip 0.0.0.11 visite la page a
j'arrive a éviter les doublons d'ip avec un SELECT DISTINCT mais je ne trouve pas comment comptabiliser le total des pages visitées par ip
genre à l'affichage :
ip 0.0.0.1 à visité 2 pages
ip 0.0.0.10 à visité 2 pages
ip 0.0.0.11 à visité 1 page
voici un bout mon code pour la requête et l'affichage :
[code]<?php
include'menu_filtre_stats_site.php';
?>
<br><br>Les stats: Filtre par ip<br /><br />
<?php
// on se connecte à notre base
$base = mysql_connect ('****', '****', '****');
mysql_select_db ('****', $base);
// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql = 'SELECT count(*) FROM traceur_site ';
// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);
// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
echo 'Aucune réponse trouvée';
}
else {
echo '<table bgcolor="#FFFFFF">'."\n";
// première ligne on affiche
echo '<tr>';
echo '<td bgcolor="#669999"><b><u> Ip du visiteur </u></b></td>';
echo '<td bgcolor="#669999"><b><u> Page Visitée ou nombre(s) de connexion(s) </u></b></td>';
echo '</tr>'."\n";
// sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
if (!isset($_GET['debut'])) $_GET['debut'] = 0;
$nb_affichage_par_page = 10;
// Préparation de la requête avec le LIMIT
$sql = 'SELECT DISTINCT ip_site FROM traceur_site ORDER BY ip_site DESC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
// on exécute la requête
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on va scanner tous les tuples un par un
while ($data = mysql_fetch_array($req)) {
// on affiches les résultats dans la <table>
echo '<tr>';
echo '<td bgcolor="#CCCCCC"> ', htmlentities(trim($data['ip_site'])) , ' </td>';
/// echo '<td bgcolor="#CCCCCC"> ', htmlentities(trim($data['ip_site'])) , ' </td>';
echo '</tr>'."\n";
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
echo '</table><br />';
// on affiche enfin notre barre
echo '<span class="gras"> page :'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 5).'</span>';
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($resultat);
// on ferme la connexion à la base de données.
mysql_close ();
?>[/code]
merci d'avance pour l'aide :D