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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> определить неактуальность отчета 
:(
    Опции темы
okcomputer
Дата 10.7.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



БД: reg - дата размещения отчета, new - дата до кот. необходимо разместить отчет, period - периодичность в днях (7, 31, 93)


пользователь загружает отчет upload + вып. запрос:  
Код

$query=mysql_query("UPDATE form SET reg = now(), new = new + interval '".$res['period']."' Day  WHERE id_form='".$res['id_form']."'");     

Необходимо определить актуальность отчета:

      
Код

  $newrepdate=mysql_query("SELECT `reg`, `new` FROM form where id_form='".$row['id']."'"); 
        $new = mysql_fetch_array($newrepdate); 
         
        $check=mysql_query("select '".$new['new']."' > date(now()) as flag"); 
        $c=mysql_fetch_array($check); 
         
        if ($c['flag']==0) // отчет просрочен 
         
        { 
         
        $pr=mysql_query("SELECT to_days(now())-to_days('".$new['new']."') as srok"); 
        $srok = mysql_fetch_array($pr);             
        $color="red"; 
        $text=" (дней просрочки ".$srok['srok'].")"; 
         
        } 


        else  

        { 
     
        $color="green";         
        $text=""; 
         
        }         



Проблема возникнет, если разместить отчет раньше срока. дата в new каждый раз передвигается на period. 
Как можно решить проблему?



Это сообщение отредактировал(а) okcomputer - 10.7.2008, 11:03
PM MAIL   Вверх
Feldmarschall
Дата 10.7.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



Возьми ручку, листок бумаги, отодвинь клавиатуру в сторону и попробуй решить эту задачу на бумаге.
Насколько я понимаю, проблема не в синтаксисе SQL, а просто в алгоритме решения этой, в общем-то, несложной задачки.
Ты сначала реши, что тебе от чего надо отнять, а потом реализуй уже в синтаксисе. Делать два дела одновременно неудобно.
PM   Вверх
okcomputer
Дата 10.7.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



)
думаю, месяц из now() нужно сравнивать с мес. поля new. если они не совпадают, то смещаем new на period

?
т.е.


    
Код

if ($res['period']=='31')

    {

    $check=mysql_query("select MONTH('".$res['new']."') = MONTH(date(now())) as flag");
    $c=mysql_fetch_array($check);

    }


    if ($res['period']=='93')

    {

    $check=mysql_query("select QUARTER('".$res['new']."') = QUARTER(date(now())) as flag");
    $c=mysql_fetch_array($check);

    }

PM MAIL   Вверх
Feldmarschall
Дата 10.7.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



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

составь формулу. ты же пока сама еще не понимаешь, что от чего надо отнять. а уже пытаешься это написать в синтаксисе.


PM   Вверх
okcomputer
Дата 10.7.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



x  + z =y
if (now())> y //если 1, то отчет просрочен. это выполняется только если юзер размещает отчет каждый раз в одну и ту же дату.

что не верно в моем варианте?
PM MAIL   Вверх
Feldmarschall
Дата 10.7.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



почему это не выполняется?
какая разница, когда класть колбасу в холодильник? если я её положил две недели назад, а срок кодности - неделя, то она протухла
три недели назад - протухла
3 дня назад - свежая. 
все работает
PM   Вверх
okcomputer
Дата 11.7.2008, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Feldmarschall @ 10.7.2008,  14:40)
почему это не выполняется?
какая разница, когда класть колбасу в холодильник? если я её положил две недели назад, а срок кодности - неделя, то она протухла
три недели назад - протухла
3 дня назад - свежая. 
все работает

допустим отчет нужно размещать кажд. месяц до 20 числа:
если
x=20 
z=31 (или 30)
у=20
условие вып.

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


PM MAIL   Вверх
Feldmarschall
Дата 11.7.2008, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

Репутация: 22
Всего: 32



А какая разница, когда он разместил? Считай от х, а не от фактического размещения.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0730 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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