[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Статистика посещаемости
freed-master
Вот, только что написал скриптик статистики. Проверьте пожалуйста на наличие глупостей:
Свернутый текст
PHP
<?php
$content 
'';
$year '2009';
$c 1;

while (
$c <= 12) {
$query_hit mysql_query("SELECT COUNT(*) FROM `site_counter` WHERE `date` LIKE '".$year."-0".$c."%'") or die(mysql_error());
${
'hit_'.$c} = mysql_result($query_hit,0); 

$query_host mysql_query("SELECT COUNT(DISTINCT `ip`) FROM `site_counter` WHERE `date` LIKE '".$year."-0".$c."%'") or die(mysql_error());
${
'host_'.$c} = mysql_result($query_host,0); 

$c++; }

$content .= '<h1>2009</h1>';
$content .= '<table id="visits" cellpadding="0" cellspacing="0" border="1" width="100%"><tr>';
$content .= '<td>&nbsp;</td><td>Янв</td><td>Фев</td><td>Мар</td><td>Апр</td><td>Май</td><td>Июн</td><td>Июл</td><td>Авг</td><td>Сен</td><td>Окт</td><td>Ноя</td><td>Дек</td>';
$content .= '<tr><td align="right">Хиты</td>';
$c 1; while ($c <= 12) { 
$content .= '<td>'.${'hit_'.$c}.'</td>'
$c++; }
$content .= '</tr><tr><td align="right">Хосты</td>';
$c 1; while ($c <= 12) { 
$content .= '<td>'.${'host_'.$c}.'</td>';
$c++; }
$content .= '</tr></table>';




Спустя 5 часов, 31 минута, 47 секунд (24.06.2009 - 06:58) glock18 написал(а):
а что тут говорить - 24 запроса к базе, которые делаются в 1.

Цитата (freed-master @ 23.06.2009 - 22:26)
${'hit_'.$c}

а чем массивы не нравятся?

ИМХО развлекаться с $$ следует, если ты работаешь с именами переменных. У тебя здесь это совершенно лишнее.

Спустя 11 минут, 49 секунд (24.06.2009 - 07:10) freed-master написал(а):
А можно хотя бы на словах алгоритм действий... ну никак не пойму эти массивы...

Спустя 1 час, 51 минута, 23 секунды (24.06.2009 - 09:01) kirik написал(а):
Цитата (freed-master @ 23.06.2009 - 23:10)
ну никак не пойму эти массивы...

Почитай пост

Спустя 1 час, 17 минут, 16 секунд (24.06.2009 - 10:18) HardWoman написал(а):
freed-master
Личный вопрос - сколько вам лет? и как вас зовут? smile.gif

Спустя 1 час, 13 минут, 9 секунд (24.06.2009 - 11:32) freed-master написал(а):
kirik, спасибо!

Цитата
Личный вопрос - сколько вам лет? и как вас зовут?
Вася (серьезно), 19 лет...

Спустя 9 минут, 34 секунды (24.06.2009 - 11:41) glock18 написал(а):
freed-master, мы с тобой тезки wink.gif и мне тоже постоянно приходится повторять "серьезно" после имени при знакомстве smile.gif

Спустя 30 минут, 54 секунды (24.06.2009 - 12:12) freed-master написал(а):
biggrin.gif

Так, кажется ситуация с массивами начинает проясняться, но все же не пойму как их применить к этому счетчику, что именно хранить в массиве? Номера месяцев? Но ведь запросов все равно будет 24?

Спустя 1 час, 2 минуты, 21 секунда (24.06.2009 - 13:14) Alchemist написал(а):
Заранее прошу прощения, но не мог удержаться...

Цитата
есть ли в коде грубые ошибки?

грубой ошибкой было браться за этот скрипт.

Спустя 16 секунд (24.06.2009 - 13:15) glock18 написал(а):
Цитата (freed-master @ 24.06.2009 - 09:12)
Так, кажется ситуация с массивами начинает проясняться, но все же не пойму как их применить к этому счетчику, что именно хранить в массиве? Номера месяцев? Но ведь запросов все равно будет 24?


дк конечно. запросы можно объединить прямо сейчас. поменяв только поля в select - вдвое меньше запросов. плюс можно вместо цикла в итерации заменить это все на group by в одном запросе. вот и один запрос.

Спустя 27 минут, 28 секунд (24.06.2009 - 13:42) freed-master написал(а):
Очевидно я не знаю про sql-запросы, то что нужно применить? Но даже не представляю в чем именно надо разобраться?
Как и на что заменить COUNT(*), если в одном случае нужно посчитать все записи, а в другом - только повторяющиеся?

Спустя 9 минут, 5 секунд (24.06.2009 - 13:51) glock18 написал(а):
Цитата (freed-master @ 24.06.2009 - 10:42)
Как и на что заменить COUNT(*), если в одном случае нужно посчитать все записи, а в другом - только повторяющиеся?


а через запятую записать?

Цитата (freed-master @ 24.06.2009 - 10:42)
Но даже не представляю в чем именно надо разобраться?

у тебя есть все, чтобы сделать соответствующие выводы. я тебе назвал чем ты можешь заменить. ты знаешь то, что здесь ты используешь select запрос. и то что база mysql. еще то, что эта задача уже миллион раз решалась.

этой информации хватит вполне.

Спустя 1 час, 27 минут, 8 секунд (24.06.2009 - 15:18) freed-master написал(а):
Хоть убейте, не пойму как получить разные результаты и присвоить их двум разным переменным, сделав один запрос?

Спустя 10 минут, 1 секунда (24.06.2009 - 15:28) Kuliev написал(а):
freed-master
В место цикла
PHP
while ($c <= 12)

// я бы его заменил на

for ($i=1$i <= 12$i++)
{

//..... действие

}

Спустя 15 минут, 16 секунд (24.06.2009 - 15:44) glock18 написал(а):
Kuliev, я че-т не понял. шило на мыло, по-моему.

freed-master, ну вот ты прикинь. Смотри, ты ведь собираешь, скажем, посты или статьи одним запросом. Потом в цикле их разбираешь. Здесь будет так же. Цикл будет, но он будет только получать записи нужные, а запрос будет один.

Ты напиши запрос с group by правильный где-нить в phpmyadmin. там посмотри, что получаешь, и сразу поймешь как получить.

Спустя 11 минут, 15 секунд (24.06.2009 - 15:55) Kuliev написал(а):
glock18
Цитата

Kuliev, я че-т не понял. шило на мыло, по-моему.


Так будет красивее и практичней ненадо будет делать лишних телодвижений
типа $c = 1; $c++ можно сразу использовать $i. Так сказать меньше ненужных переменных, легче в коде разобраться huh.gif
PHP
$c 1; while ($c <= 12) { 
$content .= '<td>'.${'hit_'.$c}.'</td>'
$c++; }

//****************

for ($i 1$i <= 12$i++)
{
     
$content .= '<td>'.${'hit_'.$i}.'</td>'
}





Спустя 10 минут, 22 секунды (24.06.2009 - 16:05) glock18 написал(а):
Kuliev ну в этом плане то да.

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

Спустя 33 минуты, 29 секунд (24.06.2009 - 16:39) freed-master написал(а):
Сначала запрос на выборку, потом цикл с присвоением переменным нужных значений?

Спустя 2 часа, 23 минуты, 35 секунд (24.06.2009 - 19:02) Kuliev написал(а):
freed-master
Я так понял что у тебя будет две строки
1) сколько всего посещений было в конкретный месяц
2) сколько уникальных посещений было в конкретный месяц
Я правильно изложил логику твоего скрипта?



