Forum Webscript.Ru

Программирование => PHP => Тема начата: reLax[0x00] от 19 Марта 2006, 21:53:40

Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 19 Марта 2006, 21:53:40
У меня тоже вопрос появился один. Код ужасно не оптимизирован и содержит кучу логических ошибок сразу говорю-я просто пишу сначало то что думаю а потом оптимизирую-подход неправильный, согласен. Вообще я новичек в PHP - C++ для меня роднее как то:) Особо им не занимаюсь - мое дело вообще сервера содержать в работоспособности но все таки :)
 Вопрос один-я гдето в статистике поставил заплатку в файле gisto.php а где не помню :( теперь если у меня процентное соотношение < 1% динамически генерируемый PNG график расползается :( вспомнить нереально практически - может вы увидете...

vvv.php

function optimize ($content) {
     $content = preg_replace("%(\\s+)?(\\<.+\\>)(\\s+)?%", "$2",  $content);    
     $content = preg_replace("/[\\r\\n]+[\\s\\t]*[\\r\\n]+/", "", $content);
     $content = preg_replace("/[\\s\\t]*[\\r\\n]+/", "", $content);
     $content = preg_replace("%[\\x20]{2,}%"," ", $content);
     $comment = "\\n\\n";
     $content = $comment.$content.= "\\n\\n\\n\\n";    
     return $content;
}
//это понятно-запуск функции оптимизации
ob_start(\'optimize\');
//это больше HTML - переменную $html вставляем в оболочку HTML чтобы не повторять HTML код
function table ($html) {
$return = <<<__EAX__


















""


""


$html
   
   


""


""


__EAX__;
return $return;
}
?>
/velko.css">
VELKO.| СТАТИСТИКА ДОМЕНА |

//назначаем константы соединения и кол-ва линий per-page на странице
  define (\'SERVER\',\'localhost\');
  define (\'USER\',\'xxx\');
  define (\'PWD\',\'xxx\');
  define (\'DB\',\'xxx\');
  define (\'DUMP\', \'dump\');
  define (\'LINES\', 30);
//массив из поисковиков и их кодировок
  $array_encoding = array (
                                  "mail"=>"Windows-1251",
                                  "yandex"=>"Windows-1251",
                                  "msn"=>"UTF-8",
                                  "google"=>"UTF-8",
                                  "altavista"=>"UTF-8",
                                  "yahoo"=>"UTF-8",
                                  "yandexpages"=>"KOI8-R",
                                  "aport"=>"Windows-1251",
                                  "rambler"=>"Windows-1251"                                                          
                           );

//то что из отчОта нужно убрать
  $forbidden_sites = array (
                                  "mashka-devochka2005.narod.ru",
                                  "masha-2005-ru.narod.ru",
                               "svetlanochka-2005.narod.ru",
                               "olechka-devochka.narod.ru",
                                  "quasimodo.net.ua",
                                  "sh-tanya2005.narod.ru",
                                  "velko.ru"
                           );
//убираем локалхост
  $forbidden_queries = array (
                                  "velko.ru"

                             );
//делаем строки типа char для RegEx вырезания из массивов
  foreach ($forbidden_queries as $key=>$value) {
  $forgetit.= preg_quote ($value)."|"; }
  $forgetit = preg_replace (\'%\\|$%\',\'\',$forgetit);
  foreach ($forbidden_sites as $key=>$value) {
  $forgetme.= preg_quote ($value)."|"; }
  $forgetme = preg_replace (\'%\\|$%\',\'\',$forgetme);
//конеектимся к SQL
  mysql_pconnect (SERVER,USER,PWD) or die ("MySQL server error: can\'t login.");
  mysql_select_db (DB);
//добавляем в БД юзера если он в первые зашел на страницу статистики не посетив сайт ..интервал 3600 сек - 1 час
$unix_date = mktime();
$check = "SELECT ip FROM ".DUMP." WHERE date > ".($unix_date - 3600)." AND ip = \'".$_SERVER[\'REMOTE_ADDR\']."\'";
$domen = preg_replace ("%(ftp|https?://)([w]{3}\\.)?([-\\w.]+)(/)?(.*)?%i",\'$3\', $_SERVER[\'HTTP_REFERER\']);
$ins_user = "INSERT INTO ".DUMP." (ip, date, browser, referer, page, domen) VALUES (\'".$_SERVER[\'REMOTE_ADDR\']."\', \'".$unix_date."\', \'".stripslashes ($_SERVER[\'HTTP_USER_AGENT\'])."\', \'".stripslashes ($_SERVER[\'HTTP_REFERER\'])."\', \'".stripslashes ($_SERVER[\'REQUEST_URI\'])."\', \'".$domen."\')";
$check_info = mysql_query ($check);
(mysql_num_rows($check_info) == NULL)?mysql_query($ins_user):0;
//генерим RegEx запросы для MySQL
  foreach ($array_encoding as $key=>$value) {
  $junky.= "referer LIKE \'%".$key."%\' OR ";
  $notjunky.= "referer NOT REGEXP \'".$key."\' AND ";
  $robots.= "browser LIKE \'%".$key."%\' OR ";

//режем последние ненужные штуки типа OR или AND - для MySQL
  $junky = preg_replace (\'%(\\x20OR\\x20)$%\',\'\',$junky);
  $notjunky = preg_replace (\'%(\\x20AND\\x20)$%\',\'\',$notjunky);
  $robots = preg_replace (\'%(\\x20OR\\x20)$%\',\'\',$robots);
//назначаем запросы к MySQL
  $query = "SELECT ip, referer, page, FROM_UNIXTIME(date, \'%d-%m-%y %H:%i:%s\') as date FROM `".DUMP."` WHERE ".$junky." ORDER BY `id` DESC";
  $query_1 = "SELECT DISTINCT count(*) as cnt, ip, referer, page, FROM_UNIXTIME(date, \'%d-%m-%y %H:%i:%s\') as date FROM `".DUMP."` WHERE ".$notjunky." GROUP BY referer ORDER BY date DESC";
  $query_3 = "SELECT * FROM ".DUMP." WHERE ".$robots." AND FROM_UNIXTIME(date, \'%d-%m-%y %H:%i:%s\') BETWEEN \'".date(\'d-m-y\')." 00:00:00\' AND \'".date(\'d-m-y\')." 23:59:59\' ORDER BY `id` DESC";
  $query_4 = "SELECT COUNT(DISTINCT referer) FROM ".DUMP." WHERE referer LIKE \'%".$key."%\' GROUP BY referer";
//начинаем юзать мускуль - далее код разбивает количество записей в SQL DESC на страницы
$sql = mysql_query ($query);
   $sql_num = mysql_num_rows($sql);
   $_GET[\'uid\'] = eregi_replace (\'[^0-9]\',\'\',$_GET[\'uid\']);
   if (!isset($_GET[\'uid\'])){
   $_GET[\'uid\'] = 1;
   }else{
 $count_pages = ceil($sql_num / LINES);
 $regex = strlen ($sql_num);
 if (eregi(\'[^0-9]{$regex}\',$_GET[\'uid\'])||$_GET[\'uid\']>$count_pages||$_GET[\'uid\']==0) $_GET[\'uid\'] = 1;
 $page_for_query = $_GET[\'uid\']-1;
 $lpos = $page_for_query * LINES;
 $query.= " LIMIT ".$lpos.", ".LINES."";
 $result_c = mysql_query($query);
//выводим html STDOUT
$html = "
";
$html.= "
";
foreach ($array_encoding as $key=>$value) {
$html.= "";}
$html.= "
Всего зарегистрировано запросов с поисковых систем: ".$sql_num."

";
//еще пока разбиваем - все в процессе
if ($count_pages>1) {
for ($i=1; $i<=$count_pages; $i++) {
  if($_GET[\'uid\']==$i&&$i!=1) {
     $html.= " [".$i."] ";}
  elseif ($_GET[\'uid\']==$i&&$i==1) {$html.= " [1] ";}
  elseif($i==1&&$_GET[\'uid\']!=$i) {
     $html.= " ".$i." ";}
  elseif($i!=1&&$_GET[\'uid\']!=$i) {
     $html.= " ".$i." ";
  }}}
}
//все, конец разбивки на страницы
 $html.= "
";
echo table ($html);
//теперь работаем с данными в зависимости от того на какой странице мы находимся..парсим $_SERVER[\'HTTP_REFERER\'] из БД - получится всего 30 исходя из константы LINES..пытаемся найти поисковые системы в этой переменной окружения  
while ($row = mysql_fetch_object ($result_c)) {  
  $decoded = urldecode ($row->referer);
  if (!preg_match (\'%(\'.$forgetit.\')%i\', $decoded)):          
  if (preg_match (\'%mail%\', $decoded)) { $start = "q="; $name = "mail"; }
  if (preg_match (\'%yandex%\', $decoded)&&!preg_match (\'%yandpage%\', $decoded)) { $start = "text="; $name = "yandex"; }
  if (preg_match (\'%msn%\', $decoded)) { $start = "q="; $name = "msn"; }
  if (preg_match (\'%google%\', $decoded)) { $start = "q="; $name = "google"; }
  if (preg_match (\'%altavista%\', $decoded)) { $start = "q="; $name = "altavista"; }
  if (preg_match (\'%yahoo%\', $decoded)) { $start = "p="; $name = "yahoo"; }
  if (preg_match (\'%yandpage%\', $decoded)) { $start = "text="; $name = "yandexpages"; }
  if (preg_match (\'%rambler%\', $decoded)) { $start = "words="; $name = "rambler"; }
  if (preg_match (\'%aport%\', $decoded)) { $start = "r="; $name = "aport"; }
      //убираем с конца & даже если его и нету - получаем переменную массива
      preg_match ("%".$start."([^&]*)%", urldecode($decoded)."&", $result);
 //дата из SQL как видите из щапроса имеет вид 11-11-11 01:01:01 поэтому строку разбиваем на массив и забираем оттуда вторую половину                            
      if (!empty ($result[1])) {
$today = explode (\' \', $row->date);
//проверяем если встречается строка из массива $array_encoding с поисковиками в HTTP_REFERER - то выводим в STDOUT
foreach ($array_encoding as $key=>$value) {
echo ($name == $key)?"":NULL;
                 }                    
        }     endif;      
}
echo "";
//нетрудная в принципе процедура как на первый взгляд кажется - выдираем доменное имя их HTTP_REFERER и заносим в 2(!) массива-так надо, долго объяснять зачем это надо..потом делаем в массиве все значения уникальными
$result_o = mysql_query ($query_1);
$sql_other = mysql_num_rows ($result_o);

while ($other = mysql_fetch_object($result_o)) {
if (!empty ($other->referer)) {
$oth = preg_replace ("%(ftp|https?://)([w]{3}\\.)?([-\\w.]+)(/)?(.*)?%i",\'$3\', $other->referer);
if (!preg_match (\'%(\'.$forgetme.\')%\', $oth)) {
$count_hosts[] = $other->cnt;
$array_other[] = $other->cnt."|".$oth."|".$other->referer; } }}
foreach ($array_other as $key=>$value) {
$value = preg_replace ("%(ftp|https?://)([w]{3})?([-\\w.]+)(/)?%i",\'$1$3\', $value);
$array_other_unique[] = $value; }
$array_other_unique = array_unique ($array_other_unique);
//здесь что то я делал с доменным именем - щас не помню - для следующего SQL запроса понадобится
foreach ($array_encoding as $key=>$value) {
//$new_array = explode ("|", $value);
$junk.= "domen NOT REGEXP \'".$key."\' AND ";
 }
$junk = preg_replace (\'%(\\x20AND\\x20)$%\',\'\',$junk);
//для этих 2-х запросов к SQL
$query_5 = "SELECT COUNT(*) as cnt, domen FROM ".DUMP." WHERE ".$junk." AND domen is NOT NULL GROUP BY domen ORDER BY cnt DESC";
$query = mysql_query ($query_5);
//создаем 2 массива - они нам понадобятся чтобы вычислять юзеров по уникальным хостам - второй для вычисления что за хост и посетил он его именно сегодня
while ($sit = mysql_fetch_object($query)) {
if (!empty ($sit->domen)) {
$domain[] = $sit->cnt."|".$sit->domen; }}
$query_6 = "SELECT FROM_UNIXTIME(date, \'%d-%m-%y %H:%i:%s\') as date, domen FROM ".DUMP." WHERE ".$junk." AND FROM_UNIXTIME(date, \'%d-%m-%y %H:%i:%s\') BETWEEN \'".date(\'d-m-y\')." 00:00:00\' AND \'".date(\'d-m-y\')." 23:59:59\' ORDER BY `date` DESC";
  $query = mysql_query ($query_6);
$time = array();
while ($zit = mysql_fetch_object($query)) {
if (!empty ($zit->domen)) {
$time[] = $zit->domen; }}
//html
$html = "
";
$html.= "
";
$html.= "Выводятся уникальные хосты, с которых посетили velko.ru. Общее количество посещений: ".array_sum($count_hosts)."
";
echo table ($html);
echo "";
//интересная функция - делит автоматом таблицу на части переданные ей 3-им параметром - каждую строку я тут объяснять не буду-форума не хватит :))
function array_in_table ($array, $forget, $size) {
global $time;
$table_width = 90;
$width = intval ($table_width/$size);
$tr = "";
$td = "\\n";
$grid = "
 [".((date(\'d-m-y\')==$today[0])?"":"").$today[0]." ".$today[1]."] пользователь [".preg_replace (\'%^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)$%\',\'$1.$2.*.*\', $row->ip)."] искал [referer)."\\" target=\\"_blank\\">".iconv ($value, "Windows-1251", $result[1])."], а попал [page."\\" target=\\"_blank\\">сюда]
 

".array_in_table ($domain,$forgetme, 4)."
%s%s
$tr\\n";
$i = 0;
foreach ($array as $e) {
if (!preg_match (\'%(\'.$forget.\')%\', $e)) {
$new = explode ("|", $e);
 unset ($showtoday);
 if (in_array($new[1], $time)):
   $showtoday = "[сегодня]";
endif;
$root = ($today[0] == date (\'d-m-y\'))?"[сегодня]":NULL;
$new[1] = (isset ($new[1]))?"http://".$new[1]:NULL;
$grid.= sprintf ($td, $new[1],$new[1], $new[1], " [".$new[0]."]".$showtoday);
$i++;
if (!($i % $size)) {
$grid.= "$tr\\n";
}}}
while ($i % $size) {
$grid.= sprintf ($td, \'\',\'\',\'\',\'\');
$i++; }
$end_tr_len = strlen ($tr) * -1;
if (substr($grid, $end_tr_len)!=$tr) {
$grid.=\'\';
} else {
$grid = substr($grid, 0, $end_tr_len);
  }
$grid .= \'
\';
return $grid;
 }
 
Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 19 Марта 2006, 22:01:46
продолжение....

//html
$html = "
";
$html.= "
";
$html.= "Выводятся боты поисковых систем, указанных выше.
";
echo table ($html);
//выводим уникальных ботов из USER_AGENT из SQL
$result_b = mysql_query ($query_3);
$sql_other = mysql_num_rows ($result_b);
while ($bot = mysql_fetch_object($result_b)) {
if (!empty ($bot->browser)) {
foreach ($array_encoding as $key=>$value) {
if (preg_match (\'%\'.$key.\'%i\', $bot->browser))
$array_bots[] = $key; } }
$array_bots = array_unique($array_bots);
echo "";
foreach ($array_bots as $key=>$value) {
echo "";}
echo "";
$query_2 = "SELECT * FROM ".DUMP."";
$sql_users = mysql_query($query_2);
$count_users = mysql_num_rows ($sql_users);
//html
$html = "
";
$html.= "
";
$html.= "Процентное соотношение количества уникальных пользователей по часам/дням недели/месяцам, которые посетили velko.ru. Всего: ".$count_users."
";
echo table ($html);

//здесь выводим графики из следующего файла

$unique_id = md5 (uniqid(microtime(), true));
echo <<<__EAX__



   
   


   



__EAX__;
?>




Название: Вопрос начинающего - статистика сайта :)
Отправлено: andymc от 22 Марта 2006, 19:47:14
Аддско
Название: Вопрос начинающего - статистика сайта :)
Отправлено: Greg от 23 Марта 2006, 07:23:23
ниасилил
кг/ам
Название: Вопрос начинающего - статистика сайта :)
Отправлено: for_i_0 от 23 Марта 2006, 11:16:13
reLax[0x00]
[OFF]хорошим, тоном является коментирования своего когда.[/OFF]
Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 23 Марта 2006, 20:09:07
Ок. Согласен. Будет время-прокомментирую код, в субботу наверное. Сейчас особо время на это нету-мне же Dual Xeon привезли на замену старого прокси-сервера - сами понимаете тут уж не до PHP :) юзеров же нада новый сервак перекидать...а так результат кода пока можете увидеть www.velko.ru/statistic? (http://www.velko.ru/statistic?id=) (не реклама -результат кода - там пока все криво и разъезжается html-оформлением я не занимался)
Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 31 Марта 2006, 21:35:15
gisto.php



session_name (\'sessid\');
session_start ();

  //константы коннекта с СКЛ+ из HTTP_HOST нужно вырезать www
  define (\'SERVER\',\'localhost\');
  define (\'USER\',\'xxx\');
  define (\'PWD\',\'xxx\');
  define (\'DB\',\'xxx\');
  define (\'DUMP\', \'dump\');
  define (\'SIZE\', \'390\');
  define (\'LASH\',preg_replace (\'/^[w]{3}[\\.]/\', \'\', $GLOBALS[\'HTTP_HOST\']));


//конвертим в KOI-8 текст
function convert($s) {
    $s = convert_cyr_string($s,\'w\',\'i\');
    for ($result=\'\', $i=0; $i    $charcode = ord($s[$i]);
    $result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
    }
    return $result;
  }

//это понятно

mysql_pconnect (SERVER,USER,PWD) or die ("MySQL server error: can\'t login.");
mysql_select_db (DB);


//режем GET строку браузера
$_REQUEST[\'graf\'] = preg_replace (\'/^([^0-9]{1})$/\',\'\',$_REQUEST[\'graf\']);


//выбираем

//короче здесь все в SWITCH  достаточно просто - делаем запрос к SQL и заносим все это в 2 массива - запросы простые поэтому не комментирую
switch ($_REQUEST[\'graf\']) {

case (1):

$question = convert (\'Статистика хитов \'.LASH.\' по месяцам\');
$month = array (\'January\'=>\'Январь\', \'February\'=>\'Февраль\', \'March\'=>\'Март\', \'April\'=>\'Апрель\', \'May\'=>\'Май\', \'June\'=>\'Июнь\', \'July\'=>\'Июль\', \'August\'=>\'Август\', \'September\'=>\'Сентябрь\', \'October\'=>\'Октябрь\', \'November\'=>\'Ноябрь\', \'December\'=>\'Декабрь\');
foreach ($month as $month_key=>$month_val) {
$query = "SELECT * FROM ".DUMP." WHERE FROM_UNIXTIME(date, \'%M\') = \'".$month_key."\'";
$show = mysql_num_rows (mysql_query($query));
$answers[\'answer\'][] = $month_val;
$answers[\'votes\'][] = $show;}
break;

case (2):

$question = convert (\'Статистика хитов \'.LASH.\' по дням недели\');
$week = array (\'Monday\'=>\'Понедельник\', \'Tuesday\'=>\'Вторник\', \'Wednesday\'=>\'Среда\', \'Thursday\'=>\'Четверг\', \'Friday\'=>\'Пятница\', \'Saturday\'=>\'Суббота\', \'Sunday\'=>\'Воскресенье\');
foreach ($week as $week_key=>$week_val) {
$query = "SELECT * FROM ".DUMP." WHERE FROM_UNIXTIME(date, \'%W\') = \'".$week_key."\'";
$show = mysql_num_rows (mysql_query($query));
$answers[\'answer\'][] = $week_val;
$answers[\'votes\'][] = $show;
}

break;

case (3):
$question = convert (\'Статистика хитов \'.LASH.\' по часам\');
for ($i=0;$i<=23;$i++) {

$time = (strlen($i)==1)?\'0\'.$i:$i;

$query = "SELECT * FROM ".DUMP." WHERE FROM_UNIXTIME(date, \'%H:%i:%s\') BETWEEN \'".$time.":00".":00"."\' AND \'".$time.":59".":59"."\'";
$show = mysql_num_rows (mysql_query($query));
$answers[\'answer\'][] = $time.":00 - ".$time.":59";
$answers[\'votes\'][] = $show;
}

break;

case (4):


$question = convert (\'Количество хитов \'.LASH.\' за сегодня\');
for ($i=0;$i<=23;$i++) {

$time = (strlen($i)==1)?\'0\'.$i:$i;
$query = "SELECT * FROM ".DUMP." WHERE FROM_UNIXTIME(date, \'%Y-%c-%e - %H:%i:%s\') BETWEEN \'".date (\'Y-n-j\')." - ".$time.":00".":00"."\' AND \'".date (\'Y-n-j\')." - ".$time.":59".":59"."\'";
$show = mysql_num_rows (mysql_query($query));
$answers[\'answer\'][] = "c ".$time.":00:00 до ".$time.":59:59";
$answers[\'votes\'][] = $show;
}

break;

//умрем по умолчанию если $_GET[\'graf\'] не int и > 4 чтоли
default:
die;


  }

//А эту функцию я написал не для того чтобы ее комментировать-кто знает тот сам без комментов в ней разберется - на кого и был расчитана была моя просьба..эх..короче она и рисует графики с помощью GD

function gistogramm ($question, $answers) {

$colors = array (array (255,102,0), array (0,153,0),
                 array (51,51,204), array (255,0,51),
array (65,72,145), array (99,122,191),
array (153,0,204));

$x = $y = $padding = 5;
$image = imagecreate (SIZE, 10000);
imagecolorallocate ($image, 255, 255, 255);
    $font = $_SERVER[\'DOCUMENT_ROOT\'].\'/text.ttf\';
    $font_name = $_SERVER[\'DOCUMENT_ROOT\'].\'/8.ttf\';
imagettftext($image, 10, 0, $x, $y + 10, imagecolorallocate ($image, 5, 51, 111), $font_name, $question);
$y +=$padding + 12;
for ($i=0;$i < count($answers[\'answer\']); $i++) {
$bar = sprintf (\'%d\', $answers[\'votes\'][$i]*270/(max ($answers[\'votes\'])));
$c = $i % count($colors);
    if ($_GET[\'graf\']==1) { $m=45; } else { $m=70; }
imagefilledrectangle ($image, $x+$m, $y, $x + $bar, $y+5, imagecolorallocate ($image, $colors[$c][0], $colors[$c][1], $colors[$c][2]));
if (sprintf (\'%1.1f\', 100*$answers[\'votes\'][$i]/(array_sum ($answers[\'votes\']))) !== \'0.0\') { $t = 5; } else { $t=45;}
    imagettftext($image, 8, 0, $x + $bar + $padding+$t, $y + 7, imagecolorallocate ($image, 0, 0, 0), $font, sprintf (\'%1.1f\', 100*$answers[\'votes\'][$i]/(array_sum ($answers[\'votes\'])))."%"." (".$answers[\'votes\'][$i].")");
$y +=5;
imagettftext($image, 8, 0, $x, $y+1, imagecolorallocate ($image, 5, 51, 111), $font, convert ($answers[\'answer\'][$i]));
$y +=10; }

$chart = imagecreate (SIZE, $y);
imagecopy ($chart, $image, 0,0,0,0,SIZE,$y);

header (\'Content-type: image/png\');
imagePNG($chart);

imagedestroy ($image);
imagedestroy ($chart);
                                            }
gistogramm ($question, $answers);
?>



Короче вот такой код и такие комменты-прошу помочь...если эти тупые мои комментарии помогут :(
Название: Вопрос начинающего - статистика сайта :)
Отправлено: for_i_0 от 01 Апреля 2006, 01:50:20
reLax[0x00]

if (sprintf (\'%1.1f\', 100*$answers[\'votes\'][$i]/(array_sum ($answers[\'votes\']))) !== \'0.0\') { $t = 5; } else { $t=45;}

зачем тебе проверять на тип ? они ведь все равное не могут быть одного типа ? тоесть это условие возврощает всегда true.
Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 01 Апреля 2006, 08:48:59
for_i_0
да нет. тут на тип ничего не проверяется. здесь я  округляю число до десятой доли. и если оно равно 0 значит переменная $t принимает значение 5 и тд. Чтото я сам запутался в своем же коде - кстати сейчас наглядно видно как в графике по месяцам в апреле разъезжается гистограмма - сегодня же начало месяца
Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 01 Апреля 2006, 08:51:09
...и самое интересное что когда в апреле наберется некоторое количество посетивших пользователей - оно само по себе выровняется как надо. Чудеса в решете :(
Название: Вопрос начинающего - статистика сайта :)
Отправлено: for_i_0 от 01 Апреля 2006, 22:48:19
Цитировать
reLax[0x00]:
и если оно равно 0 значит переменная $t принимает значение 5 и тд

не поленись, прочти пожалуйста
PHP.NET::Language opertaors (http://www.php.net/manual/en/language.operators.php)
Название: Вопрос начинающего - статистика сайта :)
Отправлено: reLax[0x00] от 06 Апреля 2006, 19:29:33
Что такое операторы я и без php.net знаю, здесь дело совсем в другом. Короче проблема решена. Просто в одной строке начальное значение по координате X было больше чем конечное. Изза этого пока значение  не выравнивалось или не становилось больше начального - гистограмма уезжала влево даже без прорисовски.

а переменная $t кстати всего лишь была назначена только для того, чтобы назначать начальную точку по координате X в завсимости от названия гистограммы  (разная ширина - строка (Апрель) < строка (Воскресенье)).Можно конечно же было вычислять среднюю величину буквы при этом шрифте и автоматом вычислять расстояние - но так как графика всего-лишь 3 штуки - посчитал неактуальным :)
Название: Вопрос начинающего - статистика сайта :)
Отправлено: for_i_0 от 06 Апреля 2006, 19:32:59
[OFF]Отлично, проблема решена, тема закрыта.[/OFF]