一组复选框选项的多循环条件

时间:2014-12-31 22:08:04

标签: php codeigniter loops checkbox

使用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数组中看到的,我还有其他几个字段。它们是简单的文本输入字段,与循环$i的当前迭代是1:1。

我还有其他2个复选框选项。您必须选择产品系列(上图),然后输入代码和实际脚注文本。然后,您必须选择脚注的 type

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
)

....

了解同一产品系列如何拥有多种脚注类型?对于所选择的每个产品系列,实际记录将/可能完全相同。只有类型可能不同。

我的另一个想法 - 一旦初始循环完成 - 我有一个新创建的脚注的脚注ID,我是否向右转并为每个脚注类型更新数据库? 我在圈子里自言自语......

我的数据库结构如下所示:

DATABASE

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

感谢您的帮助!

1 个答案:

答案 0 :(得分: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);