[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Счётчик для сайта
fink-artem
Люди помогите, пожалуйста написать счётчик посещаемости для сайта
Можно использовать php, js ,ajax, и др.
Я пробовал уже написать с помощью php и mysql, но всякий раз какой-то глюк php не давал мне этого сделать
Заранее спасибо



Спустя 10 минут, 37 секунд (30.03.2011 - 07:32) olgatcpip написал(а):
Эм...
что за сайт? как работает? есть ли генерация страниц?
Для своего сайта?

Или типа http://www.warlog.ru/ ?

Спустя 4 минуты, 58 секунд (30.03.2011 - 07:37) fink-artem написал(а):
Сайт состоит из одной страницы index.php
в зависимости от нажимания ссылок на этой сайте формируется разный контент
то есть все ссылки в index.php сами на себя, только с помощью get посылается id
страницы на которую нажали.

Спустя 6 минут, 1 секунда (30.03.2011 - 07:43) olgatcpip написал(а):
В таком случае разумно, что уже есть какой-то корневой/начальный скрипт/метод , который участвует в генерации ответа. Правильно?
В нем то и лови этот ид, хотя скорее уже ловишь.
Найди это место и след строчкой напиши... я не знаю есть ли у тебя подключение к БД... Если есть, создай таблицу id страницы, кол-во кликов
или в файл пиши......
Тут короче нужно определиться каким путем пойдешь.

Спустя 5 минут, 31 секунда (30.03.2011 - 07:49) fink-artem написал(а):
бд есть
но мне надо чтобы он считал не количество страниц, а кол. пользователей
то есть, когда заходишь на глав, то он +1 , а когда пользователь гуляет по сайту то он ничего не прибавлял
Я пробовал написать такое, но у меня почему то когда пользователь гуляет по сайту он все равно через раз делает +1
При этом у этой ошибки нет закономерности


Спустя 1 минута, 41 секунда (30.03.2011 - 07:50) olgatcpip написал(а):
А как ты проверяешь уникальность пользователя?

Спустя 13 минут, 30 секунд (30.03.2011 - 08:04) fink-artem написал(а):
Никак если зашёл на сайт значит плюс

Спустя 1 минута, 34 секунды (30.03.2011 - 08:06) olgatcpip написал(а):
и что будет, если главную все время обновлять?????
Это нормально, что он плюсить будет?

Спустя 4 минуты, 10 секунд (30.03.2011 - 08:10) fink-artem написал(а):
Только идиот будет всё время обновлять
тем более счётчик на сайте сам не выводится
мне нужно только число в бд для статистики
ни один пльзователь не будет знать, что есть счётчик

Спустя 7 минут, 58 секунд (30.03.2011 - 08:18) olgatcpip написал(а):
ну ладно. пущай будет так.

Цитата
Я пробовал написать такое, но у меня почему то когда пользователь гуляет по сайту он все равно через раз делает +1


Значит не в то место поставил. Я не знаю твоих скриптов, поэтому буду тыкать несколько пальцем в небо.

Нужно найти место, которое не обновляется. Ты сказал, что по JSу у тебя обновляется контент. Это происходить обновление всей страницы? Или части.
Вполне разумно было бы сделать только часть. В таком случае, грубо говоря, при генерации той части сайта, которое не обновляется, смею предположить, что это шапка сайта, вписать эту функцию +1_в_статистику.

Подойдет такой подход?

Спустя 6 минут, 41 секунда (30.03.2011 - 08:24) fink-artem написал(а):
Контент обновляется благодаря php, которое принимает id страницы и в зависимости от него берёт контент из бд

Спустя 2 минуты, 3 секунды (30.03.2011 - 08:26) olgatcpip написал(а):
т.е. абсолютно весь html, начиная с
Цитата
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"> -->
<html>

и заканчивая
Цитата
</html>

?

т.е. вся- вся страница или только часть?

Спустя 4 минуты, 8 секунд (30.03.2011 - 08:31) fink-artem написал(а):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"> -->
Вот этого нету
А надо?

Спустя 4 минуты, 49 секунд (30.03.2011 - 08:35) olgatcpip написал(а):
не суть, в этой строчке.
Суть в том, что не часть меняется. У вас абсолютно все страница разные и не имеют повтор блоков, например шапка ?
Я так предполагаю, что это сделано для защиты какой-то... но по-мне абсолютно лишне.

Цитата
то есть, когда заходишь на глав, то он +1 , а когда пользователь гуляет по сайту то он ничего не прибавлял

Ещё вопрос. Главная тоже ид имеет? Или наоборот не имеет?
Я к тому, что перед тем как сделать +1 может проверять на существование или равности? Прокатит нет?

Спустя 2 минуты, 39 секунд (30.03.2011 - 08:38) fink-artem написал(а):
Главная не имеет id и поэтому он +1 если id=null

Спустя 11 минут, 18 секунд (30.03.2011 - 08:49) olgatcpip написал(а):
т.е. даже так дает сбои.

Слушай, несколько висну над вопросом, сильно любопытно. Это специализированный сайт не для народа я так понимаю. да?

Мне не понятно. зачем js для перехода со страницы на страницу.
И должна ли считаться статистика, если в лоб ввести урл страницы, да и есть ли у страницы свой урл blink.gif
Ответь плиз.

Ну а если вернуться к статистике, то
если ты так и прописал if( id==null ) count+1 И все равно глючит, то тут 3 варианта
1 - Либо существует ещё одна страница с ид=null
2 - либо не туда поставил, но тогда нужно код смотреть.
И не понятно как ты мог не туда поставить.....
3 -Если у тебя есть редиректы, то думаю такой глюк тоже возможет и он совсем не заметен! У тебя есть редиректы?

Спустя 2 часа, 56 минут, 33 секунды (30.03.2011 - 11:46) fink-artem написал(а):
Такой страницы с id равным null точно только одна я проверял
Могу послать код если нужно

Спустя 1 минута, 49 секунд (30.03.2011 - 11:48) fink-artem написал(а):
А js я использую для того чтобы всё меню было как в ооп
Тоесть объект управляемый из одного фаила

Спустя 7 минут, 25 секунд (30.03.2011 - 11:55) olgatcpip написал(а):
fink-artem
Прости, как бы я не старалась не могу понять последний пост....
если дашь скрипт я с интересом посмотрю. может что пойму

Спустя 8 минут, 33 секунды (30.03.2011 - 12:04) fink-artem написал(а):
<HTML>
<HEAD>
<META http-equiv="Content-Type"
content="text/html; charset=windows-1251">

<script language="JavaScript" type="text/javascript" src="js/main.js"></SCRIPT>


</HEAD>
<BODY>

<TABLE Style="width:100%">

<TR>
<TD valign=top align=left style="width:200px;">
<!-- Левая колонка -->
<? 
$index=isset( $_GET['ind'])? $_GET['ind'] : null;
switch ($index){
case index: $num = "0"; break;
case o_nas: $num = "1"; break;
case our_coordinat: $num = "2"; break;
case kredit: $num = "3"; break;
case proekt: $num = "4"; break;
case eckis: $num = "5"; break;
case null: $num = "0";
}
?>

<script language="JavaScript" type="text/javascript">
putMenu(<?PHP echo $num; ?>);
</
script>

<?
$hostname = "localhost";
$username = "fink8";
$password = "0000";
$dbName = "fink8";

mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error());