Спустя 7 минут, 54 секунды (24.06.2009 - 19:10) freed-master написал(а):
Совершенно, верно. Добавлю только, что отображается статистика за весь текущий год.

Спустя 13 минут, 20 секунд (24.06.2009 - 19:23) kirik написал(а):
Помимо того что написали ребята, я хотел бы обратить внимание на выборку по дате. Ведь не зря в MySQL предусмотрено такое большое количество типов данных, и если ты заносишь данные ввиде даты (при этом у тебя нужный тип поля), то зачем выбирать нужные записи через LIKE запрос? Есть куча разных функций для удобной работы с датой.

Спустя 5 минут, 7 секунд (24.06.2009 - 19:29) freed-master написал(а):
kirik
За "кучу разных фуекций" огромное спасибо!!!

Спустя 26 минут, 26 секунд (24.06.2009 - 19:55) glock18 написал(а):
Цитата (freed-master @ 24.06.2009 - 16:29)
kirik
За "кучу разных фуекций" огромное спасибо!!!

smile.gif

Спустя 14 часов, 16 минут, 48 секунд (25.06.2009 - 10:12) Kuliev написал(а):
freed-master
Решил помочь тебе вот держи запрос теперь думай как его вывести wink.gif
PHP
$sql = ("SELECT COUNT(ip) AS total, MONTH (`date`) AS d, COUNT(DISTINCT `ip`) AS hits
         FROM `date` d
         WHERE YEAR(`date`) = 2009 AND MONTH (`date`)
         GROUP BY 2"
);
$result mysql_query($sql);


