|
|
|
| Пытаюсь сделать Статистику по переходам. Все работает за исключением того , что добавляеться +1 к 'count' только после перезагрузке этойже страницы =(
<?
$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "test";
$dbc = mysql_connect($db_host, $db_user, $db_pass); // Коннект к бд
$dbs = mysql_select_db($db_name); // Выбор бд
################################ Реферер
$referer = urldecode(getenv('HTTP_REFERER'));
if ($referer != NULL)
{
$query = "SELECT count(*) FROM referer WHERE 1 AND referer = '".$referer."' ;";
$result = mysql_query($query);
$otvet = mysql_fetch_array($result);
$ref = $otvet ['count(*)'] ;
if ($ref != 1)
{
$query = "INSERT INTO 'referer' ( 'id_referer' , 'referer' , 'page' , 'count' ) VALUES ('', '".$referer."', '".$PHP_SELF."', '1');";
if (!$query) echo mysql_error();
$result = mysql_query($query);
if (!$result) echo mysql_error();
}
else
{
###
$query = "SELECT * FROM referer WHERE 1 AND referer = '".$referer."' ;";
$result = mysql_query($query);
$otvet = mysql_fetch_array($result);
$new_count = $otvet ['count'] + 1;
$id = $otvet ['id_referer'] ;
###
$query = "UPDATE 'referer' SET 'count' = '".$new_count."' WHERE 'id_referer' = '".$id."' AND 'referer' = '".$referer."' LIMIT 1 ;";
if (!$query) echo mysql_error();
$result = mysql_query($query);
if (!$result) echo mysql_error();
###
}
}
################################
?>
|
| |
|
|
|
|
|
|
|
для: Akira
(20.11.2004 в 22:16)
| | Нужно проверить не совпадает ли реферер с именем текущей страницы, если совпадает - не засчитывать его. Исправьте строку
<?php
if ($referer != NULL)
?>
|
на
<?php
if ($referer != NULL && $referer != "http://".$_SERVER["SERVER_NAME"].$_SERVER["HTTP_REFERER"])
?>
|
PS Этот тип проверки не сработает если страница имеет параметры - нужно ещё и их добавить... | |
|
|
|
|
|
|
|
для: cheops
(20.11.2004 в 23:51)
| | нет не совпадает =( В тесте у меня переходит с index1.php на page.2 в index1.php. И как бы сделать что бы referer добовлялся только один раз? Ведь referer добовляеться каждый раз если перезагружаешь страницу... | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 00:04)
| | Нужно подумать... Кстати, в скрипте выше можно съэкономить запрос к базе данных, если увелчивать значение счётчика при помощи запроса
UPDATE 'referer' SET count = count+1
|
| |
|
|
|
|
|
|
|
для: cheops
(21.11.2004 в 01:17)
| | Спасибо =) Надо надыбать справочник по SQL-запросам =)
Мне кажеться , что достаточно будет сделать так , что бы реферер добавлялся сразу после загрузки страницы =) и не важно если она перезагрузиться =) Ведь мало кто будет ее часто перезагружать =) | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 01:27)
| | Ну как? Не кто не чего не придумал? | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 15:22)
| | Элегантного (без дополнительных полей под IP-адрес и время) чего-то на ум ничего не приходит :( | |
|
|
|
|
|
|
|
для: cheops
(21.11.2004 в 16:15)
| | =) Вы хотя бы сообщите почему так? Почему реферер не добавляеться сразу =) | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 17:44)
| | Кстати, зря с NULL значение переменной сравниваете
Для этого предназначен оператор !==, а лучше вообще сравнивать с пустой строкой или проверять значение переменной при помощи функции empty()
Мне кажется причина в условие
Если такого реферера в таблице нет, то число записей должно быть 0, а не 1... | |
|
|
|
|
|
|
|
для: cheops
(21.11.2004 в 18:11)
| |
->Если такого реферера в таблице нет, то число записей должно быть 0, а не 1...
Так ведь это проверяеться ответ из count(*),
Если ответ 1 значит реферер существует и надо добавить к count +1 , Если ответ 0 то добовляем сам реферер.
->Кстати, зря с NULL значение переменной сравниваете
Вы будете смеяться но ЭТО я взял из Вашего учебника =)) | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 18:30)
| | >Если ответ 1 значит реферер существует и надо добавить к
>count +1 , Если ответ 0 то добовляем сам реферер.
А если значение будет 2? Здесь лучше поставить условие if($ref == 0)
>Вы будете смеяться но ЭТО я взял из Вашего учебника =))
И на старуху бывает проруха :))) Если не трудно сообщите номер страницы. При сравнении с величинами, чьё значение может принимать NULL следует использовать операторы === и !==. | |
|
|
|
|
|
|
|
для: cheops
(21.11.2004 в 18:40)
| | >А если значение будет 2? Здесь лучше поставить условие if($ref == 0)
Не будет =) referer уникальный =)
>И на старуху бывает проруха :))) Если не трудно сообщите номер страницы.
стр. 404
Так всетаки почему не добавляеться сразу? | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 19:13)
| | Хм... постаюсь воспроизвести ситуацию, но завтра... у нас тут весь день был сильный ветер и у меня уже 9 часов нет света, а бук чуется скоро разрядится, если его сотовый не опередит, в любом случае мне не более полу часа осталось наслаждаться цивилизацией :))) | |
|
|
|
|
|
|
|
для: cheops
(21.11.2004 в 21:18)
| | Сочувствую товарищ =) у нас под Питером тоже Штурмовое предупрежденье =) | |
|
|
|
|
|
|
|
для: Akira
(21.11.2004 в 19:13)
| | Хм... странно немного в упрощённом варианте ваш скрипт у меня подцепляет реферер с первого раза. В аттаче файл, вот используемая таблица
CREATE TABLE referer (
id int(11) NOT NULL auto_increment,
referer text NOT NULL,
count int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
|
| |
|
|
|
|
|
|
|
для: cheops
(22.11.2004 в 23:25)
| | Самое интересное что у меня тоже заработал =( Может это все Денвер? | |
|
|
|