Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Показать всех посетителей за 1 день!
 
 автор: Panker   (05.10.2006 в 12:10)   письмо автору
 
 

Уже делал эту тему но она в бордак превратилась!

Значит я обо всё подробно и по плану:

База 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 это образное число, я просто показываю что дролжно быть числовой формат!
А то малоли что :)

   
 
 автор: name   (05.10.2006 в 13:19)   письмо автору
 
   для: Panker   (05.10.2006 в 12:10)
 


<?php
$query 
"SELECT COUNT(*) FROM stat WHERE s_data LIKE ' % ".date('Y-m-d')." %' ";
?>

   
 
 автор: Panker   (05.10.2006 в 14:37)   письмо автору
 
   для: 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);

делаю так выводит ноль :(
почему?

   
 
 автор: Ученик   (05.10.2006 в 14:41)   письмо автору
 
   для: 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);

   
 
 автор: Panker   (05.10.2006 в 14:48)   письмо автору
 
   для: Ученик   (05.10.2006 в 14:41)
 

и так и так выводит НОЛЬ :(

   
 
 автор: Ученик   (05.10.2006 в 14:57)   письмо автору
 
   для: Ученик   (05.10.2006 в 14:41)
 

Все верно, я не посмотрел запрос, только подсказал как правильно выводить информацию.
Вам должен помочь вот такой запрос.


$query = "SELECT COUNT(*) FROM stat WHERE  `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)";

   
 
 автор: Panker   (05.10.2006 в 15:21)   письмо автору
 
   для: Ученик   (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

   
 
 автор: Ученик   (05.10.2006 в 15:30)   письмо автору
 
   для: 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);

   
 
 автор: Panker   (05.10.2006 в 15:37)   письмо автору
 
   для: Ученик   (05.10.2006 в 15:30)
 

просто дял моег оразвития :) почему так раньеш делать ненадо было ?

вот весь мой код статистики :)


<?
    
    
    
echo "<h1 class=theme>Cтатистика посещений сайта</h1>";
    
$res mysql_query ("SELECT COUNT(*) FROM stat"); 
    echo 
"Всего посетителей - "; echo mysql_result($res0);echo "<br>";

    
$res mysql_query ("SELECT COUNT(*) FROM stat WHERE s_referer"); 
    echo 
"Из них от рефералов  - "; echo mysql_result($res0); echo "<br>";

    
$query "SELECT COUNT(*) FROM stat WHERE  `s_data` > DATE_SUB(NOW(), INTERVAL 1 DAY)";   
    
$result mysql_query($query);  
    echo 
"Посетителей за сегодня - "; echo mysql_result($result0);echo "<br>";
    
    echo 
"<h1 class=theme>Техническая статистика сайта</h1>";
    
$res mysql_query ("SELECT COUNT(*) FROM pages"); 
    echo 
"Всего созданно страниц - <a href=pages/index.php>"; echo mysql_result($res0); echo "</a><br><br><br>";
    echo 
"<br>";


    
?>

   
 
 автор: Ученик   (05.10.2006 в 15:57)   письмо автору
 
   для: Ученик   (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>";

   
 
 автор: cheops   (06.10.2006 в 23:07)   письмо автору
 
   для: 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())

   
 
 автор: Panker   (10.10.2006 в 10:34)   письмо автору
 
   для: cheops   (06.10.2006 в 23:07)
 

Допустим сегодня 18 или 30 или 3 число это не важно!

Как мне сделать независимую от сегоднешнего числа статистику или запросы что бы было с 1го числа по 30 даже могу забить на 31 :)

типа у меян столбики и как ПРАЫВЕЛЬНО вывести инфу, а то Хеопс говорит что типа вывод как я сейчас вывлжу не правельный типа NOW()

   
 
 автор: cheops   (10.10.2006 в 13:55)   письмо автору
 
   для: Panker   (10.10.2006 в 10:34)
 

Не понятно. Вам требуется вывести информацию за текущий месяц или произвольный, если за текущий, то можно поступить следующим образом
SELECT COUNT(*) FROM `stat`  
WHERE MONTH(s_date) = MONTH(NOW()) AND 
      YEAR(s_date) = YEAR(NOW())

   
 
 автор: Panker   (10.10.2006 в 20:35)   письмо автору
 
   для: cheops   (10.10.2006 в 13:55)
 

мне нужно вывести за прошлый месяц, то есть не важно какое сегодня число! нужно вывести прсото всю статистику с 1ое число по 30ое прошлого месяца :( как бы мне так вот сделать :(

   
 
 автор: cheops   (10.10.2006 в 23:06)   письмо автору
 
   для: 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)

   
 
 автор: Panker   (11.10.2006 в 09:55)   письмо автору
 
   для: cheops   (10.10.2006 в 23:06)
 

я ошибаюст или этот код отталкивается от даты сегоднешнего дня?

   
 
 автор: cheops   (11.10.2006 в 12:42)   письмо автору
 
   для: Panker   (11.10.2006 в 09:55)
 

Да этот код отталкивается от даты текущего дня. Вы скажите какой отчёт вы хотите вывести, может можно использовать более удобную форму? Какие месяцы вы хотите вывести и за какой период?

   
 
 автор: Panker   (11.10.2006 в 14:05)   письмо автору
 
   для: cheops   (11.10.2006 в 12:42)
 

Сегодня октябрь, значит надо показывать сентябрь!

я не знаю какой зпрос к базе сделать что бы выводило за сентябрь!
я даже обьяснитьь не могу :)
мне надо сделать статистику за месяц, у меян уеже есть столбики которые наглядно будут выводить!

То есть я думаю мне нужно делать 30 запросов к базе, то есть за 30 дней назад 29 дней 28 дней и так адлее, но надо как то делать так что бы они были от 1 по 30 число не зависемо от сегоднешнего дня, ведь сегодня может быть и 1 число и 31 :(

   
 
 автор: cheops   (11.10.2006 в 15:40)   письмо автору
 
   для: Panker   (11.10.2006 в 14:05)
 

Хм... а не проще всё это средствами PHP сделать
<?php
  
// Текущий год
  
$year date("Y");
  
// Определяем текущий месяц
  
$month date("n");
  
// Предыдущий месяц
  
$prev_month $month 1;
  
// Количество дней в прошлом месяце
  
$count_day date("t"mktime(000$prev_month1$year));
  
// Выводим информацию за прошлый месяц по дням
  
for($i 1$i <=$count_day$i++)
  {
    
// Вычисляем текущий день
    
$time mktime(000$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>";
  }
?>

   
 
 автор: Panker   (11.10.2006 в 15:53)   письмо автору
 
   для: 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_70),mysql_result($host_7,0),mysql_result($ref_7,0)); // Это типа масив первого дня
$data[] = array(mysql_result($day_60),mysql_result($host_6,0),mysql_result($ref_6,0)); //второго и так далее
$data[] = array(mysql_result($day_50),mysql_result($host_5,0),mysql_result($ref_5,0)); / и вот как мне тут тридцать сделать  ?:)
$data[] = array(mysql_result($day_40),mysql_result($host_4,0),mysql_result($ref_4,0));
$data[] = array(mysql_result($day_30),mysql_result($host_3,0),mysql_result($ref_3,0));
$data[] = array(mysql_result($day_20),mysql_result($host_2,0),mysql_result($ref_2,0));
$data[] = array(mysql_result($day_10),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 дней прошлого месяца :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования