Создание вложенных списков из массивов - Codeigniter, PHP, MySQL - PullRequest
0 голосов
/ 02 апреля 2012

Хорошо, долгое время кодер, первый раз застрял (думаю, из-за того, что не видел леса сквозь деревья!)

любой, как у меня есть данные, возвращаемые в массиве. Если указано одно из полей данных, это номер детали.

В качестве примера набор данных выглядит следующим образом (я удалил некоторые из них, поскольку он повторяется)

[1] => Array
    (
        [id] => 1628
        [partnum] => 02030200104bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS400 4 BLACK D RING CHUKKA PAD COLLAR PUDD SOLE STEEL TOEandMID S1P STES
        [is_over] => 0
        [price] => 1
        [image] => 1717-1727
        [location] => 
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

[2] => Array
    (
        [id] => 1629
        [partnum] => 02030200105bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS400 5 BLACK D RING CHUKKA PAD COLLAR PUDD SOLE STEEL TOEandMID S1P STES
        [is_over] => 0
        [price] => 1
        [image] => 1717-1727
        [location] => 
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

[3] => Array
    (
        [id] => 1630
        [partnum] => 02030200106bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS400 6 BLACK D RING CHUKKA PAD COLLAR PUDD SOLE STEEL TOEandMID S1P STES
        [is_over] => 0
        [price] => 1
        [image] => 1717-1727
        [location] => 
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )


[11] => Array
    (
        [id] => 1638
        [partnum] => 02030200205bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS609 5 BLACK PAD COLLAR/TONGUE PU DD SOLE STEEL TOECAP and MIDSOLE S3 STES
        [is_over] => 0
        [price] => 1
        [image] => 1728-1735
        [location] => C36
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 5 6 7 8 9 10 11 12
        [ass_prod] => 
    )

[12] => Array
    (
        [id] => 1639
        [partnum] => 02030200206bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS609 6 BLACK PAD COLLAR/TONGUE PU DD SOLE STEEL TOECAP and MIDSOLE S3 STES
        [is_over] => 0
        [price] => 1
        [image] => 1728-1735
        [location] => C36
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

[13] => Array
    (
        [id] => 1640
        [partnum] => 02030200207bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS609 7 BLACK PAD COLLAR/TONGUE PU DD SOLE STEEL TOECAP and MIDSOLE S3 STES
        [is_over] => 0
        [price] => 1
        [image] => 1728-1735
        [location] => C36
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

[14] => Array
    (
        [id] => 1641
        [partnum] => 02030200208bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS609 8 BLACK PAD COLLAR/TONGUE PU DD SOLE STEEL TOECAP and MIDSOLE S3 STES
        [is_over] => 0
        [price] => 1
        [image] => 1728-1735
        [location] => C36
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

[13] => Array
    (
        [id] => 1640
        [partnum] => 02030200207bla
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS609 7 BLACK PAD COLLAR/TONGUE PU DD SOLE STEEL TOECAP and MIDSOLE S3 STES
        [is_over] => 0
        [price] => 1
        [image] => 1728-1735
        [location] => C36
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

[15] => Array
    (
        [id] => 1642
        [partnum] => 02030200108yel
        [cat] => PPE
        [class] => FOOT PROTECTION
        [subcat] => BOOTS
        [name] => BOOT SS400 8 YELLOW D RING CHUKKA PAD COLLAR PUDD SOLE STEEL TOEandMID S1P STES
        [is_over] => 0
        [price] => 1
        [image] => 1728-1735
        [location] => C36
        [purchase] => 1
        [hire] => 0
        [hide] => 0
        [hasother] => 0
        [name_soundex] => 
        [options] => 
        [ass_prod] => 
    )

)

Первые 9 символов - это код продукта, поэтому я делаю

$thisval = substr($t['partnum'], 0, 9);

и следующие 2 символа имеют размер

$thissize = substr($t['partnum'], 9, 2);

и последние 3 символа цвета

$thissize = substr($t['partnum'], 11, 3);

Все, что мне нужно сделать, это если первые 9 символов совпадают, создайте выбор для каждого из последних 2 символов, где совпадают первые девять символов, чтобы они все отображались в раскрывающемся списке как выбираемый размер и он берет последние 3 символа и делает их выбираемыми цветами

Если появляются новые 9 символов, он берет это и начинает новый. , ,

Таким образом, вы оказались бы в магазине с товаром, селектором цвета и размера

Из приведенных выше данных Я бы искал 2 предмета, один с селектором размера и с черным и желтым и один с селектором размера и селектором цвета только черного.

Любая помощь будет отличной!

Я думаю, что это должно работать как

If(is_array($products)){
$check="";
foreach($products as $key => $p){
$substring1 = substr($p['partnum'], 9,2);
$nexttwo = substr($p['partnum'],9,2);
If($check == $substring1){

}else{
If(is_array($products){
Foreach($products as $key => $t){
$substring2 = substr($t['partnum'], 9,2);
$nexttwo2 = substr($t['partnum'],9,2);
If($substring1 != $substring2){
Echo "<li>" . $p['itemname'] . "<ul>";
}else{
If($substring1 == $substring2){
Echo "<li>". $nexttwo2."</li>;
}else{
Echo "</ul>";
}
}
</li>
$check = $substring1;
}
}
}

1 Ответ

0 голосов
/ 03 апреля 2012
$check = '';
$colouris = "";
$sizeis = "";
$first = true;
if(is_array($products)){ 
foreach($products as $key => $p){
    $substring1 = substr($p['partnum'], 0,9);
    $sizeis = substr($p['partnum'],9,4);
    $colouris = substr($p['partnum'],13,2);
if ($substring1 != $check) {

        if (!$first) {
            echo '</select></label>';
        }
        echo '<label>' . $substring1 . '<select>';

        $check = $substring1;
    }
    if(!$sizeis){
        echo '<option>No Options</option>';
    }
    else{


        echo '<option>' . $sizeof . " " . $colourof  .'</option>';
        $first = false;
        $colouris = "";
        $sizeis = "";
    }


 }
}

Размер и цвет переменных задаются из некоторого простого if, elses на substr

if($sizeis === "28SH"){
        $sizeof = "28 Short";
    }
    elseif($sizeis === "30SH"){
        $sizeof = "30 Short";
    }
if($colouris == "YE"){
        $colourof = "Yellow";
    }
    elseif($colouris == "OR"){
        $colourof = "Orange";
    }

e.t.c. e.t.c.

Это дает мне вместо 24 элементов на странице, у меня будет 4 элемента с 6 опциями в выпадающем списке. Варианты выбора будут

Medium Blue
Medium Yellow
Medium Green
2XL Orange
2XL Yellow
2XL Green

Я бы хотел дополнить конструктор избранных, построить 2 выбранных, но сейчас у меня есть все в одном

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...