Изкарване на последни 20 посещения..

LuBaTa

Registered
Здравейте, трябва ми код на брояч със който в админ панела ми показва последните 20 посещения на http://сайта.net (пример) във таблица в която има:
IP(IP адрес) Дата и Час(Датата и часът на която е посетил сайта) От(страницата от която е влязъл в сайта)
и отдолу съответно:
123.123.123.123 06.08.2011/00:00:00 http://google.com
 
В момента ти какво си направил? Имаш ли таблицата и записваш ли информацията правилно?
 
Не е много ясно какво искаш - Php, SQL ?

От базата данни извличаш подледните 20 като пуснеш
select * from accesslog_table order by date_field DESC limit 20

Прецизирай си въпроса или потърси цялостно решение в някой от другите форуми.
 
Четох някъде във форум, че трябва PHP и MySql затова въпросът ми е в тази тема и ще го повторя!
Искам да се получи нещо такова:
face61b2435d.png

Легенда:
IP Адрес - Адреса на този който е посетил страницата
Дата и час - Датата и часът когато я е посетил
Реферал - Адресът от който е пренасочен към страницата
Трябва ми Mysql таблица и PHP код, но немога да ги намеря..
 
Ей това го слагаш в index.php

PHP:
$dbname = 'database_name';
$dbuser = 'db_username';
$dbpass = 'db_password';


$ip = $_SERVER['REMOTE_ADDR'];
$d = date('Y-m-d H:i:s');
$referer = $_SERVER['HTTP_REFERER'];
mysql_connect('localhost',$dbuser,$dbpass);
mysql_selectdb($dbname);
mysql_query("insert into accesslog (access_ip,access_date,access_referer) VALUE ('$ip','$d','$referer')");


След това там където искаш да покажеш списъка:
PHP:
$dbname = 'database_name';
$dbuser = 'db_username';
$dbpass = 'db_password';


$ip = $_SERVER['REMOTE_ADDR'];
$d = date('Y-m-d H:i:s');
$referer = $_SERVER['HTTP_REFERER'];
mysql_connect('localhost',$dbuser,$dbpass);
mysql_selectdb($dbname);
$rc = mysql_query("select * from accesslog order acccess_date desc limit 20");
echo '<table>';
while ($r = mysql_fetch_array($rc)) {
    echo '<tr><td>'.$r['access_ip'].'</td><td>'.date('d/m/Y H:i',strtotime($r['access_date'])).'</td></tr>';
}
echo '<table>';


Не съм пускал кода, така че ако ти даде някъде синтактична грешка си погледни php reference.
 
Грешка...
Код:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in pages/hits.php on line 25

Ето 25 ред:

Код:
while ($r = mysql_fetch_array($rc)) {
 
PHP:
$dbname = 'database_name';
$dbuser = 'db_username';
$dbpass = 'db_password';


$ip = $_SERVER['REMOTE_ADDR'];
$d = date('Y-m-d H:i:s');
$referer = $_SERVER['HTTP_REFERER'];
mysql_connect('localhost',$dbuser,$dbpass);
mysql_selectdb($dbname);
$rc = mysql_query("select * from `accesslog` order by `acccess_date` desc limit 20") or die(mysql_error());
echo '<table>';
while ($r = mysql_fetch_array($rc)) {
    echo '<tr><td>'.$r['access_ip'].'</td><td>'.date('d/m/Y H:i',strtotime($r['access_date'])).'</td></tr>';
}
echo '<table>';
 
Пак не стана.....
Пак дава същата грешка
Само още нещо..:
3аписва в базата данни, но записва импресиите, а на мен ми трябва да записва само уникалните...
 
Ако под уникалните разбираш всяка отделна сесия можем да го направим така:

в началото на index.php слагаш
session_start()

след това добавяш в accesslog още едно поле access_sess varchar(100)

в инсърта добавяме и сесията
mysql_query("insert into accesslog (access_ip,access_date,access_referer,access_sess) VALUE ('$ip','$d','$referer','".session_id()."')");


След това там където извличаме данните малко променяме заявката, за да игнорираме "импресиите" както казваш.
[sql]
select
access_ip, access_sess, max(access_date) as access_date
from accesslog
group by access_ip, access_sess
order by 3 desc
limit 20
[/sql]

(между другото изпуснал съм едно "by" в заявката select * from accesslog order BY acccess_date desc limit 20 и затова ти е давало грешка)
 

Back
Горе