Спустя 6 часов, 38 секунд (25.06.2009 - 16:12) freed-master написал(а):
Kuliev, Респект!!!

Раньше мне не приходилось использовать AS, я и не знал как он работает. Теперь почти понятно!

Что это за двока в GROUP BY? Смотрел мануал но там везде используются имена полей. 2 - это типа номер поля d?

Поправочка: на сколько я знаю уникальный посетитель это host

Спустя 10 минут, 55 секунд (25.06.2009 - 16:23) Kuliev написал(а):
freed-master
GROUP BY 2 Это\ номер поля т.е. date можно и его имя написать
AS это псевдоним поля
COUNT(ip) AS total всего посещений в отдельный месяц
MONTH (`date`) AS d - здесь выводятся месяца
COUNT(DISTINCT `ip`) AS hits - Это поле выводит уникальные IP

Спустя 8 часов, 20 минут, 56 секунд (26.06.2009 - 00:44) freed-master написал(а):
wacko.gif blink.gif huh.gif

Для вывода результатов по всем месяцам сразу надо использовать цикл в цикле?

Спустя 9 минут, 53 секунды (26.06.2009 - 00:54) kirik написал(а):
Цитата (freed-master @ 25.06.2009 - 16:44)
Для вывода результатов по всем месяцам сразу надо использовать цикл в цикле?

Чур тебя.. Убери из запроса AND MONTH (`date`) smile.gif

Спустя 19 часов, 48 минут, 19 секунд (26.06.2009 - 20:43) freed-master написал(а):
Объясните, пожалуйста, что происходит и почему так?
PHP
...
while (
$row_visit mysql_fetch_assoc($query_visit))
{
  
$content .= '<td>'.$row_visit['total'].'</td>'
}
$content .= '</tr><tr><td align="right">Хосты</td>';
while (
$row_visit mysql_fetch_assoc($query_visit))

  
$content .= '<td>'.$row_visit['hits'].'</td>'
}
...
Работает только первый цикл, а если его убрать то - второй.

Спустя 36 минут, 26 секунд (26.06.2009 - 21:19) kirik написал(а):
Потому что при проходе первого цикла mysql_fetch_assoc() смещает указатель в результате запроса на последний элемент (так как проходит полный цикл), а при проходе второго mysql_fetch_assoc() возвращается false, так как перемещать указатель уже некуда.
А зачем тебе такая бессмысленная конструкция?

Спустя 33 минуты, 25 секунд (26.06.2009 - 21:52) freed-master написал(а):
Цитата
А зачем тебе такая бессмысленная конструкция?

Потому, что более осмысленную конструкцию, которая бы хоть както работала, из моих знаний пока собрать тяжело... sad.gif

Спустя 6 минут, 17 секунд (26.06.2009 - 21:59) kirik написал(а):
freed-master
Табличку какого вида ты хотел нарисовать?

Спустя 8 минут, 1 секунда (26.06.2009 - 22:07) freed-master написал(а):
Свернутый текст
HTML
<table id="visits" cellpadding="0" cellspacing="0" border="1" width="100%">
<tr>
<td></td>
<td>Янв</td>
<td>Фев</td>
<td>Мар</td>
<td>Апр</td>
<td>Май</td>
<td>Июн</td>
<td>Июл</td>
<td>Авг</td>
<td>Сен</td>
<td>Окт</td>
<td>Ноя</td>
<td>Дек</td>
<tr>
<td align="right">Хиты</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td align="right">Хосты</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>

