PDA

Показать полную графическую версию : [решено] Как сделать статистику (счётчик) на сайте на PHP


Страниц : [1] 2

Pavluha
17-08-2010, 19:48
Помогите, пожалуйста, создать статистику (счётчик) на сайте -- сколько раз проcмотрели сайт и сколько сейчас его просматривают. Заранее благодарен.

Coutty
17-08-2010, 20:11
Создаёте табличку в MySQL, где будет храниться статистика посещений:
[ id | page | views ]
В начале каждого скрипта добавьте увеличение количества views на 1 для соответствующих page. Если по страницам не надо, то можно и без page обойтись (и вовсе в текстовом файле сохранять простое число).

Сколько сейчас просматривают - это смотря как вы воспринимаете слово "сейчас". Обычно создают таблицу в БД, куда записывают IP-адреса и время посещения примерно в таком виде:
[ IP | dateTime ]
И опять же - при каждом выполнении скрипта добавлять запись о данном пользователе и удалять все, у которых дата-время на 15 минут устарели. Посчитать записи несложно.
Обычно используют временную таблицу, т.к. сохранять эти данные при сбое не так уж и важно.

Pavluha
17-08-2010, 20:20
Coutty, я не знаю где находится MySQL. Как создать таблицу в MySQL. Что для этого нужно. Я использую Денвер-3.

Coutty
17-08-2010, 20:46
Pavluha, я не знаю, каков ваш уровень знаний в этом вопросе, поэтому пишу общими словами.
В наборе Денвера есть MySQL и софт для управления базами данных - phpMyAdmin. С его помощью можно разобраться в SQL-синтаксисе.

В общем случае работа с БД строится так:
1. Запрос на соединение: mysql_connect(localhost,root, 'password')
2. Выбор БД: mysql_select_db('db_name')
3. Отправка запроса к СУБД: $sql = mysql_query("SELECT * FROM table_name")
4. Разборка ответа: $result = mysql_fetch_assoc($sql). В цикле, если возвращаемых строк больше 1.

Для добавления строк используется запрос: "INSERT INTO table_name SET param1 = 'value1', param2 = 'value2'" и т.д.
Обновление строк в таблице: "UPDATE table_name SET param1 = param1 + 1" (это для примера - увеличение значения на единицу).

В любом случае, начинайте знакомство с MySQL через phpMyAdmin - удобная штука.

Pavluha
17-08-2010, 21:17
Coutty, а есть ли русская версия phpMyAdmin, а то не всё понятно.

Coutty
17-08-2010, 21:43
На первой же странице phpMyAdmin можно указать язык. Русский там есть.

Pavluha
17-08-2010, 21:53
Coutty, вот как раз русского там нет. Только английский.

Coutty
18-08-2010, 07:41
Может быть в денвере урезанный дистрибутив phpMyAdmin? Попробуйте скачать полную версию и распаковать на место старой.
Скриншот с выбором языка (http://img718.imageshack.us/img718/4817/scrt.png) (у меня, правда, очень старая версия, но не думаю, что там сильно поменялось. Новая есть здесь (http://www.phpmyadmin.net/home_page/downloads.php)).

Pavluha
22-08-2010, 12:00
Coutty, я скачал phpMyAdmin но опять не разобрался. Как создать таблицу в phpMyAdmin.

Coutty
22-08-2010, 12:24
Вот здесь (http://phpprogs.ru/article/mysql-rabota-s-phpmyadmin), например, описано.

Pavluha
22-08-2010, 12:53
Coutty, там нет скриншотов. Можете их показать.

phpprogs
23-08-2010, 13:55
зарегился тут, чтобы сказать :)
Pavluha, скрины обновил

Pavluha
24-08-2010, 11:28
phpprogs, у меня phpMyAdmin версии 3.3.5, а описывается 2.6.1. Можете описать работу с phpMyAdmin версии 3.3.5 или хотябы дайте ссылку на phpMyAdmin версии 2.6.1

phpprogs
25-08-2010, 14:41
http://phpprogs.ru/uploads/phpmyadmin_small.png (http://http://phpprogs.ru/uploads/phpmyadmin.png)

Pavluha
26-08-2010, 16:07
Большое спасибо, phpprogs. На первой странице (http://forum.oszone.net/thread-183200.html) Coutty писал, как надо отправлять запросы к MySQL. Можно подробнее. Я создал базу testbase в которой таблица testtable. В таблице 3 поля: id, page, views. Вот мне надо, чтобы параметр views увеличивался на 1 и показывался на экране. У меня не получается сделать так, как там описано. Видно что-то неправильно делаю.

Coutty
26-08-2010, 16:27
У меня не получается сделать так, как там описано. Видно что-то неправильно делаю. »
Опишите, как вы делаете.

Увеличивать так:
UPDATE `testtable` SET `views`=`views`+1
У меня под рукой сейчас нет MySQL, т.к. проверить не могу. Но должно быть так. Ошибка разве что в кавычках может быть - где-то обратные ( ` ), где-то прямые ( ' ) должны быть.
Поле-то у вас какой тип имеет? Integer?

Чтобы показывать на экране, надо делать запрос и обрабатывать:
$sql = mysql_query("SELECT `views` FROM `testtable` WHERE `page`='$page'"); // в $page, видимо, должно быть имя страницы как в таблице
$result = mysql_fetch_assoc($sql);
echo $result['views'];

А чтобы не делать ошибок в нике, можно просто щёлкнуть по нему - он и вставится в поле.

Pavluha
28-08-2010, 12:51
Опишите, как вы делаете. »

А я делаю так:


<?
$page='main';
mysql_connect('localhost','testbase','XXXXXX');
mysql_select_db('testtable');
$sql = mysql_query("SELECT `views` FROM `testtable` WHERE `page`='$page'");
mysql_query("UPDATE `testtable` SET `views`=`views`+1");
$result = mysql_fetch_assoc($sql);
echo $result;
?>


Поле-то у вас какой тип имеет? Integer? »

Поле page у меня имеет тип text, а id и views -- integer

И выдаёт ошибку:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in Z:\home\testsite\www\test.php on line 7

Coutty
28-08-2010, 14:43
Неправильно устанавливаете подключение.
Параметры функии mysql_connect(адрес_узла, имя_пользователя, пароль);
mysql_select_db(имя_базы_данных)

Habetdin
29-08-2010, 23:22
У меня получился счетчик.. Не стоило заглядывать в тему :biggrin:

Coutty
30-08-2010, 07:32
Habetdin, а зачем поле 'views' с автоинкрементом? Да ещё и ключевое... Ключевое поле предполагает уникальные значения, а в поле "просмотры" могут быть совпадающие для разных страниц.




© OSzone.net 2001-2012