【问题标题】:Codeigniter: fetching records and sumCodeigniter:获取记录和总和
【发布时间】:2012-05-24 19:45:53
【问题描述】:

我有下表,我正在尝试显示p_total 的总和以及表中的所有其他记录。我已经设法显示了总金额,但如果我显示它,只会显示表格第一行的值。虽然 p_total 的总和正确显示为 600 。

您能否告诉我下面代码中的问题在哪里:

提前致谢:)

我的数据库表:

 p_id   p_name    p_quantity    p_rate   p_total       user_id
  1     Pepsi        12           30       360            1
  2     Hot Breads   12           20       240            1

我的模型中有以下代码

$this->db->select('*,SUM(temporary_table.p_total AS Total');
$this->db->from('temporary_table');
$this->db->where('user_id',$user_id);                                   
$getData = $this->db->get('');

if($getData->num_rows() > 0) {
   return $getData->result_array();
}

else { 
   return null;
}

这是我的控制器:

$this->load->model('mod_sales');
$data['records']= $this->mod_sales->add_to_temporary_table($user_id);

我的观点:

 foreach ($records as $row)
 {   
   <td><?php echo $row['p_name'];?></td>
   <td><?php echo $row['p_quantity'];?></td>
   <td><?php echo $row['p_rate'];?></td>
   <td><?php echo $row['p_total'];?></td>
 }

<?php echo $row['Total'];?>

【问题讨论】:

    标签: codeigniter codeigniter-2


    【解决方案1】:

    您有一个完整的单独列表。

    $this->db->select_sum('total_price');
    $this->db->from('order');
    $this->db->where('dates BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW() ');
    $query=$this->db->get();
    $data['total']=$query->row()->total_price;
    
    $this->db->select('*');
    $this->db->from('order');
    $this->db->where('dates BETWEEN DATE_ADD(NOW(), INTERVAL -7 DAY) AND NOW()');
    $query=$this->db->get();
    $data['count']=$query->num_rows();
    

    输出:

     Array ( 
    
     [total] => 2759 
    
     [count] => 5 
    
    )
    

    【讨论】:

      【解决方案2】:

      在你看来:

      $total_sum=0;
      
      foreach ($records as $row){
      
       <td><?php echo $row['p_name'];?></td>
       <td><?php echo $row['p_quantity'];?></td>
       <td><?php echo $row['p_rate'];?></td>
       <td><?php echo $row['p_total'];?></td>
      
       $total_sum+=$row['p_total'];
      }
      
      <?php echo $total_sum;?>
      

      【讨论】:

      • 使用foreach不是很好的解决方案,尝试从mysql查询中提取结果。
      【解决方案3】:

      您缺少GROUP BY 子句。

      据我了解,您想要这个:

      SELECT *, SUM(p_total) FROM temporary_table WHERE user_id = ... GROUP BY p_id
      

      不熟悉CodeIgniter,但猜想你需要在“where”后面这行:

      $this->db->group_by('p_id');
      

      【讨论】:

      • 感谢您的回复。如果我使用 $this-&gt;db-&gt;group_by('p_id'); I get the second row as well as the first row but this time the sum` 显示正确的值。它显示第二行的p_total 值。 `
      • 好的,我明白了。您想显示行然后总计(在所有行之后),对吗?我建议将其分为两个任务:1. 获取行,2. 获取总和(在 php 中,您已经选择了所有数据)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多