2014-12-31 2 views
0

Используя CodeIgniter, я создаю административную область, где я могу создавать сноски для любой данной линейки продуктов.Множественные условия цикла для набора флажков

HTML

<p>Choose Product Line</p> 
<label><input type="checkbox" name="productline[]" value="1" />Product One</label> 
<label><input type="checkbox" name="productline[]" value="2" />Product Two</label> 
<label><input type="checkbox" name="productline[]" value="3" />Product Three</label> 
<label><input type="checkbox" name="productline[]" value="4" />Product Four</label> 

PHP

for ($i = 0; $i < count($this->input->post('product[]')); $i++) 
{ 
    $line__id = $this->input->post('product')[$i]; 

    $footnote_data = array(
     'line__id' => $line__id, 
     'code' => $this->input->post('footnotecode'), 
     'text' => $this->input->post('footnotetext'), 
     'status' => $this->input->post('status'), 
     'createdon' => date('Y-m-d H:i:s') 
    ); 

    error_log(print_r($footnote_data, true)); 
} 

Какой будет что-то вроде этого:

LOG:

Array 
(
    [line__id] => 1 
    [code] => ABC123 
    [text] => Hello World 
    [status] => 1 
    [createdon] => 2014-12-31 22:28:59 
) 

Array 
(
    [line__id] => 2 
    [code] => ABC123 
    [text] => Hello World 
    [status] => 1 
    [createdon] => 2014-12-31 22:28:59 
) 
.... 

Все в порядке, я просматриваю каждую линейку продуктов, которая была выбрана.

Как вы можете видеть в массиве $footnote_data, у меня есть несколько других полей. Это простые текстовые поля ввода и 1: 1 с текущей итерацией цикла $i.

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

HTML

<p>Footnote Type</p> 
<label><input type="checkbox" name="footnotetype[]" value="awesome" />Awesome</label> 
<label><input type="checkbox" name="footnotetype[]" value="cool" />Cool</label> 
<label><input type="checkbox" name="footnotetype[]" value="average" />Average</label> 

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

Я пробовал вложенную петлю в пределах основного цикла товарной линии, но я не получил результат (ы), который я искал. Если я вхожу результат я ищу, это то, что это будет выглядеть так:

ВЫХОДА

Array 
(
    [line__id] => 2 
    [type] => Awesome 
    [code] => ABC123 
    [text] => Hello World 
    [status] => 1 
    [createdon] => 2014-12-31 22:28:59 
) 

Array 
(
    [line__id] => 2 
    [type] => Cool 
    [code] => ABC123 
    [text] => Hello World 
    [status] => 1 
    [createdon] => 2014-12-31 22:28:59 
) 

Array 
(
    [line__id] => 3 
    [type] => Average 
    [code] => ABC123 
    [text] => Hello World 
    [status] => 1 
    [createdon] => 2014-12-31 22:28:59 
) 

.... 

Посмотрите, как та же линия продукт может иметь несколько типов сносок? Фактическая запись будет/может быть одинаковой для каждой выбранной линейки продуктов. Только тип может отличаться.

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

Моя структура БД выглядит следующим образом:

DATABASE

footnote_id 
type_id // this is the question 
text 
code 
status 
createdon 

Спасибо за вашу помощь!

ответ

0

Я не проверял код, так что, может быть, есть ошибка где-то:

$products_data = array(); 
foreach ($this->input->post('product')) as $product_id) 
{ 
    $footnote_data = array(
     'line__id' => $product_id, 
     'code' => $this->input->post('footnotecode'), 
     'text' => $this->input->post('footnotetext'), 
     'status' => $this->input->post('status'), 
     'createdon' => date('Y-m-d H:i:s') 
    ); 

    foreach($this->input->post('footnotetype') as $type){ 
     $footnote_data['type'] = $type; 
     array_push($products_data, $footnote_data); 
    } 

    // error_log(print_r($footnote_data, true)); 
} 
var_dump($products_data); 
+0

Спасибо так много! Это именно толкание, которое мне нужно было сделать. – Damon

+0

Рад, что я мог бы помочь ^^ –

Смежные вопросы