2012-05-24 50 views
1

我有下表,我試圖顯示總和p_total以及表中的所有其他記錄。我設法顯示總金額,但是如果我顯示它,只顯示錶格第一行的值。儘管p_total的總和正確顯示爲600。Codeigniter:獲取記錄和總額

能否請你告訴我,是我下面的代碼的問題:

感謝提前:)

我的數據庫表:

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'];?> 

回答

4

在你看來:

$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;?> 
1

你錯過GROUP BY條款。

據我瞭解,你想這樣:

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

不熟悉笨,但猜你 「其中」 後需要這一行:

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

感謝您的答覆。如果我使用'$ this-> db-> group_by('p_id');我得到第二行以及第一行,但是這次'sum'顯示正確的值。它顯示第二行的「p_total」值。 ' –

+0

好的,我明白了。你想顯示行然後總計(畢竟行),對吧?我建議將其分成兩個任務:1.獲取行數,2.獲得總和(在PHP中,您已經選擇了所有數據) – scriptin

3

你有一個總的和單獨的列表

$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(); 

//陣列(

[total] => 2759 

[count] => 5