mysql - 将两个输入转换为单个数组以输入到 db codeigniter

标签 mysql arrays codeigniter user-input

我正忙于创建一个网页,该网页向客户发出图纸并创建发送给客户的收据。我遇到问题的部分是选择要添加到收据中的图纸并更改修订版本。

图纸信息分为两个表。第一个包含图纸编号、标题、绘制者等,第二个仅包含修订历史记录。这些表通过图纸 ID 链接。

要发布图纸,用户必须勾选复选框并更改他想要发布的图纸的修订版本。

我想将其输入数据库,但我不知道如何创建数组。目前我的 Controller 获取所有下拉输入和仅勾选的复选框。我只希望数据库更新与所选复选框关联的下拉输入。

这是我的观点。

<h1>Issue drawing</h1>
<br>

<div id="body">
<div class="row">
        <div class="form-group-sm"><lable class="col-sm-2 control-label">Project number:</lable>
    <?php
        $js = 'onchange="this.form.submit()" class="form-control" id="focusInput"';
        echo form_open('dwg_issue/issue_dwg');
        echo "<div class=\"col-xs-2\">" . form_dropdown('project_no',$proj_num, $this->input->post('project_no'), $js)."</div>";
        echo form_error('project_no', '<div class="col-xs-4"><div class="alert alert-danger fade in"><a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>','</div></div>');
    ?>
        </div>
        </div>

        <?php
            echo "<noscript>".form_submit('submit','Submit')."</noscript>";
            echo form_close();
        ?>
    <form action="<?php echo base_url() . 'index.php/dwg_issue/issue'; ?>" method="post" accept-charset="utf-8" id="issue">

        <table title="Client information" class="table table-hover">
            <caption><b>List of drawings</b></caption>
        <thead>
            <tr><th>Project number</th><th>Drawing number</th><th>Client drawing number</th>
                <th>Title</th><th>Drawn by</th><th>Revision</th><th>Drawn Date</th><th>Select</th>
        </thead>    
        <tbody> &nbsp;
        <?php

//          var_dump($client_info);
            if(!empty($result))
            {
                foreach($result as $row)
                { 
                    echo "<tr>";
                    echo "<td>" . $row->project_no . "</td>";
                    echo "<td>" . $row->sws_dwg_no . "</td>";
                    echo "<td>" . $row->client_dwg_no . "</td>";
                    echo "<td>" . $row->dwg_title . "</td>";
                    echo "<td>" . $row->dwg_by . "</td>";
                    $rev = array('0' => $row->dwg_rev);
                    $rev_change = array(
                        'B' => 'B',
                        'C' => 'C',
                        'D' => 'D',
                        'E' => 'E'                  
                        );
                    $dropdown = array_merge($rev,$rev_change);

                    echo "<td>" . form_dropdown('dwg_rev['.$row->dwg_id.']',$dropdown) . "</td>";
                    echo "<td>" . date('Y/m/d', strtotime($row->dwg_date)) . "</td>"; 
                    echo "<td>" . form_checkbox('select['.$row->dwg_id.']',$row->dwg_id) . "</td>"; 
                    echo "</tr>";
                }
            }

        ?>
        </tbody>
       </table>

       <div class="row">
       <div class="col-xs-12 col-md-10">Please select client distribution here with other options</div>
        <?php
        echo "<div class=\"col-xs-6 col-md-2\"><button class=\"btn btn-md btn-primary btn-block\" type=\"submit\" form=\"issue\">Issue drawings</button></div>";
        ?>
        </div>
        <br>


        <?php
        echo form_close();
        ?>

</div>

我的 Controller

public function issue_dwg()
{
    $data['proj_num'] = $this->model_proj->proj_num_all();
    if ($this->input->post('project_no') != '0')
    {
        $data['result'] = $this->model_issue->list_dwg($this->input->post('project_no'));
    }

    $data['main_content'] = 'issue_view';
    $this->load->view('includes/template.php', $data);


}

//This function takes the selected drawings and create and issue slip
public function issue()
{
    $rows = array();

    $num_results = count($this->input->post('select'));
    for($i = 0; $i < $num_results; $i++)
    {
        $rows[$i]['select'] = $_POST['select'][$i];
        $rows[$i]['dwg_rev'] = $_POST['dwg_rev'][$i];
    }



}

issue_dwg() 函数使用绘图编号填充下拉列表,并使用数据库结果填充 View 。

issue()函数需要处理发布的信息并将其转换为数组传递给数据库。

(我想添加 View 页面的图像,但我没有足够的声誉来做到这一点)

最佳答案

当您解析表单时,您需要构建输入,以便在提交表单时最终得到关联数组:

目前您有以下内容:

//...
echo form_dropdown('dwg_rev['.$row->dwg_id.']',$dropdown);
echo form_checkbox('select['.$row->dwg_id.']',$row->dwg_id);
//...

提交后,会发送以下post数组:

"select" (array)[
   0 => "some select value",
   1 => "some select value"
],
"dwg_rev" (array)[
   0 => "some dwg_rev value",
   1 => "some dwg_rev value"
]
<小时/>

解决方案:

像这样构造你的表单:

//...
echo form_dropdown('result['.$row->dwg_id.'][dwg_rev]',$dropdown);
echo form_checkbox('result['.$row->dwg_id.'][select]',$row->dwg_id);
//...

这样,你最终会得到一个这样的数组:

"result"[
   0 => [
      "select" => "some select value",
      "dwg_rev" => "some dwg_rev value"
    ]
   1 => [
      "select" => "some select value",
      "dwg_rev" => "some dwg_rev value"
    ]
]

现在您可以轻松地在 Controller 中使用 foreach 进行迭代。

关于mysql - 将两个输入转换为单个数组以输入到 db codeigniter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231134/

相关文章:

mysql - 点燃表 |对 Group Concat 进行过滤会出现错误

php - 如何从 CodeIgniter Controller 中转储 var_dump

Python - MySQL - 'http://www.......................' 中的未知列 'field list'

mysql - 如何加快该查询(子选择)的执行速度?

php - WordPress 提取数据库信息并将其显示到页面中

Mysql - 更新时间戳

java - 在 Java 中将对象添加到数组中

ruby-on-rails - 从 Ruby 中的数组中删除重复元素

javascript - 当对象包含值时重新排序对象数组

java - 如何在 Java 客户端和 CodeIgniter 服务器之间安全地通信?