如何使用table1中的该操作减少table2中的值(Codeigniter)

时间:2017-09-16 06:24:31

标签: php mysql database codeigniter

现在我正在尝试使用table1中的该操作减少table2中的值。

这是table1结构:

  1. id_data_inserted
  2. 日期
  3. id_data
  4. amount_of_inserted
  5. id_room
  6. table2结构:

    1. id_data
    2. DATA_NAME
    3. 规范
    4. 金额
    5. 这个问题是here

      的第2部分

      这是来自table1(view table1)的GUI:

      enter image description here

      这里是table2(view table2)的GUI:

      enter image description here

      当我从table1输入数据时,我已经尝试增加table2中的amount值。例如,在开始时,table2中的所有数据都具有金额值= 0但是如果我想增加table2中的金额值,我们需要来自table1的输入数据并输入amount_of_inserted。这个意思, 如果我从table1插入数据,其值为amount_of_inserted = 1,则table2中的金额值现在变为1,因为它已增加,它已经解决了。但是,如果我单击GUI table1中的删除按钮,现在我想尝试减少table2中的金额值,例如,如果table2中的金额值= 1(因为它已经插入到table1中,金额值= 1)然后,如果我删除table1中的这一行,table2中的金额值将减少,现在table2的金额值= 0。

      这是我的代码:

      My_Data.php(控制器)

      <?php
      class My_Data extends CI_Controller
      {
         public function delete_datatable1($id)
         {
            $where = array('id_data_inserted' => $id);
            $this->my_model->delete_data($where, 'table1');
            $this->my_model->decrease_value($where);
            redirect('admin\data\my_data\view_table1');
         }
      
         public function view_table1()
         {
            $data['table1'] = $this->my_model->view_data('table1')->result();
            $this->load->view('admin/data/v_table1', $data);
         }
      }
      

      My_Model.php(型号)

      <?php
      class My_Model extends CI_Model
      {
         public function view_data($table)
         {
            return $this->db->get($table);
         }
      
         public function delete_data($where, $table)
         {
            $this->db->where($where);
            $this->db->delete($table);
         }
      
         public function decrease_value($id)
         {
            $qry1 = $this->db->query("select id_data from table1 where 
            id_data_inserted = '$id'");
            $qry2 = $this->db->query("select amount_of_inserted from 
            table1 where id_data_inserted = '$id'");
            $qry3 = $this->db->query("update table2 set amount = amount - 
            '$qry2' where id_data = '$qry1'");
            return $qry3;
         }
      }
      

      v_table1(查看)

              <tbody>
                  <?php
                  foreach($table1 as $tdata)
                  {?>
                      <tr>
                          <td><?php echo $tdata->id_data_inserted ?></td>
                          <td><?php echo $tdata->date ?></td>
                          <td><?php echo $tdata->id_data ?></td>
                          <td><?php echo $tdata->amount_of_inserted ?></td>
                          <td><?php echo $tdata->id_room ?></td>
                          <td>
                              <?php echo anchor('admin\Data\my_data/edit_data/'.$tdata->id_data_inserted, 'Edit'); ?>
                              <span>|</span>
                              <?php echo anchor('admin\Data\my_data/delete_datatable1/'.$tdata->id_data_inserted, 'Delete'); ?>
                          </td>
                      </tr>
                  <?php } ?>
              </tbody>
      

      但不起作用,如果我删除table1中的数据行,则table2中的金额值不会减少。

      任何解决方案?

1 个答案:

答案 0 :(得分:1)

我认为你错过了一些东西。据我所知,您正在检查查询而不是其值。因此,数据库中的数据不会作为查询存在,因此没有发生任何变化。试着获得它的价值

例如:

    $query = $this->db->query("SELECT * FROM users LIMIT 1;");

    $`row = $query->row(0, 'User');`

    echo $row->name; // access attributes

    echo $row->reverse_name(); // or methods defined on the 'User' class`:

我已将您的代码重写为:

    $this->db->select('id_data,amount_of_inserted')
    ->where('id_data_inserted',$id);
$query=$this->db->get('table1');
foreach($query->result_array() as $row){
    $id_data = $row['id_data'];
    $amount_of_inserted = $row['amount_of_inserted'];
}

$qry3 = $this->db->query("update table2 set amount = amount - 
      '$amount_of_inserted' where id_data = '$id_data'");