在 PHP CodeIgniter foreach 循环中从数据库中提取和更新数据

Pull and update data from database in PHP CodeIgniter foreach loop

我有一个视图,其中包含通过 foreach 循环从数据库中显示的数据,我想要获取从视图中编辑的数据并在数据库中逐一更新它,但问题是如果有 where 子句,该数据库将被更新,但在我的情况下,我不知道如何从视图获取密钥(tid)到控制器这里是显示数据的控制器功能

public function bulk()
{

    $pid = '';
    if($this->input->post('pid'))
        $pid = $this->input->post('pid');


    $template['menu'] = $this->shared_model->get_flightmenus();

    if($pid == '')
    {
        if($this->uri->segment(3))
            $pid = $this->uri->segment(3);
        else
            $pid = $template['menu'][0]['tid'];
    }

    $template['pid'] = $pid;

    // echo $pid;
    // exit();

    $template['airline'] = $this->shared_model->get_records('eat_airline');
    $template['terminal'] = $this->shared_model->get_records('eat_terminal');

    $template['data'] = $this->shared_model->get_recordbyvalue('eat_flight','menu_tid = '.$pid);

    $template['main_content'] = $this->load->view('flight/flight_bulk_view', $template, true);
    $this->load->view('includes/template', $template);



}

这里是风景

    <h4><?php echo anchor('login/logout', 'Logout'); ?></h4>
<?php echo anchor('/home', 'Home'); ?>/Flights
<h2>Flights</h2>
    <div>
    <?php echo form_open('/flight/') ?>
    <?php foreach($menu as $row){ $options[$row['tid']] = $row['m_name']; } ?>
    <?php $js = 'name="pid" id="pid" onChange="this.form.submit();"'; ?>
    <?php echo form_dropdown('pid', $options, $pid, $js); ?>
    <?php echo form_close(); ?>
    </div>
<?php echo anchor('/flight/display/1/0/'.$pid, 'Create'); ?>
<?php echo anchor('flight/bulk', 'Bulk Update'); ?>
<table>
    <tr>
        <td>
            Name
        </td>
        <td>
            Airline
        </td>
        <td>
            From
        </td>
        <td>
            Stopover
        </td>
        <td>
            Destination
        </td>
        <td>
            Price
        </td>
        <td>
            Unit
        </td>
        <td>
            Tax
        </td>
        <td>
            Protection
        </td>
        <td>
            Fare
        </td>
        <td>
            Week Offer
        </td>
        <td>
            Menu
        </td>
        <td>
            Sort
        </td>
        <td>
            Edit
        </td>
        <td>
            Delete
        </td>
    </tr>
    <?php foreach($data as $row){ ?>
    <tr>
        <td>
            <?php echo $row['f_name'] ?>
        </td>
        <td>
            <?php $options1[0] = ''; foreach($airline as $row1){ $options[$row1['tid']] = $row1['a_name']; } ?>
            <?php echo $options[$row['airline_tid']]; ?>
        </td>
        <td>
            <?php $options1[0] = ''; foreach($terminal as $row1){ $options[$row1['tid']] = $row1['t_name']; } ?>
            <?php echo $options[$row['terminal_from_tid']]; ?>
        </td>
        <td>
            <?php echo $row['t_stopover'] ?>
        </td>
        <td>
            <?php $options1[0] = ''; foreach($terminal as $row1){ $options[$row1['tid']] = $row1['t_name']; } ?>
            <?php echo $options[$row['terminal_destination_tid']]; ?>
        </td>

        <td>
            <?php echo $row['f_price'] ?>
        </td>
        <td>
            <?php echo $row['f_unit'] ?>
        </td>
        <td>
            <?php if($row['f_tax']>0) echo  'Yes'; else echo 'No'; ?>
        </td>
        <td>
            <?php echo $row['f_protection'] ?>
        </td>
        <td>
            <?php echo $row['f_fare'] ?>
        </td>
        <td>
            <?php if($row['f_weekoffer']>0) echo  'Yes'; else echo 'No'; ?>
        </td>
        <!--
        <td>
            <?php $options[0] = ''; foreach($menu as $row1){ $options[$row1['tid']] = $row1['m_name']; } ?>
            <?php echo $options[$row['menu_tid']]; ?>
        </td>
        -->
        <td>
            <?php echo $row['sortindex'] ?>
        </td>
        <td>
            <?php echo anchor('flight/display/2/'.$row['tid'].'/'.$pid, 'Edit'); ?>
        </td>
        <td>
            <?php echo anchor('flight/display/3/'.$row['tid'].'/'.$pid, 'Delete'); ?>
        </td>
    </tr>
    <?php } ?>
</table>

我无法想出如何完成的逻辑

any help will be appreciated

您正在逐行从数据库中获取值。数据库中的每一行都有一个唯一的 ID(希望如此)。这是 WHERE 子句的主要标准。

我在你的 HTML 中没有看到任何输入,所以我不太明白你是如何保存数据的,但你可以在每一行中做一个隐藏的输入,比如 <input type="hidden" id="[your_row_id_from_DB]" /> 或者如果您每行有多个输入 - 添加一个名称并附加 id,例如 <input type="text" name="flight_your_row_id" /> 。这样你就可以解析你的名字并知道提交了哪些值。

我能看到的是您想将数据从视图传递到控制器,您可以通过将数据传递到 url 然后从控制器使用它以供将来使用。