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

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

  • developer

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

    Spritz Фев. 13, 2016, 2: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, 2:48 п.п., спустя 7 минут 27 секунд

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

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

  • developer

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

    Spritz Фев. 13, 2016, 3: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, 7:51 п.п., спустя 4 часа 34 минуты 12 секунд

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

  • Crank

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

    Spritz Фев. 13, 2016, 8:20 п.п., спустя 28 минут 45 секунд

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

  • developer

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

    Spritz Фев. 13, 2016, 11: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, 2:27 п.п., спустя 2 часа 17 минут 16 секунд

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

  • phpdude

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

    Spritz Фев. 14, 2016, 3:04 п.п., спустя 36 минут 20 секунд

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

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

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

    Spritz Фев. 15, 2016, 5 п.п., спустя 1 день 1 час 56 минут

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

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

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