Спустя 53 минуты, 42 секунды (26.06.2009 - 23:00) Kuliev написал(а):
freed-master
Вот тебе подсказка
PHP
while ($row mysql_fetch_assoc($result))
{

  
$total[] = $row['total'];
  
$date[] = $row['d'];
  
$hits[]  = $row['hits'];
}

// Вот теперь все данные хранятся в массивах
// Тебе только осталось разобрать их


Спустя 1 час, 12 минут, 55 секунд (27.06.2009 - 00:13) freed-master написал(а):
Понятно!

Но получается если посетителей в каком то месяце недыло, то в массив ничего не записывается, следовательно при выводе нарушается структура таблицы.

Что если создать многомерный массив, поможет ли?

Спустя 9 часов, 21 минута, 11 секунд (27.06.2009 - 09:34) glock18 написал(а):
Цитата (freed-master @ 26.06.2009 - 21:13)
Но получается если посетителей в каком то месяце недыло, то в массив ничего не записывается, следовательно при выводе нарушается структура таблицы.

это верно

Цитата (freed-master @ 26.06.2009 - 21:13)
Что если создать многомерный массив, поможет ли?

не думаю, что понимаю, о чем ты. вероятно, нет.

эту ситуацию достаточно легко обработать. тебе просто при выводе нужно следить, что значения месяца не "скачут". если скачек видишь - значит надо все пропущенные значения заполнить нулями.

PS: еще, возможно, в mysql можно это как-то красиво обойти, используя что-то типа ifnull и nullif. unsure.gif

Спустя 16 минут, 40 секунд (27.06.2009 - 09:51) freed-master написал(а):
Цитата
не думаю, что понимаю, о чем ты

Цитата
нужно следить, что значения месяца не "скачут".
Вариант который предложил Kuliev - это три разных массива. ведь они между собой никак не связаны? "Скачки" будут отслеживаться в одном массиве, а инфо для вывода в другом, наверно их надо както объединить или связать между собой?

Спустя 2 часа, 2 минуты, 5 секунд (27.06.2009 - 11:53) Kuliev написал(а):
freed-master
Ты правильно подметил, 3 разных массива, но с одинаковыми ключами (в этом вся фишка)

Спустя 1 час, 7 минут, 55 секунд (27.06.2009 - 13:01) freed-master написал(а):
Т.е. нужно:
1) перебрать массив $date[]
2) если разница между значениями массива больше 1, то получить ключ этого значения
3) записать в массивы $total[] и $hits[] значение 0 с полученным ранее ключем

Спустя 20 минут, 10 секунд (27.06.2009 - 13:21) Kuliev написал(а):
freed-master

$date[0] = 06; $total[0] = 5; $hits[0] = 4;

$date[1] = 07; $total[1] = 3; $hits[1] = 1;

$date[2] = 10; $total[2] = 5; $hits[2] = 4;

В массиве $date хранится число месяца, вот и подумай как его разобрать так как тебе надо.

Спустя 53 минуты, 3 секунды (27.06.2009 - 14:14) freed-master написал(а):
т.е. ход мыслей был правильный? или ничего записывать в массивы не надо?

Спустя 34 минуты, 13 секунд (27.06.2009 - 14:49) freed-master написал(а):
Пытался чтото сообразить, но получается какой-то бред...
PHP
foreach ($date as $key => $value)
{
    if ($value[$i++]-$value[$i]!=1)
    {
        $total[$key] = '0';
    }
}
Кажется я чего-то основательно не понимаю...

Спустя 3 часа, 6 минут, 6 секунд (27.06.2009 - 17:55) kirik написал(а):
freed-master
Давай по пунктам, как ты думашь, как php отработает твой код? Рассказывай в слух.

Спустя 47 минут, 49 секунд (27.06.2009 - 18:42) glock18 написал(а):
Цитата (freed-master @ 27.06.2009 - 11:49)
$i++

kirik прав. с этим не балуйся лишнего. лучше почитай что это такое и чем отличается $i++ от ++$i wink.gif

Спустя 47 минут, 58 секунд (27.06.2009 - 19:30) freed-master написал(а):
Цитата
чем отличается $i++ от ++$i
А страничку не подскажите? или как это называется чтоб найти?

