|
|
|
| Можно ли сделать чтобы с системе сбора статистики сохранялись title страниц? А то анализировать результаты довольно сложно.
И еще. У меня учитываются отдельно ссылки вида /folder/ и /folder/index.php
Как объяснить скрипту что это одно и тоже? | |
|
|
|
|
|
|
|
для: Loki
(21.03.2005 в 17:31)
| | >Можно ли сделать чтобы с системе сбора статистики
>сохранялись title страниц? А то анализировать результаты
>довольно сложно.
В принципе можно, но для этого придётся название помещать в переменную, так как PHP, в отличие от JavaScript не сможет вытащить название из страницы.
>И еще. У меня учитываются отдельно ссылки вида /folder/ и
>/folder/index.php
>Как объяснить скрипту что это одно и тоже?
Для этого следует файле-счётчике count.php в самом начале поставить проверку вида
<?php
if(substr($_SERVER['PHP_SELF'],strlen($_SERVER['PHP_SELF'])-1) == "/") $_SERVER['PHP_SELF'] .= "index.php";
?>
|
т.е. проверить заканчивается ли URL на / и если это так добавить к нему индексный файл. | |
|
|
|
|
|
|
|
для: cheops
(21.03.2005 в 23:20)
| | >В принципе можно, но для этого придётся название помещать в переменную, так
>как PHP, в отличие от JavaScript не сможет вытащить название из страницы.
В общем-то это вполне реально. Посоветуйте, как это лучше реализовать? Можно писать названия в базу вместо путей, но я себе с трудом представляю как скрипт на это отреагирует. Можно сделать в базе дополнительный столбец. Полагаю, при этом придется редактировать все запросы к этой таблице? Можно завести отдельную таблицу.
Как лучше сделать? | |
|
|
|
|
|
|
|
для: Loki
(22.03.2005 в 09:56)
| | >В общем-то это вполне реально. Посоветуйте, как это лучше
>реализовать? Можно писать названия в базу вместо путей, но я
>себе с трудом представляю как скрипт на это отреагирует.
Вообще это идея... хотя нет, потом к названию страницы прибавиться доменное имя... но вообще можно будет подумать в этом направлении...
>Можно сделать в базе дополнительный столбец. Полагаю, при
>этом придется редактировать все запросы к этой таблице?
>Можно завести отдельную таблицу.
>Как лучше сделать?
Да можно будет добавить столбец, на самом деле много ничего исправлять не придётся. Если вы добавите имя страницы в таблицу ip, то придётся исправить SQL-запрос в count.php в строке 72, где происходит вставка (INSERT) данных в таблицу.
В админе нужно будет найти все конструкции вида
http://".$_SERVER["SERVER_NAME"].$pag['name']
|
и заменить их на
title - здесь имя столбца для хранения названия страницы.
PS Впрочем можно и по первому варианту идти - хранить названия страниц в поле name таблицы count, при этом нужно будет в админе убрать все http://".$_SERVER["SERVER_NAME"] | |
|
|
|
|
|
|
|
для: cheops
(22.03.2005 в 10:08)
| | Пришлось еще подправить sql запрос и признаки группировки.
Теперь выглядит следующим образом:
<?
$query_hits = "SELECT ip.id_page,
ip.title,
pages.name,
count(ip.id_ip) AS num,
MAX(ip.putdate) AS putdate
FROM ip, pages
WHERE ip.id_page = pages.id_page
GROUP BY ip.title
ORDER BY $orderstr
LIMIT $begin, $pnumber";
$pgs = mysql_query($query_hits);
if(!$pgs) puterror("Ошибка при обращении к таблице страниц");
while($pag = mysql_fetch_array($pgs))
{
echo "<tr>
<td><a
href=main.php?id_page=".$pag['id_page'].">".$pag['title']."</a></td>
<td>".$pag['num']."</td>
<td>".$pag['putdate']."</td>
<td><a
href=http://".$_SERVER["SERVER_NAME"].$pag['name'].">Перейти</a></td>
<td><a href=delpage.php?id_page=".$pag['id_page']."
title='Удаление устаревших(мёртвых) страниц из системы
подсчёта'>Удалить</a></td>
</tr>";
}
?>
|
Не уверен что все до конца правильно (в частности, сомнения относительно того, что произойдет при нажатии кнопки удалить, но это только сомнения:).
Раз уж на то пошло, то при просмотре статистики по конкретной странице имеет смысл выводить название этой страницы, а то сейчас это неочевидно.
Столько всего хочется подправить, но страшно - завтра выпустите новую версию, и как мне все эти новшества туда переносить?:) | |
|
|
|
|
|
|
|
для: cheops
(22.03.2005 в 10:08)
| | удалено | |
|
|
|
|
|
|
|
для: Loki
(22.03.2005 в 13:45)
| | Итак. Сделал следующее:
добавился файл pages.php следующего содержания:
<?php
$title='Старницы просмотренные с IP адреса';
$pageinfo='На этой странице вы можете видеть страницы просмотренные с IP-адреса.';
$menu=3;
$helppage='';
// Заголовок страницы
include "topcounter.php";
if (!isset($nav)) $nav=0;
if ($nav==0)
{$hit="count(id_ip) AS hits,";
$hit1="GROUP BY title";}
else
{$hit="";
$hit1="";}
print "<a href='pages.php";
if ($nav==0) print "?nav=1";
else print "?nav=0";
print "&ip=$ip'>Навигация/Статистика</a>";
?>
<table border="1" cellpadding="4" cellspacing="0" bordercolordark="white"
bordercolorlight="gray" align="center">
<tr><td><p>Страница</td>
<?
if ($nav==0) print "<td><p>Просмотров</p></td>";
?>
<td><p>Последнее обращение</td></tr>
<?
$query_pages="SELECT title,
$hit
putdate
FROM ip
WHERE
putdate >= DATE_FORMAT( NOW( ) , '%Y-%m-%d 23:59:59' ) -
INTERVAL 1 DAY
AND ip = '$ip'
$hit1
ORDER BY putdate DESC";
$pags = mysql_query($query_pages);
if(!$pags) puterror("Ошибка при обращении к таблице IP-адресов...");
while($pag = mysql_fetch_array($pags))
{
echo "<tr>
<td>".$pag['title']."</td>";
if ($nav==0) print "<td>".$pag['hits']."</td>";
echo "<td>".$pag['putdate']."</td></tr>";
}
?>
</table>
<?
include "bottomcounter.php";
?>
|
вызывается со страницы adresses.php так:
Что видим: сначала какие страницы и сколько раз посетил человек. При клике на переключателе "Навигация/Статистика " мы видим каким путем человек следовал по сайту и, соответственно, делаем выводы об удачности навигации.
Жду критики.
...и его забросали цветами в горшках... | |
|
|
|
|
|
|
|
для: Loki
(22.03.2005 в 16:23)
| | Если работает, критики никакой быть не может :))) | |
|
|
|
|
|
|
|
для: cheops
(22.03.2005 в 22:07)
| | Дыкть... распирает же от гордости:)
Кстати, проанализировав пути движения людей по сайту сделал определенные выводы относительно навигации. Скрипт оказался даже полезнее чем я ожидал! | |
|
|
|
|
|
|
|
для: cheops
(22.03.2005 в 10:08)
| | Нужен совет: главная страница счетчика формируется на основе количества записей в таблице pages, а названия страниц мы берем из таблицы ip. Таким образом, "мертывые" ссылки (не имевшие переменной title) не отображаются, но при расчете количества страниц учавствуют. Мне видится два возможных решения: перенос столбца с названиями страниц в таблицу pages (в этом случае, как мне кажется, можно будет выводить и "мертвые ссылки тоже") и второй вариант - при расчете страниц использовать только количество уникальных значений из столбца title таблицы ip, но вот как реализовать подобный запрос, я не знаю.
Что посоветуете вы? | |
|
|
|
|
|
|
|
для: Loki
(25.03.2005 в 09:46)
| | 1) Тогда нужно курочить таблицу pages - добавить новый столбец и исправить соотвествующим образом запрос в строке 36 файла count.php. Т.е. добавить добавление ссылки туда.
2) Количество уникальных столбцов можно получить при помощи ключевого слова DISTINCT, но не советую этот путь, мне вообще не нравится идя хранить title в таблице ip - так как эта таблица склонна к непомерному разрастанию. | |
|
|
|
|
|
|
|
для: cheops
(25.03.2005 в 10:00)
| | >мне вообще не нравится идя хранить title в таблице ip
а ведь это была ваша идея, озвученная всего на несколько постов выше:) | |
|
|
|
|
|
|
|
для: Loki
(25.03.2005 в 10:32)
| | Перенес поле title в таблицу pages
выкладываю обновленный файл pages.php
В новой версии ему можно передавать дополнительно параметры begin и end | |
|
|
|
|
|
|
|
для: Loki
(25.03.2005 в 11:43)
| | chops, я внес в счетчик довольно много мелких изменений, удобных на мой взгляд. Нужны ли они кому-то, или вы потом выпустите более новую версию? | |
|
|
|
|
|
|
|
для: Loki
(25.03.2005 в 11:55)
| | Если бы вы прислали бы их мне на simdyanov@softtime.ru, благодарность моя не имела бы границ, как в прочем и многочисленных пользователей этой системы (если надумаете укажите пожалуйста так же ваши ФИО и e-mail - мы их вставим в шапку файлов, как того требует BSD-лицензия). | |
|
|
|