mysql - 更新使用单个查询连接的两个表

标签 mysql codeigniter-3

这是我的两个表,即 bills 和 Product_list。

product_list 表看起来像这样

id    bill_id       description               quantity          amount

19      18      ["item1","item2","item3"]   ["2","1","2"]   ["100","100","150"]

账单表看起来像这样..

id  invoice_no      pp_no       

18  JED00018         34533  

Controller 看起来像这样..

    function edit_bill($id)
    {
    var_dump($id);
    $this->form_validation->set_rules('pp_no',Number','required');
    if($this->form_validation->run()==true)
    {
        $data=array('pp_no'=>$this->input->post('pp_no'));
        if($this->Bills_model->bill_update($id,$data))
        {
            $this->session->set_flashdata('success_msg','Bills Updated successfully.');
            redirect('bills.html');

        }
    }
    $data['result']=$this->Bills_model->view_bill_by_id($id);
    $data['search_url'] = 'bills.html';
    $data['active'] = 'bill';
    $data['module'] = 'admin/edit_bill';
    $this->load->view('admin/master',$data);

}

模型看起来像

function bill_update($id,$data)
{

        $this->db->join('product_list','product_list.bill_id=bills.id');
        $this->db->where('bills.id',$id);
        $this->db->update('bills',$data);

        $data['description']=$this->input->post('description',true);
        $description=json_encode($data['description']);
        $data['quantity']=$this->input->post('quantity',true);
        $quantity=json_encode($data['quantity']);
        $amount=json_encode($this->input->post('amount',true));
        $data2=array('description'=>$description,'quantity'=>$quantity,'amount'=>$amount);
        $this->db->join('bills','bills.id=product_list.bill_id');
        $this->db->where('product_list.bill_id',$id);
        $this->db->update('product_list',$data2);

       if($this->db->affected_rows() != 0 )
        {
            return TRUE;
        }  
        else
       {
           return FALSE;
       }
 }

我的 View 表单如下所示

  <form class="form-horizontal" method="post" action="<?php echo base_url(); ?>bills/edit_bill/<?php echo $result->id; ?>">
  <div class="clearfix"></div>
  <div class="form-group">

     <label for="pp_no" class="col-sm-2 control-label">PP NO/ID</label>
     <?php echo form_error('pp_no'); ?>
     <div class="col-sm-3" style="padding-top:5px;">
     <input type="text" class="form-control"  name="pp_no" id="pp_no" value="<?php echo $result->pp_no;?>" >
    <input type="hidden" name="id" value="<?php echo $result->id;?>">
      </div>
     </div>

      <table id="items">

       <tr>
          <th>Item No</th>
          <th>Description</th>
          <th>Amount</th>
          <th>Quantity</th>
          <th>Total</th>
       </tr>

         <?php $description=json_decode($result->description)?>
         <?php $amount=json_decode($result->amount)?>
         <?php $quantity=json_decode($result->quantity);?>


    <?php foreach($description as $index => $row){
           ?>

  <tr class="item-row">

      <td class="item-no"><div class="delete-wpr"><textarea class="textarea"></textarea><a class="delete" href="javascript:;" title="Remove row">X</a></div></td>
      <td class="description"><textarea class="textarea" name="description[]"><?php echo $row;?></textarea></td>
      <td><textarea name="amount[]" class="cost textarea"><?php echo $amount[$index];?></textarea></td>
      <td><textarea name="quantity[]" class="qty textarea"> <?php echo $quantity[$index];?></textarea></td>
      <td><span class="price"></span></td>
  </tr>
  <?php }?>
 </table>
   <div class="form-group">
  <div class="col-sm-offset-2 col-sm-10">
  <input type="hidden" name="id" value="<?php echo $result->id;?>">

  <button type="submit" class="btn btn-primary" style="margin-top: 20px;" >Save</button>
 </div>
 </div>
 </form>

在这里,当我更新任何字段并提交时,它会像这样 localhost/edit_bill/19 一样转到 Product_list 的 id,并且不知道为什么会这样。

最佳答案

it's going to the id of product_list like this localhost/edit_bill/19 and don't have any idea why it's going like this.

因为你告诉它!

<form class="form-horizontal" method="post" action="<?php echo base_url(); ?>bills/edit_bill/<?php echo $result->id; ?>">

只要松开将 id 添加到 URL 的部分即可!于是就变成了……

<form class="form-horizontal" method="post" action="<?php echo base_url();?>bills/edit_bill">

您已经在表单中“发布”了 ID...

<input type="hidden" name="id" value="<?php echo $result->id;?>">

关于mysql - 更新使用单个查询连接的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40542341/

相关文章:

pdo - 如何在 Codeigniter 中将属性设置为 PDO 连接

php - 连接到 codeigniter 中的另一个数据库并插入

php - Codeigniter 3 索引方法行为异常

php - codeigniter flashdata 成功消息返回失败

python - 插入mysql数据库时间戳

php - 解码 Json 数据数组并插入到 mysql

php - 准备语句连接错误: No such file or directory

mysql - 在 MySQL 中启用 InnoDB

javascript - 下拉 JQuery 在没有主页的情况下无法工作

mysql - 无法在内部查询中使用外部查询的列