|
|
|
| Уже делал эту тему но она в бордак превратилась!
Значит я обо всё подробно и по плану:
База stat - там у меян вся статистика
Таблицы id ( понятно что такое ) s_ip( ай пишники ) s_referer ( адреса рефералов ) s_data ( дата )
Значит вот скан таблицы
CREATE TABLE `stat` (
`id` int(11) NOT NULL auto_increment,
`s_ip` text NOT NULL,
`s_referer` text NOT NULL,
`s_data` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=109 ;
|
Записываю всё так -
if(strstr($refer,"http://wwww/"))
{
$ath = mysql_query("INSERT INTO stat VALUES ('', '$ip', 'Нету', NOW());");
$sql_res=mysql_query($ath,$dbcnx);
}
else
{
$ath = mysql_query("INSERT INTO stat VALUES ('', '$ip', '$refer', NOW());");
$sql_res=mysql_query($ath,$dbcnx);
}
|
Значит!
Теперь мне нужно вывести ЧИСЛОМ сколько было записей в таблицу за СЕГОДНЯ!
То есть я уже вывожу в админ части сколько посетителей всего!
Теперь мне нужно сколько зашло за сегодня, то есть сколько записей в таблице п сегоднешней дате!
Скан таблицы уже записанной, точней одной нормальной записи
INSERT INTO `stat` VALUES (108, '127.0.0.1', 'http://cms-ka.ru/file.php?id=1', '2006-10-05 11:43:30');
|
Пожалуйста, подскажите как это осушествить?
То есть конечный вариант должен быть атким
За сегодня было ( 18 ) посетителей - 18 это образное число, я просто показываю что дролжно быть числовой формат!
А то малоли что :) | |
|
|
|
|
|
|
|
для: Panker
(05.10.2006 в 12:10)
| |
<?php
$query = "SELECT COUNT(*) FROM stat WHERE s_data LIKE ' % ".date('Y-m-d')." %' ";
?>
|
| |
|
|
|
|
|
|
|
для: name
(05.10.2006 в 13:19)
| |
$query = mysql_query ("SELECT COUNT(*) FROM stat WHERE s_data LIKE ' % ".date('Y-m-d')." %' ");
echo mysql_result($query, 0);
|
делаю так выводит ноль :(
почему? | |
|
|
|
|
|
|
|
для: Panker
(05.10.2006 в 14:37)
| |
$query = "SELECT COUNT(*) FROM stat WHERE s_data LIKE ' % ".date('Y-m-d')." %' ";
$result = mysql_query($query);
echo mysql_result($result, 0);
|
| |
|
|
|
|
|
|
|
для: Ученик
(05.10.2006 в 14:41)
| | и так и так выводит НОЛЬ :( | |
|
|
|
|
|
|
|
для: Ученик
(05.10.2006 в 14:41)
| | Все верно, я не посмотрел запрос, только подсказал как правильно выводить информацию.
Вам должен помочь вот такой запрос.
$query = "SELECT COUNT(*) FROM stat WHERE `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)";
|
| |
|
|
|
|
|
|
|
для: Ученик
(05.10.2006 в 14:57)
| |
$res = "SELECT COUNT(*) FROM stat WHERE `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)";
echo "Посетителей за сегодня - "; echo mysql_result($res, 0); echo "<br>";
|
вот так вот да?
если так то ошибка
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in y:\home\wwww\www\admin\start.php on line 23
|
| |
|
|
|
|
|
|
|
для: Panker
(05.10.2006 в 15:21)
| | Вы результат из строки хотите получить? Нужно сначала отправить запрос Мускулу ;-)
Вот так должно работать.
$query = "SELECT COUNT(*) FROM stat WHERE `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)";
$result = mysql_query($query);
echo mysql_result($result, 0);
|
| |
|
|
|
|
|
|
|
для: Ученик
(05.10.2006 в 15:30)
| | просто дял моег оразвития :) почему так раньеш делать ненадо было ?
вот весь мой код статистики :)
<?
echo "<h1 class=theme>Cтатистика посещений сайта</h1>";
$res = mysql_query ("SELECT COUNT(*) FROM stat");
echo "Всего посетителей - "; echo mysql_result($res, 0);echo "<br>";
$res = mysql_query ("SELECT COUNT(*) FROM stat WHERE s_referer");
echo "Из них от рефералов - "; echo mysql_result($res, 0); echo "<br>";
$query = "SELECT COUNT(*) FROM stat WHERE `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)";
$result = mysql_query($query);
echo "Посетителей за сегодня - "; echo mysql_result($result, 0);echo "<br>";
echo "<h1 class=theme>Техническая статистика сайта</h1>";
$res = mysql_query ("SELECT COUNT(*) FROM pages");
echo "Всего созданно страниц - <a href=pages/index.php>"; echo mysql_result($res, 0); echo "</a><br><br><br>";
echo "<br>";
?>
|
| |
|
|
|
|
|
|
|
для: Ученик
(05.10.2006 в 15:30)
| | Можно сделать как раньше :) У Вас просто сам запрос не записывался в переменную, только то что он возвращает. Иногда, чтобы облегчить читабельность кода и последующую отладку можно поступать так показал я :-)
$res = mysql_query ("SELECT COUNT(*) FROM stat WHERE s_referer");
echo "Из них от рефералов - "; echo mysql_result($res, 0); echo "<br>";
$result = mysql_query("SELECT COUNT(*) FROM stat WHERE `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)");
echo "Посетителей за сегодня - "; echo mysql_result($result, 0);echo "<br>";
|
| |
|
|
|
|
|
|
|
для: Panker
(05.10.2006 в 12:10)
| | Можно поступить следующим образом
SELECT COUNT(*) FROM `stat`
WHERE DAY(s_date) = DAY(NOW()) AND
MONTH(s_date) = MONTH(NOW()) AND
YEAR(s_date) = YEAR(NOW())
|
или вообще так
SELECT COUNT(*) FROM `stat`
WHERE DATE(s_date) = DATE(NOW())
|
| |
|
|
|
|
|
|
|
для: cheops
(06.10.2006 в 23:07)
| | Допустим сегодня 18 или 30 или 3 число это не важно!
Как мне сделать независимую от сегоднешнего числа статистику или запросы что бы было с 1го числа по 30 даже могу забить на 31 :)
типа у меян столбики и как ПРАЫВЕЛЬНО вывести инфу, а то Хеопс говорит что типа вывод как я сейчас вывлжу не правельный типа NOW() | |
|
|
|
|
|
|
|
для: Panker
(10.10.2006 в 10:34)
| | Не понятно. Вам требуется вывести информацию за текущий месяц или произвольный, если за текущий, то можно поступить следующим образом
SELECT COUNT(*) FROM `stat`
WHERE MONTH(s_date) = MONTH(NOW()) AND
YEAR(s_date) = YEAR(NOW())
|
| |
|
|
|
|
|
|
|
для: cheops
(10.10.2006 в 13:55)
| | мне нужно вывести за прошлый месяц, то есть не важно какое сегодня число! нужно вывести прсото всю статистику с 1ое число по 30ое прошлого месяца :( как бы мне так вот сделать :( | |
|
|
|
|
|
|
|
для: Panker
(10.10.2006 в 20:35)
| | Для этого можно поступить следующим образом
SELECT COUNT(*) FROM `stat`
WHERE MONTH(s_date) = MONTH(NOW() - INTERVAL 1 MONTH) AND
YEAR(s_date) = YEAR(NOW() - INTERVAL 1 MONTH)
|
| |
|
|
|
|
|
|
|
для: cheops
(10.10.2006 в 23:06)
| | я ошибаюст или этот код отталкивается от даты сегоднешнего дня? | |
|
|
|
|
|
|
|
для: Panker
(11.10.2006 в 09:55)
| | Да этот код отталкивается от даты текущего дня. Вы скажите какой отчёт вы хотите вывести, может можно использовать более удобную форму? Какие месяцы вы хотите вывести и за какой период? | |
|
|
|
|
|
|
|
для: cheops
(11.10.2006 в 12:42)
| | Сегодня октябрь, значит надо показывать сентябрь!
я не знаю какой зпрос к базе сделать что бы выводило за сентябрь!
я даже обьяснитьь не могу :)
мне надо сделать статистику за месяц, у меян уеже есть столбики которые наглядно будут выводить!
То есть я думаю мне нужно делать 30 запросов к базе, то есть за 30 дней назад 29 дней 28 дней и так адлее, но надо как то делать так что бы они были от 1 по 30 число не зависемо от сегоднешнего дня, ведь сегодня может быть и 1 число и 31 :( | |
|
|
|
|
|
|
|
для: Panker
(11.10.2006 в 14:05)
| | Хм... а не проще всё это средствами PHP сделать
<?php
// Текущий год
$year = date("Y");
// Определяем текущий месяц
$month = date("n");
// Предыдущий месяц
$prev_month = $month - 1;
// Количество дней в прошлом месяце
$count_day = date("t", mktime(0, 0, 0, $prev_month, 1, $year));
// Выводим информацию за прошлый месяц по дням
for($i = 1; $i <=$count_day; $i++)
{
// Вычисляем текущий день
$time = mktime(0, 0, 0, $prev_month, $i, $year);
// Формируем SQL-запрос
$query = "SELECT COUNT(*) FROM stat
WHERE s_date > '".date("Y-m-d H:i:s",$time)."' AND
s_date < '".date("Y-m-d H:i:s",$time)."' + INTERVAL 1 DAY";
echo $query."<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(11.10.2006 в 15:40)
| | у меня диаграма типа класс и мона под себя настроить и я не знаю как так вт настроить :(
вот вид диаграмы
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
require_once('as-diagrams.php'); // включить в тело своего скрипта !
require_once('../../config.php'); // включить в тело своего скрипта !
$data_title = 'Общая статистика в графике'; // title for the diagram
// sample data array
$data = array();
$data[] = array(mysql_result($day_7, 0),mysql_result($host_7,0),mysql_result($ref_7,0)); // Это типа масив первого дня
$data[] = array(mysql_result($day_6, 0),mysql_result($host_6,0),mysql_result($ref_6,0)); //второго и так далее
$data[] = array(mysql_result($day_5, 0),mysql_result($host_5,0),mysql_result($ref_5,0)); / и вот как мне тут тридцать сделать ?:)
$data[] = array(mysql_result($day_4, 0),mysql_result($host_4,0),mysql_result($ref_4,0));
$data[] = array(mysql_result($day_3, 0),mysql_result($host_3,0),mysql_result($ref_3,0));
$data[] = array(mysql_result($day_2, 0),mysql_result($host_2,0),mysql_result($ref_2,0));
$data[] = array(mysql_result($day_1, 0),mysql_result($host_1,0),mysql_result($ref_1,0));
$legend_x = array('Шесть дней назад', 'Пять дней назад', 'Четыре дня назад', 'Три дня назад', 'Позавчера', 'Вчера', 'Сегодня');
$legend_y = array('<a href=?id=all>Всего</a>','<a href=?id=day>Уникальных</a>','<a href=?id=ref>Рефералов</a>');
$graph = new CAsBarDiagram;
$graph->bwidth = 30; // set one bar width, pixels
$graph->bt_total = 'Summary'; // 'totals' column title, if other than 'Totals'
// $graph->showtotals = 0; // uncomment it if You don't need 'totals' column
$graph->precision = 1; // decimal precision
// call drawing function
$graph->DiagramBar($legend_x, $legend_y, $data);
?>
|
там на верхзу прокоментировано с боку, типа тут как 30 раз так сделать что бы выводило 30 дней прошлого месяца :) | |
|
|
|