2014-09-10 3 views
-2

Привет Разработчики Я должен распечатать отчет в своем приложении. Я использую codeigniter. У меня такая таблица в моей базе данных.удалить повторяющиеся значения в foreach

Report Detail 
--------------------------------------------------------------------------- 
ID Test_ID  Description Description_Group  Test_Name 
--------------------------------------------------------------------------- 
1 117   value 1   group 1    Test 1 
2 117   value 2   group 1    Test 1 
3  4   another 1  group 2    Test 2 
4  4   another 2  group 2    Test 2 
5  4   another 3  group 2    Test 2 

Я хочу напечатать как этот

desired print format 
    ----------------------------------------------- 
    Description 
    ----------------------------------------------- 
    **Test 1** 
    group 1 
     value 1 
     value 2 

    **Test 2** 
    group 2 
    another 1 
    another 2 
    another 3 

Вот моя модель Codel

public function print_report($Patient_ID, $ID) 
{ 

    $query = $this->db->query('select a.ID, a.Description, a.Description_Group, a.Normal_Range, a.Measure_Unit, 
           b.Result_Value 
           from tbltestdefault a 
           inner join tblreportdetail b on a.ID = b.Test_Default_ID 
           where b.Patient_ID = '.$Patient_ID.' and b.Patient_Test_ID = '.$ID.''); 
    return $query->result_array(); 
} 

Контроллер

public function print_report($ID, $Patient_ID, $Test_ID) 
{ 
    $data['patient'] = $this->Report_Model->getPatientinfo($Patient_ID); 
    $data['testname'] = $this->Report_Model->gettestnameonly($Test_ID); 
    $data['tests'] = $this->Report_Model->print_report($Patient_ID, $ID); 
    $this->load->view('report_view', $data); 
} 

и вид отображения данных

<table class="table table-bordered"> 
     <thead> 
      <tr> 
       <th> <h4>Description</h4> 
       </th> 
       <th> <h4>Result</h4> 
       </th> 
       <th> <h4>Units</h4> 
       </th> 
       <th> <h4>Normal Value</h4> 
       </th> 
      </tr> 
     </thead> 
     <tbody> 
      <?php foreach($tests as $t): ?> 

      <tr> 
       <td> 
        <?php echo $t['Description_Group']; ?> 
        <?php echo $t['Description']; ?> 
       </td> 
       <td><?php echo $t['Result_Value']; ?></td> 
       <td><?php echo $t['Measure_Unit']; ?></td> 
       <td><?php echo $t['Normal_Range']; ?></td> 
      </tr> 
      <?php endforeach; ?> 
     </tbody> 
    </table> 
+1

хорошо, круто. Что вы пытались сделать до сих пор? (мы не собираемся писать ваш код для вас, мы только здесь, чтобы помочь вам понять, почему код ** вы ** не работает) –

+0

Я просто получаю все данные из таблицы с помощью foreach и показываю как это ... –

+1

не говорите мне, что это вы делаете, покажите нам код, который вы использовали, что это дало, и почему вы чувствуете, что это не то, что вы хотели. Отредактировано в ваш пост (не ответили как комментарий) –

ответ

1

человек, я думаю, что вы принимаете этот сайт как само собой разумеющееся .. я уже предоставил вам основной logic.you просто нужно, чтобы развернуть его в зависимости от ваших дополнительных потребностей .. Кстати вот расширенная логика

<?php 
$get_title = ''; 
$get_subtitle = ''; 
foreach($tests as $t) 
{ 
    //if start of new test name 
    if($get_title != $t['Test_Name']) 
    { 
     echo $t['Test_Name']; 

     //if start of new desc group 
     if($get_subtitle != $t['Description_Group']) 
     { 
      echo $t['Description_Group']; 
      echo $t['description']; 
      $get_subtitle = $t['Description_Group']; 
     } 
     //if same desc with previous 
     elseif($get_subtitle == $t['Description_Group']) 
     { 
      echo $t['description']; 
     } 
     $get_title = $t['Test_Name']; 
    } 
    //if same title with previous 
    elseif($get_title == $t['Test_Name']) 
    { 
     //if start of new desc group 
     if($get_subtitle != $t['Description_Group']) 
     { 
      echo $t['Description_Group']; 
      echo $t['description']; 
      $get_subtitle = $t['Description_Group']; 
     } 
     //if same desc with previous 
     elseif($get_subtitle == $t['Description_Group']) 
     { 
      echo $t['description']; 
     } 
    } 
} 

добавьте это в последнюю часть своего запроса sql ORDER BY Test_Name ASC, Description_Group ASC, Описание ASC не уверен, что это сработает, потому что я не пробовал его .. ударил меня некоторыми комментариями, если что-то пошло не так. .cheers

+0

Большое вам спасибо, он работает именно так, я хочу –

+0

рад я мог бы помочь: D –

+0

@ShafatAhmad вы можете принять мой ответ, если это вас удовлетворит .. спасибо: D –