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

Форум PHP

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

 

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

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

тема: Перекрытие двух диапазонов дат.

Сообщения:  [1-10]   [11-18] 

 
 автор: reimax   (11.12.2011 в 13:57)   письмо автору
 
   для: reimax   (11.12.2011 в 00:42)
 

вопрос решился просто:


$final=array();
                    foreach($get as $key=>$value)
                    {
                        $final[$key]=$flash[$key];
                    }
                    $sum = array_sum($final);

  Ответить  
 
 автор: reimax   (11.12.2011 в 00:42)   письмо автору
 
   для: Valick   (11.12.2011 в 00:17)
 

считается сумма за три спектакля, а не всегда, потом скидка от него.

  Ответить  
 
 автор: Valick   (11.12.2011 в 00:17)   письмо автору
 
   для: reimax   (10.12.2011 в 23:32)
 

В один день 3 спектакля
ну наконец-то :) о таких вещах пишите сразу
теперь еще объясните зачем складывать цену
чтобы окончательно все стало на свои места

  Ответить  
 
 автор: reimax   (10.12.2011 в 23:32)   письмо автору
 
   для: Valick   (10.12.2011 в 14:48)
 

как где? В один день 3 спектакля, значит 3 цены. События могут друг друга перекрывать легко.

  Ответить  
 
 автор: reimax   (10.12.2011 в 22:24)   письмо автору
 
   для: Valick   (10.12.2011 в 14:48)
 

дата храниться в формате 22-11-2011 поля типа int не подходит. а какой может быть ваш вариант, что предлагаете? может я не правильно понимаю что то...

  Ответить  
 
 автор: Valick   (10.12.2011 в 14:48)   письмо автору
 
   для: reimax   (10.12.2011 в 12:10)
 

даже если их будет в 100 раз больше это мизер для БД
что значит диапазоны перекрываются? в один день могут быть две и более цены? тогда где логика?
но даже в таком случае предложенный мной вариант будет лучше, просто нужно чуть дополнить таблицу
и я так и не услышал объяснения почему тип поля для хранения даты varchar, а не date?
судя по коду вы все возможности БД сводите к нулю, используя её тупо для хранения данных
___
поверьте я задаю так много вопросов, потому что хочу вам помочь, а не потому что мне совсем совсем нехрен делать.

  Ответить  
 
 автор: reimax   (10.12.2011 в 12:10)   письмо автору
 
   для: Valick   (10.12.2011 в 09:58)
 

не запрос, функция:


$timer = array();
                $sql = $DB->Query(" SELECT * FROM datepicker WHERE datepicker_id = '".$getdoc."' ");
                while ($temp = $sql->fetchrow()) {    
                
                    // преобразование даты
                    $date_elements = split("-", $temp->research_datepicker_start);
                    $run1 = mktime(0,0,0,$date_elements[1],$date_elements[2],$date_elements[0]);
                    
                    $date_elements = split("-", $temp->research_datepicker_end);
                    $run2 = mktime(0,0,0,$date_elements[1],$date_elements[2],$date_elements[0]);
                            
                    $temp->int = array();
                    for($i=$run1; $i<$run2; $i += 86400) { 
                        $key = date("d.m.Y", $i);
                        $temp->int += array($key => $temp->research_datepicker_price);
                    }                
                
                            
                    array_push($timer, $temp);
                }    
    
            // введённые данные
            $date_elements = split("-", $_REQUEST['from']);
            $run1 = mktime(0,0,0,$date_elements[1],$date_elements[2],$date_elements[0]);
            
            $date_elements = split("-", $_REQUEST['to']);
            $run2 = mktime(0,0,0,$date_elements[1],$date_elements[2],$date_elements[0]);
            
            $get = array();
            for($i=$run1; $i<$run2; $i += 86400) { 
                $key = date("d.m.Y", $i);
                $get += array($key => "");
            }
            
            
            // поиск цены
            $flash = array();    
            for($i=0; $i<count($timer); $i++) {
                $flash += $timer[$i]->int;
            }        
        
            $result = array_diff($flash, $get);    
            $sum = array_sum($result);

            print_r("<pre>");            
            print_r($result);            
            print_r("</pre>");        


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

  Ответить  
 
 автор: Valick   (10.12.2011 в 09:58)   письмо автору
 
   для: reimax   (10.12.2011 в 01:57)
 

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

  Ответить  
 
 автор: reimax   (10.12.2011 в 01:57)   письмо автору
 
   для: Valick   (10.12.2011 в 01:26)
 

у проекта есть некоторые особенности, и нет возможности так хранить цены...

  Ответить  
 
 автор: Valick   (10.12.2011 в 01:26)   письмо автору
 
   для: reimax   (09.12.2011 в 20:59)
 

может проще хранить цену на каждый день?
это всего-лишь 365 строк в год

  Ответить  

Сообщения:  [1-10]   [11-18] 

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

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