2017-12-30 33 views
0

私はCodeigniterで新しく、何か助けが必要です。Codeigniter:countデータベースから取得したビューの行の総数。

テーブルにいくつかの列を表示したいとします。また、テーブルに表示されている行の総数を数えたいとします。私はいくつかの方法を試しましたが、これが正しい方法であるか、これを行うための他のよりよい方法があるなら、あなたが私を助けてくれますか?

私のモデル

 
public function getRentedEquipments($project_id=0){ 

     return $this->db->select('e.*, p.project_id') 
        ->from('equipment AS e') 
        ->join('project AS p', 'p.project_id = e.project_id') 
        ->where('p.project_id', $project_id) 
        ->order_by('eq_name','ASC') 
        ->get()->result_array(); 
} 

マイビュー

 



         
 
<tbody> 
 

 
<?php 
 

 
$total_eq=0; 
 
    $count=1; 
 
    foreach ($pr_eq as $row) { 
 
?> 
 

 
<tr> 
 
     <th scope="row"><?php echo $count;?></th> 
 
     <th scope="row"><?php echo $row['eq_id'];?> </th> 
 
     <th scope="row"><?php echo $row['eq_name'];?> </th> 
 

 
    <?php 
 
$total_eq+=$row['eq_id']-1; 
 
    $count=$count+1; 
 
    } 
 

 
?> 
 
<button class="btn btn-info"> Number of Equipments: <?php echo $total_eq;?></button> 
 
    </tbody>

画像リンクで私の出力、

出力が正しく表示され、すぐに任意のより良い方法があるかどうかを知りたいですこれを行う enter image description here

答えて

1

imホそのように、あなたのアイテムをカウントする必要がない - > result_array() - ちょうどこの

<tbody> 
<?php 
foreach ($pr_eq as $row) 
{ 
?> 

<tr> 
     <th scope="row"><?php echo $count;?></th> 
     <th scope="row"><?php echo $row['eq_id'];?> </th> 
     <th scope="row"><?php echo $row['eq_name'];?> </th> 
</tr> 
<?php 
} 
?> 
</tbody> 
<button class="btn btn-info"> Number of Equipments: <?= count($pr_eq);?></button> 
0

を試してみてください私たちは、この場合には行き過ぎである配列(上のいくつかのチェックに追加するステップをさらにこれを取ることができますモデルでは常に配列を返します)、PHPのif()を使います。 endif;組み込みHTMLでより読みやすくできる機能

<?php 
// If we have an array get the count, else its 0 
$equipment_count = is_array($pr_eq) ? count($pr_eq) : 0; 

// If we have a count > 0 , it must be an array 
if ($equipment_count > 0): ?> 
    <tbody> 
    <?php foreach ($pr_eq as $row): ?> 
     <tr> 
      <th scope="row"><?php echo $count; ?></th> 
      <th scope="row"><?php echo $row['eq_id']; ?> </th> 
      <th scope="row"><?php echo $row['eq_name']; ?> </th> 
     </tr> 
    <?php endforeach; ?> 
    </tbody> 
<?php endif; ?> 
<button class="btn btn-info"> Number of Equipments: <?= $equipment_count; ?></button> 

技術的には、0カウントの配列を持つことができますが、これはforeachの実行に失敗し、とにかく実行されます。すべてが安全と思われるように。

私はあなたの<tbody>タグを条件付きの中に入れました。外に出なければならない場合は、それに合わせて修正することができます。

+1

あなたは正しいかもしれませんが、Codeignitersの 'result_array'メソッドは常に配列を返すので、この場合はチェックする必要はありません - 結果がない場合は空の配列を返します – sintakonte

関連する問題