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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Статистика сайта (скрипт из книги)

Сообщения:  [1-10]    [11-20]  [21-26] 

 
 автор: Loki   (07.07.2005 в 12:56)   письмо автору
 
   для: Loki   (07.07.2005 в 12:46)
 

Кажись вспомнил: такая бага вроде была когда небыло ни одного захода за отчетный период. У себя я правил, а у вас, похоже, осталась старая версия. У меня сейчас этот фрагмент выглядит так:

<?
if (isset($pages))
{
$points=array_count_values($pages);    
//Сортируем по количесву входов в обратном порядке
 
arsort($points);  
//Выводим таблицу где будет название страницы и количество заходов через нее
foreach ($points as $id=>$hits)
 { 
  foreach (
$names as $id2=>$name)
   {  
    if (
$id==$id2
     { 
      print 
"<tr><td><a href=http://".$_SERVER["SERVER_NAME"].$names[$id]['name']." target=_blank>http://".$_SERVER["SERVER_NAME"].$names[$id]['name']." </a></td><td>".$hits."</td><tr>"
     }
   }
 }
}
?>

   
 
 автор: Loki   (07.07.2005 в 12:46)   письмо автору
 
   для: Agronom   (07.07.2005 в 12:25)
 

Попробуйте перед циклом вывести на экран содержимое массивов $points и $names:

print_r ($points);
print_r ($names);

   
 
 автор: cheops   (07.07.2005 в 12:39)   письмо автору
 
   для: Agronom   (07.07.2005 в 12:25)
 

Именно в 133 строке - у вас файл изменён? Прикрепите его пожалуйста к сообщению.

   
 
 автор: Agronom   (07.07.2005 в 12:25)   письмо автору
 
   для: Agronom   (03.07.2005 в 20:52)
 

Вот я дошел до раздела "Точки входа" на что у меня отображаются страницы, но вверху браузер выдает ошибку:

Warning: Invalid argument supplied for foreach() in i:\home\localhost\www\users\ros\admin\count\enterpoint.php on line 133


Что бы это могло быть, помогите пожалуйста разобраться.
Заранее благодарен.

   
 
 автор: Agronom   (03.07.2005 в 20:52)   письмо автору
 
   для: Agronom   (02.07.2005 в 22:25)
 

Конечно же дело в моей таблице!

Оказывается в новой версии поменялись названия полей
system > systemS
browser > browserS
search > searchES

Эх моя невнимательность ...

   
 
 автор: Agronom   (02.07.2005 в 22:25)   письмо автору
 
   для: cheops   (02.07.2005 в 21:35)
 

По крайней мере записывается теперь все хорошо.
Вот структура таблицы ip


CREATE TABLE 'ip' (
  'id_ip' int(32) NOT NULL auto_increment,
  'ip' text,
  'putdate' datetime default NULL,
  'id_page' int(10) default NULL,
  'browser' text,
  'system' text,
  'search' text,
  PRIMARY KEY  ('id_ip')
) TYPE=MyISAM

   
 
 автор: cheops   (02.07.2005 в 21:35)   письмо автору
 
   для: Agronom   (02.07.2005 в 20:53)
 

А не может быть опять проблем с базой данных? Не могли бы вы привести структуру таблицы ip в базе счётчика?

   
 
 автор: Agronom   (02.07.2005 в 20:53)   письмо автору
 
   для: Agronom   (01.07.2005 в 23:29)
 

Вот я столкнулся со следующей проблемой - Хосты и Хиты:

Вместо отображение страницы мне браузер выдает:


SELECT COUNT(*) FROM ip WHERE searches != 'own_site' AND putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '0' DAY AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '1' DAY
SELECT COUNT(*) FROM ip WHERE putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '0' DAY AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '1' DAY
SELECT COUNT(DISTINCT ip) FROM ip WHERE systems != 'none' AND systems != 'robot_yandex' AND systems != 'robot_google' AND systems != 'robot_rambler' AND systems != 'robot_aport' AND systems != 'robot_msnbot' AND putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '0' DAY AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '1' DAY
SELECT COUNT(DISTINCT ip) FROM ip WHERE putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '0' DAY AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '1' DAY

Fatal error: Call to undefined function: puterror() in i:\home\localhost\www\users\ros\admin\count\utils.php on line 70



Как будто не стоит где-то <? ?>
Вот сам код файла utils.php может там где-нибудь ошибка, хотя я его не трогал:


<?php
  
function show_ip_host($begin,$end,$id_page)
{
  
  if(
$id_page == ""$tmp_page "";
  else 
$tmp_page " AND id_page=$id_page";
  
  
$tmp1 "putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '$end' DAY";
  if(
$begin == 0$tmp2 "";
  else 
$tmp2 " AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '".$begin."' DAY";
  
$end $tmp1.$tmp2.$tmp_page;
 

  
$query_hit "SELECT COUNT(*) FROM ip
                WHERE searches != 'own_site' AND "
.$end;
 
  
$query_total_hit "SELECT COUNT(*) FROM ip WHERE ".$end;
 
  
$query_host "SELECT COUNT(DISTINCT ip) FROM ip 
                 WHERE systems != 'none' AND
                       systems != 'robot_yandex' AND
                       systems != 'robot_google' AND
                       systems != 'robot_rambler' AND
                       systems != 'robot_aport' AND
                       systems != 'robot_msnbot' AND
                        "
.$end;
 
  
$query_total_host "SELECT COUNT(DISTINCT ip) FROM ip WHERE ".$end;

  
$pht mysql_query($query_hit);
  
$tot mysql_query($query_total_hit);
  
$hst mysql_query($query_host);
  
$tht mysql_query($query_total_host);
  if(
$pht && $tot && $hst && $tht)
  {
 
    
$hosts     mysql_result($hst0);
    
$totalhostsmysql_result($tht0);
    
$hits      mysql_result($pht0);
    
$totalhist mysql_result($tot0);
    return array(
$hosts$hits$totalhist$totalhosts);
  }
  else
  {
   echo 
$query_hit."<br>";
   echo 
$query_total_hit."<br>";
   echo 
$query_host."<br>";
   echo 
$query_total_host."<br>";
   
puterror("Ошибка при обращении к таблице IP-адресов");
  }
}


сайта
function show_ip_host_hour($begin,$end,$day,$id_page)
{
  
  if(
$id_page == ""$tmp_page "";
  else 
$tmp_page " AND id_page=$id_page";
 
  if(
$begin == 0$tmp2 "";
  else 
$tmp2 " AND putdate >= date_format(date_sub(now(),interval '$day' day),'%Y-%m-%d 00:00:00') + interval '$end' hour";
  
$tmp1 "putdate < date_format(date_sub(now(),interval '$day' day),'%Y-%m-%d 00:00:00') + interval '$begin' hour";
  
$end $tmp1.$tmp2.$tmp_page;
  
  
$query_hits "SELECT COUNT(*) FROM ip WHERE searches!='own_site' AND ".$end;
  
  
$query_total "SELECT COUNT(*) FROM ip 
                  WHERE "
.$end;

  
$query_host "SELECT COUNT(DISTINCT ip) FROM ip 
                 WHERE systems != 'none' AND
                       systems != 'robot_yandex' AND
                       systems != 'robot_google' AND
                       systems != 'robot_rambler' AND
                       systems != 'robot_aport' AND
                       systems != 'robot_msnbot' AND
                        "
.$end;

  
$total_host "SELECT COUNT(DISTINCT ip) FROM ip 
                 WHERE "
.$end;
  
  
$pht mysql_query($query_hits);
  
$tot mysql_query($query_total);
  
$hst mysql_query($query_host);
  
$tht mysql_query($total_host);
  if(
$pht && $tot && $hst && $tht)
  {
   
    
$hosts     mysql_result($hst0);
    
$totalhostsmysql_result($tht0);
    
$hits      mysql_result($pht0);
    
$totalhist mysql_result($tot0);
    return array(
$hits$hosts$totalhist$totalhosts);
  } else 
puterror("Ошибка при обращении к таблице IP-адресов");
}
function 
utf8_win($s)
{
    
$s=str_replace("\xD0\xB0","а",$s);  $s=str_replace("\xD0\x90","А",$s);
    
$s=str_replace("\xD0\xB1","б",$s);  $s=str_replace("\xD0\x91","Б",$s);
    
$s=str_replace("\xD0\xB2","в",$s);  $s=str_replace("\xD0\x92","В",$s);
    
$s=str_replace("\xD0\xB3","г",$s);  $s=str_replace("\xD0\x93","Г",$s);
    
$s=str_replace("\xD0\xB4","д",$s);  $s=str_replace("\xD0\x94","Д",$s);
    
$s=str_replace("\xD0\xB5","е",$s);  $s=str_replace("\xD0\x95","Е",$s);
    
$s=str_replace("\xD1\x91","ё",$s);  $s=str_replace("\xD0\x81","Ё",$s);
    
$s=str_replace("\xD0\xB6","ж",$s);  $s=str_replace("\xD0\x96","Ж",$s);
    
$s=str_replace("\xD0\xB7","з",$s);  $s=str_replace("\xD0\x97","З",$s);
    
$s=str_replace("\xD0\xB8","и",$s);  $s=str_replace("\xD0\x98","И",$s);
    
$s=str_replace("\xD0\xB9","й",$s);  $s=str_replace("\xD0\x99","Й",$s);
    
$s=str_replace("\xD0\xBA","к",$s);  $s=str_replace("\xD0\x9A","К",$s);
    
$s=str_replace("\xD0\xBB","л",$s);  $s=str_replace("\xD0\x9B","Л",$s);
    
$s=str_replace("\xD0\xBC","м",$s);  $s=str_replace("\xD0\x9C","М",$s);
    
$s=str_replace("\xD0\xBD","н",$s);  $s=str_replace("\xD0\x9D","Н",$s);
    
$s=str_replace("\xD0\xBE","о",$s);  $s=str_replace("\xD0\x9E","О",$s);
    
$s=str_replace("\xD0\xBF","п",$s);  $s=str_replace("\xD0\x9F","П",$s);
    
$s=str_replace("\xD1\x80","р",$s);  $s=str_replace("\xD0\xA0","Р",$s);
    
$s=str_replace("\xD1\x81","с",$s);  $s=str_replace("\xD0\xA1","С",$s);
    
$s=str_replace("\xD1\x82","т",$s);  $s=str_replace("\xD0\xA2","Т",$s);
    
$s=str_replace("\xD1\x83","у",$s);  $s=str_replace("\xD0\xA3","У",$s);
    
$s=str_replace("\xD1\x84","ф",$s);  $s=str_replace("\xD0\xA4","Ф",$s);
    
$s=str_replace("\xD1\x85","х",$s);  $s=str_replace("\xD0\xA5","Х",$s);
    
$s=str_replace("\xD1\x86","ц",$s);  $s=str_replace("\xD0\xA6","Ц",$s);
    
$s=str_replace("\xD1\x87","ч",$s);  $s=str_replace("\xD0\xA7","Ч",$s);
    
$s=str_replace("\xD1\x88","ш",$s);  $s=str_replace("\xD0\xA8","Ш",$s);
    
$s=str_replace("\xD1\x89","щ",$s);  $s=str_replace("\xD0\xA9","Щ",$s);
    
$s=str_replace("\xD1\x8A","ъ",$s);  $s=str_replace("\xD0\xAA","Ъ",$s);
    
$s=str_replace("\xD1\x8B","ы",$s);  $s=str_replace("\xD0\xAB","Ы",$s);
    
$s=str_replace("\xD1\x8C","ь",$s);  $s=str_replace("\xD0\xAC","Ь",$s);
    
$s=str_replace("\xD1\x8D","э",$s);  $s=str_replace("\xD0\xAD","Э",$s);
    
$s=str_replace("\xD1\x8E","ю",$s);  $s=str_replace("\xD0\xAE","Ю",$s);
    
$s=str_replace("\xD1\x8F","я",$s);  $s=str_replace("\xD0\xAF","Я",$s);
    return 
$s;
}

function 
search($begin,$end,$id_page)
{
 
  if(
$id_page == ""$tmp "";
  else 
$tmp " AND id_page = $id_page";

  if(
$begin == 0$tmp2 "";
  else 
$tmp2 " AND putdate >= DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '$begin' DAY";
  
$tmp1 "AND putdate < DATE_FORMAT(NOW(),'%Y-%m-%d 23:59:59') - INTERVAL '$end' DAY";
  
  
$begin "SELECT COUNT(*) FROM refferer WHERE searches =";
  
$end $tmp1.$tmp2.$tmp;
  
$query['ynd'] = $begin."'yandex' ".$end;
  
$query['ram'] = $begin."'rambler' ".$end;
  
$query['gog'] = $begin."'google' ".$end;
  
$query['apt'] = $begin."'aport' ".$end;
  
$query['mal'] = $begin."'mail' ".$end;
  
$query['msn'] = $begin."'msn' ".$end;
  
  foreach(
$query as $search => $value)
  {
    
$hit["$search"] = mysql_query($value);
    if(!
$hit["$search"]) puterror("Ошибка при обращении к таблице IP-адресов");
    
$hits["$search"] = mysql_result($hit["$search"], 0);
  }
  
$total array_sum($hits);
  
  if(
$total == 0$total 1;
  return array(
$hits['ram'], $hits['ynd'], $hits['apt'], $hits['gog'], $hits['mal'], $hits['msn'], $total);
}

function 
search_hour($begin,$end,$day,$id_page)
{
  
  if(
$id_page == ""$tmp "";
  else 
$tmp " AND id_page = $id_page";
 
  if(
$begin == 0$tmp2 "";
  else 
$tmp2 " AND putdate>=date_add(date_format(date_sub(now(),interval '$day' day),'%Y-%m-%d 00:00:00'),interval '$end' hour)";
  
$tmp1 " AND putdate<date_add(date_format(date_sub(now(),interval '$day' day),'%Y-%m-%d 00:00:00'),interval '$begin' hour)";
 
  
$begin "SELECT COUNT(*) FROM refferer WHERE searches =";
  
$end $tmp1.$tmp2.$tmp;
  
$query['ynd'] = $begin."'yandex' ".$end;
  
$query['ram'] = $begin."'rambler' ".$end;
  
$query['gog'] = $begin."'google' ".$end;
  
$query['apt'] = $begin."'aport' ".$end;
  
$query['mal'] = $begin."'mail' ".$end;
  
$query['msn'] = $begin."'msn' ".$end;
  
// Выполняем SQL-запросы
  
foreach($query as $search => $value)
  {
    
$hit["$search"] = mysql_query($value);
    if(!
$hit["$search"]) puterror("Ошибка при обращении к таблице IP-адресов");
    
$hits["$search"] = mysql_result($hit["$search"], 0);
  }
  
$total array_sum($hits);
  
// Во избежание деления на 0 проверяем значение общего $total
  
if($total == 0$total 1;
  return array(
$hits['ram'], $hits['ynd'], $hits['apt'], $hits['gog'], $hits['mal'], $hits['msn'], $total);
}
?>

   
 
 автор: Agronom   (01.07.2005 в 23:29)   письмо автору
 
   для: Agronom   (01.07.2005 в 21:36)
 

Ура вроде разобрался!
У меня в таблицах оказывается тип полей был неправильно определен, надо int а у меня стоял tinyint !

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

   
 
 автор: Agronom   (01.07.2005 в 21:36)   письмо автору
 
   для: cheops   (01.07.2005 в 21:26)
 

При первом обращении к сайту (базы пустые) отображает только половину сайта (то что до скрипта), видно срабатывает exit
Далее при последующих переходах по ссылкам ничего не выдает... :???:
При этом записывает в таблички по 1 строке и все

   

Сообщения:  [1-10]    [11-20]  [21-26] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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