PHP
foreach ($date as $key => $value
/*
Для каждого элемента массива создать переменные $key и $value
Присвоить им Индекс и его Значение соответственно
*/
{
    if (
$value[$i++]-$value[$i]!=1)
/*
Теперь нужно сравнить Значения следующего элемента с предыдущим
Я пытался сделать это вычитанием, где и запутался...
*/
  
{
     
$total[$key] = '0';
/*
Если условие выполнилось - Записать в массив $total Значение "0" 
под индексом полученным на этом цикле перебора из массива $date
*/
  
}
}

Спустя 2 часа, 31 минута, 54 секунды (27.06.2009 - 22:02) glock18 написал(а):
Цитата (freed-master @ 27.06.2009 - 16:30)
if ($value[$i++]-$value[$i]!=1)
/*
Теперь нужно сравнить Значения следующего элемента с предыдущим
Я пытался сделать это вычитанием, где и запутался...
*/


увы, это совсем не так. $i++ и ++$i - инкрементация. Каждая из них увеличивает переменную на один.

То есть
PHP
$i++;

PHP
++$i;


и

PHP
$i $i 1;


в принципе, одно и то же.

различия начинаются, когда ты вставляешь инкремент в другое выражение (как у тебя).

Парадокс в том, что у тебя здесь вычитается не из i+1 элемента i, а наоборот smile.gif

Смотри как рассчитывается это выражение:
допустим, $i = 3;
1. транслятор встречает выражение $value[$i++]. Это сложное выражение, а значит разбирает его по частям.

2. соответственно, разбирает единственное входящее в него выражение - $i++.
3. разбор его такой: выражение возвращает текущее значение $i, а потом увеличивает $i на 1.

то есть $value[$i++] будет таким: $value[3]. Но! $i после этого оператора уже 4.

4. далее соответственно разбирается $value[$i], а так как $i уже равен 4,то будет взято $value[4] smile.gif

если использовать оператор ++$i, то поведение с
Цитата
выражение возвращает текущее значение $i, а потом увеличивает $i на 1.


изменится на
Цитата
сначала увеличивается $i на 1, а потом возвращается его полученное значение


то есть если бы поставил ++$i, то у тебя бы вычитались $value[4] - $value[4] (по примеру).

так как ты хочешь просто вычесть из следующего текущий, то лучше вообще не использовать здесь инкремент, хотя можно и с ним.

лучше просто:

$value[$i + 1] - $value[$i]...

$i++; // увеличиваешь перед следующей итерацией

Спустя 32 минуты, 35 секунд (27.06.2009 - 22:35) freed-master написал(а):
Но выводит все равно только 2 элемента...

Добавил запись нуля не только в $total, но и в $date, но ведь теперь нужно запустить цикл заново, а это реально?
PHP
$i=1;
foreach (
$date as $key => $value)
{    
    if (
$value[$key+1]-$value[$key]>1)
    {
        
$date[$key] = '0';
        
$total[$key] = '0';
    }
    
$i++;
}

Спустя 1 час, 42 минуты, 33 секунды (28.06.2009 - 00:17) glock18 написал(а):
Понятно. Весь код покажи...

Спустя 9 часов, 8 минут, 36 секунд (28.06.2009 - 09:26) freed-master написал(а):
Свернутый текст
PHP
$year = isset($_GET['y'])?($_GET['y']):date("Y");

$query_visit mysql_query("
SELECT COUNT(`ip`) AS total, 
            MONTH (`date`) AS d, 
            COUNT(DISTINCT `ip`) AS hits
FROM `site_counter` d
WHERE YEAR(`date`) = 2009
GROUP BY 2"
);

while (
$row mysql_fetch_assoc($query_visit))
{
  
$total[] = $row['total'];
  
$date[] = $row['d'];
  
$hits[]  = $row['hits'];
}

$content .= '<h1>';

if ((
$year-1) >= 2008
{
  
$content .= '<a href=pages.php?path=a2&y='.($year-1).'>'.($year-1).'</a> '
}

$content .= $year;

if ((
$year+1) <= (date("Y")+1)) 
{
  
$content .= ' <a href=pages.php?path=a2&y='.($year+1).'>'.$year+1).'</a>'
}

$content .= '</h1>';
$content .= '<table></tr>';
$content .= '<td></td>
<td>Янв</td>
<td>Фев</td>
<td>Мар</td>
<td>Апр</td>
<td>Май</td>
<td>Июн</td>
<td>Июл</td>
<td>Авг</td>
<td>Сен</td>
<td>Окт</td>
<td>Ноя</td>
<td>Дек</td>'
;
$content .= '<tr><td align="right">Хиты</td>';

foreach (
$date as $key => $value)
{    
  if (
$value[$key+1]-$value[$key]>1)
  {
    
$date[$key] = '0';
    
$total[$key] = '0';
  }
$i++;
}

foreach (
$total as $value)
{
  
$content .= '<td>'.$value.'</td>'
}

// Вторую строку таблицы пока не трогаю
// С первой бы разобраться

$content .= '</tr></table>';

Спустя 4 часа, 45 минут, 59 секунд (28.06.2009 - 14:12) glock18 написал(а):
PHP
if (($year-1) >= 2008)


не надо так. а то индусом будут называть за такие выражения smile.gif так ведь можно

PHP
if ($year >= 2009)


аналогично

PHP
if (($year+1) <= (date("Y")+1))


почему бы не убрать единички? smile.gif

в данном контексте лучше это

PHP
// здесь кстати массивы надо инициализировать обязательно
while ($row mysql_fetch_assoc($query_visit))
{
  
$total[] = $row['total'];
  
$date[] = $row['d'];
  
$hits[]  = $row['hits'];
}


делать немного по-другому. примерно так

PHP
$stats = array():
while (
$row mysql_fetch_assoc($query_visit))
{
  
$stats[$row['d']] = $row;
// или так
  
$stats[$row['d']] = array('total' => $row['total'], 'hits' => $row['hits']);
// так массив чуток поменьше памяти занимать будет, но строка вдвое длиннее :) 
}


после этого у тебя в $stats ключ - это месяц к которому элемент хранит статистику.

PHP
foreach ($date as $key => $value)
{    
  if (
$value[$key+1]-$value[$key]>1)
  {
    
$date[$key] = '0';
    
$total[$key] = '0';
  }
$i++;
}


это лучше не форичем, я думаю. хотя можно и им. лучше всего, думаю, с for:

PHP
for($month 1$month <= 12$month++)
{
  if (!isset(
$stats[$month]))
    
$stats[$month] = array('total' => 0'hits' => 0);
}


так просто "дырочки заделали", и все smile.gif

после таких манипуляций получишь то, что надо. только выводить этот массив потом не через foreach (хотя я не уверен). Дело в том, что элементы будут выведены в том же порядке, в котором были назначены, а не 1, 2...12. лучше так же for'ом вывести.

Спустя 2 часа, 31 минута, 14 секунд (28.06.2009 - 16:43) freed-master написал(а):
Цитата
почему бы не убрать единички?
Наверно потому, что эта конструкция расчитана не на три года, а больше... но показывает только настоящий, предыдущий и последующий... но только из истории (там где заполнено)...
Цитата
Дело в том, что элементы будут выведены в том же порядке, в котором были назначены
А можно ли задать сортировку по ключу для sort()?

Спустя 20 минут, 45 секунд (28.06.2009 - 17:04) freed-master написал(а):
Ура! Сделал for-ом:
PHP
for($month 1$month <= 12$month++)
{
  
$content .= '<td>'.$stats[$month]['total'].'</td>'
}
Как все-таки приятно, когда хоть до чего-то додумался сам!!!

biggrin.gif biggrin.gif biggrin.gif

ВСЕМ СПАСИБО!

Эх, было бы у меня много денег - каждого бы на wmz отблагодарил

biggrin.gif biggrin.gif biggrin.gif

Спустя 13 минут, 16 секунд (28.06.2009 - 17:17) glock18 написал(а):
Цитата (freed-master @ 28.06.2009 - 13:43)
Наверно потому, что эта конструкция расчитана не на три года, а больше...


я не про те единички, а про единички в выражении if - они сокращаются. без них выражение будет абсолютно эквилентно, и долговременность тут совершенно не при чем.


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.