簡體   English   中英

如何在codeigniter中使用兩個不同的表只顯示一次數據

[英]How to display data only once by using two different tables in codeigniter

我正在准備注冊從日期到至今的輸入...顯示用戶從日期和至今所做的條目...我想顯示憑證編號、賬單日期、數量、金額(出現在購買賬單表中)和產品名稱(存在於purchaseitem 表中)我想根據帳單在同一行打印產品名稱..(為此我使用組連接)...我的問題是所有數據都顯示多次..我不知道我的代碼中的錯誤在哪里..必須對我的代碼進行哪些更改才能僅顯示一次數據..下面我附上了我的代碼..幫幫我

控制器代碼:

$this->db->where('date >=', $newDate);
        $this->db->where('date <=', $newDate2);
        $this->db->select('*');
        $this->db->from('purchasebill');
        $this->db->order_by("voucherno", "asc");
        $this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
        $this->db->select('GROUP_CONCAT(Prdtname)as itemname',false);
        $this->db->order_by('vno','asc');
        $this->db->group_by('vno,billno');
    $this->db->from('purchaseitem');


    $query = $this->db->get('')->result_array();    
    $data ['query']= $query;

查看代碼:

  <?php $rowcount = 1 ?>                            
                                <?php foreach ($query as $row): ?>

                                        <tr>
                                            <td><?=$rowcount;?></td>
                                            <td><?=$row['voucherno'];?></td>
                                            <td><?=$row['date'];?></td>
                                            <td><?=$row['PName'];?></td>
                                            <td><?=$row['sqty'];?></td>
                                            <td><?=$row['billtot'];?></td>
                                            <td><?=$row['itemname'];?></td>
                                            <?php $rowcount +=1?>
                                            <br>
                                            <?php endforeach ?> 
                                        </tr>

我認為數據打印多次,因為我使用了兩個查詢,但傳遞了相同的變量 $data..是否有可能在同一視圖頁面上加載多個查詢結果..???

$this->db->where('date >=', $newDate);
    $this->db->where('date <=', $newDate2);
    $this->db->select('purchasebill.*,GROUP_CONCAT(parmaster.Prdtname)as itemname');
    $this->db->from('purchasebill');
    $this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
    $this->db->order_by('vno','asc');
    $this->db->group_by('vno,billno');


$query = $this->db->get()->result_array();    
$data ['query']= $query;

是的,您可以執行不同的查詢並將它們分別傳遞給視圖:

$this->db->select('*');
$this->db->from('purchasebill');
$this->db->where('date >=', $newDate);
$this->db->where('date <=', $newDate2);
$this->db->order_by("voucherno", "asc");
$this->db->join('parmaster','parmaster.Pcode = purchasebill.partyname','left outer');
$query1 = $this->db->get()->result_array();

$this->db->select('GROUP_CONCAT(Prdtname) AS itemname',false);
$this->db->order_by('vno','asc');
$this->db->group_by('vno,billno');
$this->db->from('purchaseitem');
$query2 = $this->db->get()->result_array();  

$data['bills']= $query1;
$data['items']= $query2;

$this->load->view('your_view_path', $data);

然后在您的視圖中,您可以訪問$bills$items的數據。 我的建議是,您可以隨意創建一個查詢,以獲取您的所有信息。

這是我的控制器:-

public function order_info()
{
    $this->load->model('customize_model');
   $data['user'] = $this->customize_model->order_info();
   $data['product']=$this->customize_model->order_info();
   $data['sale'] = $this->customize_model->order_info();
    $this->load->view('custom/order',$data);
}

這是我的模態:-

 public function order_info()
{
  $query = $this->db->query("SELECT *
    FROM user
    JOIN product
    ON user.user_id = product.product_id 
    JOIN sale
    ON user.user_id = sale.buyer
    ORDER BY user_id DESC LIMIT 100;
    ");   
    return $query;
}

這是視圖:-

<?php foreach($sale->result() as $row)
   {
      $order_id = $row->sale_id;                                 
      $grand_total = $row->grand_total;
      $status = $row->status;
  ?>
      <tr>     
         <td><?php echo $order_id;?></td>
         <td><?php echo $username;?></td>
         <td><?php echo $productname?></td>
         <td><?php echo $grand_total;?></td>
         <td><?php echo $status;?></td>     
       </tr> 
       <?php 
         foreach($user->result() as $row1)
         {
          $username = $row1->username;  
          foreach($product->result() as $row2)
          {
            $productname = $row2->title;                                  
           }
          }
        }
     ?>   

在我看來,我被困在單個表中顯示記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM