ФорумПрограммированиеPHP для идиотов → Генерация размеров

Генерация размеров

  • developer

    Сообщения: 244 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2016 г. 14:40

    Есть проблемка, прошу подсказать направление в какую сторону двигаться.
    Тяну из базы товары по размерам ps2.specification in ('261x175x220', '260x173x220' ...) но не могу нагенерировать эти размеры, для определенной модели автомобиля вытаскиваю из базы заводской размер 261x175x220, где ШДВ это length, width, height отдельные поля. Погрешность +/- 5, при чем в большую сторону на 1, в меньшую естественно на 4. Нужно сгенерировать размеры: 267x175x220, 268x175x220 .... 267x176x220, 267x177x220 и так далее, все варианты в пределах допустимых. Дошел до:

    define('SIZE_OUTSET_UP', 1); 
    define('SIZE_OUTSET_DOWN', 4);
    
    $length_min = $featured['length']-SIZE_OUTSET_DOWN;
    $length_max = $featured['length']-SIZE_OUTSET_UP;
    
    $width_min = $featured['width']-SIZE_OUTSET_DOWN;
    $width_max = $featured['width']-SIZE_OUTSET_UP;
    
    $height_min = $featured['height']-SIZE_OUTSET_DOWN;
    $height_max = $featured['height']-SIZE_OUTSET_UP;
    
    for ($x=0; $x<=5; $x++) {
    
    }

    и замер ...

    Как вообще такие варианты сгенерировать?

  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 13 февраля 2016 г. 14:48, спустя 7 минут 27 секунд

    @developer, ну если я правильно понял, то у тебя должно быть три уровня циклов

    от $length_min до $length_max
    -- от $width_min до $width_max
    ---- от $height_min до $height_max

  • developer

    Сообщения: 244 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2016 г. 15:17, спустя 28 минут 51 секунду

    Спасибо @Sinkler, сделал так и получил 215 вариантов:

            for ($x=0; $x<=5; $x++) {        
                $length = $length_min + $x;     
                for ($y=0; $y<=5; $y++) {            
                    $width = $width_min + $y;           
                    for ($i=0; $i<=5; $i++) {                
                        $height = $height_min + $i;             
                        $size[] = $length . 'x' . $width . 'x' . $height;               
                    }               
                }   
            }

    Чувствую себя индусом

  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 13 февраля 2016 г. 19:51, спустя 4 часа 34 минуты 12 секунд

    @developer, мне кажется ты схватился за проблему не с того конца. Габариты хранятся строкой в одном поле или каждая мерность отдельно?

  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 13 февраля 2016 г. 20:20, спустя 28 минут 45 секунд

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

  • developer

    Сообщения: 244 Репутация: N Группа: Кто попало

    Spritz 13 февраля 2016 г. 23:45, спустя 3 часа 24 минуты 59 секунд

    размер фиксированный и нужно нагенерировать кучу других:

    Array
    (
    [0] => 257x171x216
    [1] => 257x171x217
    [2] => 257x171x218
    [3] => 257x171x219
    [4] => 257x171x220
    [5] => 257x171x221
    [6] => 257x172x216
    [7] => 257x172x217
    [8] => 257x172x218
    [9] => 257x172x219
    ...

    Спустя 233 сек.

    или имете ввиду что можно как-то указать в запросе к базе что нужно искать с 257x171x216 по 262x176x221?

  • Crank

    Сообщения: 542 Репутация: N Группа: Джедаи

    Spritz 14 февраля 2016 г. 12:10, спустя 12 часов 25 минут 12 секунд

    или имете ввиду что можно как-то указать в запросе к базе что нужно искать с 257x171x216 по 262x176x221?

    @developer, ну конечно же, если бы у тебя каждая мерность была в отдельном поле, у тебя получился бы один запрос типа такого

    
    SELECT * FROM table 
    WHERE width BETWEEN 261-5 AND 261+5
    AND heigth BETWEEN 175-5 AND 175+5
    AND length BETWEEN 220-5 AND 220+5
    

    а так у тебя получается цикл с хуевой тучей запросов и это реальный пиздец

  • developer

    Сообщения: 244 Репутация: N Группа: Кто попало

    Spritz 14 февраля 2016 г. 14:27, спустя 2 часа 17 минут 16 секунд

    @Crank, я бы с радостью, но товары хранятся в базе с данными именно 257x171x216 ...

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 февраля 2016 г. 15:04, спустя 36 минут 20 секунд

    даже не читал что тут происходит, но чтото ржу )))))))

    Сапожник без сапог
  • Nek

    Сообщения: 109 Репутация: N Группа: Адекваты

    Spritz 15 февраля 2016 г. 17:00, спустя 1 день 1 час 56 минут

    @Crank, я бы с радостью, но товары хранятся в базе с данными именно 257x171x216 ...

    @developer, значит надо привести хотя бы к 1NF (объяснение посложнее; попроще), иначе геморрой этот будет продолжаться и дальше.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!