$userstable = "chet";

$query = "SELECT * FROM $userstable ";

/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
$res = mysql_query($query) or die(mysql_error());
$row=mysql_fetch_array($res);

if ($index == null){
$row1=$row[1]+1;//здесь он прибавляет когда не должен
}
$row2=$row[0]+1;
$query = 'UPDATE ' . $dbName . '.' . $userstable . ' SET `user` =' .$row1. ',`straniz` = ' . $row2 . ' WHERE ' . $userstable . '.`straniz` = ' . $row[0];

mysql_query($query) or die(mysql_error());

/* Выполнить запрос. Если произойдет ошибка - вывести ее. */

mysql_close();
?>


<BR>
</BODY>
</HTML>


Спустя 20 минут, 39 секунд (30.03.2011 - 12:24) olgatcpip написал(а):
1 - Строки должны быть в кавычках! знаю что так можно но это не хорошо
case 'index': $num = "0"; break;
case 'o_nas': $num = "1"; break;
2 -
Цитата
$query = 'UPDATE ' . $dbName . '.' . $userstable . ' SET `user` =' .$row1. ',`straniz` = ' . $row2 . ' WHERE ' . $userstable . '.`straniz` = ' . $row[0];


Скажи, чему станет равно `user`, если $index не будет равен null ?

3 -
 $query = "SELECT * FROM $userstable "; 

ORDER BY полезная штука! В ЗАПРОСАХ ВСЕГДА СТАВЬ, если будет select, иначе порядок может быть различен.

4 - Выведи, пожалуйста мне переменну $row
$row=mysql_fetch_array($res); 
print_r($row);


5 - Поясни мне таблицу chet
в какой переменной хранятся иды страниц, да и вообще все поля, которые в ней есть.
А то эта строка
Цитата
$query = 'UPDATE ' . $dbName . '.' . $userstable . ' SET `user` =' .$row1. ',`straniz` = ' . $row2 . ' WHERE ' . $userstable . '.`straniz` = ' . $row[0];
Мне не понятна. Это и есть то самое, статистика. Это момент когда `user` - это кол-во переходов на страницу?
не понятно, если это подсчет статистики, то почему ты в условие ее не поставил??

