Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> результат вычисления выводится не в том формате 
V
    Опции темы
check
Дата 19.9.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Данные читаются из CSV-файла такого вида 
Код

date;domain;login;pswd;Mb;hostprice;nameprice;mailprice;opl;mail;account
15.01.2006;my.com;log;pas;122;100;300;200;200;[email protected];
18.01.2006;my2.ru;lfff;111;50;90;300;150;600;[email protected];


Нужно подставить в поле account результат вычисления такой формулы
Код

(hostprice + nameprice + mailprice)/365 * (today - date) - oplacheno

где today - текущая дата
Вычисляю в PHP.
Код

for ($i = 0; $row = fgetcsv($f, 200, ";"); $i++) {
  if ($i == 0)  continue; 
  echo "<tr>";
  for ($k = 0; $k < count($row); $k++) {
    list($day,$month,$year) = explode(".", $row[0]);
    if (strpos($day, "0") === 0)  
            $day = substr($day, 1, 1); 
    if (strpos($month, "0") === 0)  
        $month = substr($month, 1, 1);
        $vsego = ($row[5] * $row[6] * $row[7]) / 365 * ((time() -                         

mktime(0,0,0,$month,$day,$year))/60*60*24) - $row[8]; 
        if($k !== 10)  
        echo "<td>".$row[$k]."</td>";
        else  
        echo "<td>".$vsego."</td>";
  }
}

В результате вычисления формулы получается что-то вроде 8.77791096966E+012.
Почему так может быть?  Подозреваю, что дело в дате...

Это сообщение отредактировал(а) check - 19.9.2006, 15:29
PM MAIL   Вверх
check
Дата 19.9.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Для проверки делаю обратное преобразование из полученного timestamp в дату
Код

echo date("d.m.Y", mktime(0,0,0,$month,$day,$year));

С датой всё в порядке, причина не в этом...
PM MAIL   Вверх
check
Дата 19.9.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Цитата(check @  19.9.2006,  12:56 Найти цитируемый пост)
        $vsego = ($row[5] * $row[6] * $row[7]) / 365 * ((time() -                         
mktime(0,0,0,$month,$day,$year))/60*60*24) - $row[8];
 smile 

PM MAIL   Вверх
BuShaRt
Дата 19.9.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



 smile Перестань мешать HTML and PHP ... Код надо комменитить...

if ($i == 0)  continue;  нафиг это нужно, я вообше не понял...

И как ты собрался умножать строки, потом их делить и снова на что то умножать?

Бр...  smile Я видно недоучился еще...
PM MAIL   Вверх
check
Дата 19.9.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Цитата(BuShaRt @  19.9.2006,  15:53 Найти цитируемый пост)
И как ты собрался умножать строки, потом их делить и снова на что то умножать?

Да, я уже сам заметил.
Код

(time() - mktime(0,0,0,$month,$day,$year))/(60*60*24)
Так правильно считает разницу в днях. Говорила мне бабушка - "учи математику".  smile 


Цитата(BuShaRt @  19.9.2006,  15:53 Найти цитируемый пост)
if ($i == 0)  continue;  нафиг это нужно, я вообше не понял...

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

Кстати, а как ты в данном случае предлагаешь избежать смешения PHP и HTML?
PM MAIL   Вверх
nerezus
Дата 19.9.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Это чтобы не выводилась первая строка из файла.  В Excel она выглядит как
шапка таблицы, а на станице она мне не нужна.
 А ты знаешь, что цикл можно начинать не с нуля, а с единицы?  smile 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
check
Дата 19.9.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Да,  я сначала так и сделал но, но строка с шапкой почему-то продолжала выводиться.  Сейчас цикл с единицы работает правильно,  так что continue я убрал. А тогда я так и не смог найти  баг,  поэтому с помощью continue "притянул за уши"  нужный мне результат.
  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1235 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.