Vous n'êtes pas identifié(e).
Pages :: 1
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 :
<br><br>Les stats: Filtre par ip
<?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 !
'.$sql.'
'.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 !
'.$sql.'
'.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>
';
// 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 ();
?>
Hors ligne
Saluton,
C'est qu'il te faut regarder vers les fonctions SQL de groupage, genre COUNT() a utiliser avec une clause GROUP BY
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Chalut
Merci pour ta réponse j'ai fait ma recherche et en effet ça colle pas mal .. du moins ça marche avec cette requête :
ip_site = le stockage des ip
page_site = les pages visitées
mici
( j'avoue que je comprends pas le as .... )
Hors ligne
Le AS est facultatif, il permet de définir des alias pour des colonnes calculées ou pour renommer des tables au nom un peu trop chiant à retranscrire dans les requêtes multitables en jointure, genre :
FROM le_nom_de_la_table_qui_va_bien_mais_qui_est_un_peu_long AS t1
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
oky merci pour l'info
par contre je suis confronté à un autre problème qui est le suivant
sur le site je propose un visualisation de fichiers pdf dans une ligthbox par contre je passe par une page ( indépendante ) pour éviter d'avoir l'url du répertoire par la visiteur
et je désire tracer les affichages des pdf des utilisateurs
le problème c'est que ma requête s’exécute deux fois ( elle enregistre deux passage )
un bout du code de ma page d'affichage :
if($aff == topaze){
// Vous voulez afficher un pdf
header ( 'Content-type: application/pdf' );
// Il sera nommé downloaded.pdf
//header ( 'Content-Disposition: attachment; filename="downloaded.pdf"' );
// Le source du PDF original.pdf
readfile ( 'doc_com_technal/doc_topaze.pdf' );
$sql = "insert into traceur_site(id_site, date, ip_site,page_site,heure) VALUES('','$date','$ip_ok','$page_visite','$heure')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_close ();
}
elseif($aff == soleal_gy){
// Vous voulez afficher un pdf
header ( 'Content-type: application/pdf' );
// Il sera nommé downloaded.pdf
//header ( 'Content-Disposition: attachment; filename="downloaded.pdf"' );
// Le source du PDF original.pdf
readfile ( 'doc_com_technal/doc_gy_soleal.pdf' );
}
else
{
echo 'erreur le fichier inexistant ';
}
?>
Hors ligne
Si cette requête s'exécute deux fois c'est que le code qui la lance est appelé deux fois.
Faute d'avoir une vision d'ensemble de la cinétique de ton code, difficile de faire un diagnostic plus précis.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
ben pour résumer ( si ça peut être plus clair ) ma page ou il y a le lien : sachant que j'utilise prettyphoto comme lightbox
coulissants.php
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto({animation_speed:'normal',slideshow:3000, autoplay_slideshow: false, social_tools:false,deeplinking: false});
});
</script>
<?php
include 'config/config.php';
$page_visite='Page gamme coulissants';
//date
$date = date("Y-m-d" );
$heure = Date("H:i:s");
//-- Fonction de récupération de l'adresse IP du visiteur
function get_ip()
{
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'];
}
return $ip;
}
///echo 'Votre adresse IP est : ' . get_ip ();
$ip_ok=''. get_ip ();
/////// enregistrement de l'ip
$sql = "insert into traceur_site(id_site, date, ip_site,page_site,heure) VALUES('','$date','$ip_ok','$page_visite','$heure')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_close ();
?>
<?php
echo'
<td class="below_header"><div align="center"><font face="Times New Roman" size="6" color="#FF0000">Les Coulissants </font></div></td>
<td class="shadow_right"> </td>
</tr>
<tr>
<td class="shadow_left"> </td>
<td class="main_content_box"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="left_content"></td>
<td class="body_content_gamme"><div align="left"><a href="affiche_pdf.php?affiche=topaze&page=affichage_pdf_topaze_gbi&add_ip='.$ip_ok.'&date='.$date.'&heure='.$heure.'?iframe=true&width=80%&height=99%" rel="prettyPhoto" class="lien2" >Les Coulissants Topaze </a> <font face="Times New Roman" size="3" color="#FFFFFF">( format Pdf )</font> <br/><br/>
<a href="affiche_pdf.php?affiche=soleal_gy&page=affichage_pdf_soleal_gy&add_ip='.$ip_ok.'&date='.$date.'&heure='.$heure.'?iframe=true&width=80%&height=99%" rel="prettyPhoto" class="lien2" >Les Coulissants Soleal </a> <font face="Times New Roman" size="3" color="#FFFFFF">( format Pdf )</font><br/><br/>
<a href="affiche_pdf.php?affiche=lumeal_ga&page=affichage_pdf_lumeal_ga&add_ip='.$ip_ok.'&date='.$date.'&heure='.$heure.'?iframe=true&width=80%&height=99%" rel="prettyPhoto" class="lien2" >Les Coulissants Luméal </a><font face="Times New Roman" size="3" color="#FFFFFF">( format Pdf )</font>
</td>';
?>
et ma page affiche.php ( du moins une partie )
Hors ligne
Pages :: 1