Спустя 7 минут, 55 секунд (30.03.2011 - 12:32) fink-artem написал(а):
Если null, тогда user будет на один больше чем записано в бд
$row :

Array ( [0] => 23 [straniz] => 23 [1] => 3 [user] => 3 [2] => 0000-00-00 [Data] => 0000-00-00 )

User: кол-во пользователей за день
Straniz: кол-во просмотренных страниц за день
DATA: это дата дня

С тем чтобы каждый день он писал в новую дату я ещё не доработал, но мне пока
нужно чтобы он user писал правильно.

Спустя 3 часа, 12 минут, 40 секунд (30.03.2011 - 15:45) olgatcpip написал(а):
Не, вопрос то остался
Цитата
Скажи, чему станет равно `user`, если $index не будет равен null ?

А я скажу. сказать?
Скрытый текст
пустым... потому как до проверки на нул, не определена $row1

Поэтому делается +1 , пока мы кликаем на главную, как толлько ушли с главной обнуляется, потом мы снова на главной, посчиталось +1.

Так или нет?

Спустя 16 минут, 51 секунда (30.03.2011 - 16:02) fink-artem написал(а):
Я исправил на такое нижний участок кода
$row1=$row[1];
if ($index == null){
$row1+=1;
}

Но все равно программа через раз обходит if и делает +1

Спустя 3 минуты, 52 секунды (30.03.2011 - 16:06) fink-artem написал(а):
Самое интересное, что если я нажму обновить не главную страницу, то первый раз +1 будет, а все последующие разы, когда я буду нажимать на переход на этой странице +1 не будет, но как только я уйду с этой страницы и вернусь обратно, тогда всё повторяется.

Спустя 13 минут, 18 секунд (30.03.2011 - 16:19) fink-artem написал(а):
Да и ещё я заметил, что user и straniz уже приходят из бд на один больше, чем там есть (Через раз)

Спустя 12 часов, 58 минут, 15 секунд (31.03.2011 - 05:17) olgatcpip написал(а):
Ну я не к тому все писала несколько.
1 - я бы перенесла и по другому написала запрос.
2 - Дату лучше хранить в типе инт.

$today = mktime(0,0,0,date('m'),date('d'),date('Y')); // она будет в течении дня одна, а в след день другной

//if ($index == null){ // будет истина, если ты напишешь так site.ru?ind=''

if ($num == 0){
$query = 'UPDATE ' . $dbName . '.' . $userstable . ' SET `user` = 'user'+1
where '
.$userstable.'.Data = '.$today.';

// не доверяю я этому условию! да и на кой тебе оно??
//WHERE '
. $userstable . '.`straniz` = ' . $row[0];
// здесь выполнить в БД
}
// а тут никаких +1!
$query = 'UPDATE ' . $dbName . '.' . $userstable . ' SET `straniz` = 'straniz'+1
where '
.$userstable.'.Data = '.$today.';


$query = "SELECT * FROM $userstable "; - эту строчку + что к ней относится вообще не нужно по моему для статистики.

Цитата
Самое интересное, что если я нажму обновить не главную страницу, то первый раз +1 будет, а все последующие разы, когда я буду нажимать на переход на этой странице +1 не будет, но как только я уйду с этой страницы и вернусь обратно, тогда всё повторяется.

ЭМ..... я об этом говорила..
Цитата
я: А как ты проверяешь уникальность пользователя?
ты: Никак если зашёл на сайт значит плюс
я: и что будет, если главную все время обновлять?????
Это нормально, что он плюсить будет?
ты: Только идиот будет всё время обновлять.....

Так переходить, т.е. возвращаться на главную и обновлять - это одно и тоже. Я тогда не знала как тебе объяснить.
Твой код работает. Поздравляю.

Спустя 2 часа, 21 минута, 47 секунд (31.03.2011 - 07:39) fink-artem написал(а):
Хорошо, я попробую

Спустя 2 часа, 34 минуты, 21 секунда (31.03.2011 - 10:13) fink-artem написал(а):
Что выводит
$today

У меня число 1301529600, что это?
Я всё сделал и он выдал мне

Parse error: syntax error, unexpected T_STRING in Z:\home\fink1.ru\www\index.php on line 138

Спустя 1 час, 37 минут, 30 секунд (31.03.2011 - 11:51) fink-artem написал(а):
Всё, я попробовал,
Теперь он Через раз прибавляет к user+1, а к straniz+2;
То есть ничего не изменилась.
Он все равно как-то обходит if
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.