2015-08-24 3 views
0

Возможно, из названия его похоже, что это дублированный вопрос, но я проверил все остальные вопросы, и никто не похож на мой, моя проблема в том, что у меня есть mysql запрос на Codeigniter так:PHP: Не показывать дублированные результаты запросов MySQL

function getApplication($product_id){ 
     $this->db->from('tapplicationproduct') 
       ->where('nProduct',$product_id) 
       ->join('tapplication','tapplication.nApplication=tapplicationProduct.nApplication'); 

       $query = $this->db->get(); 
       $ret['rows'] = $query->result(); 
       $ret['number'] = $query->num_rows(); 

       return $ret; 
    } 

и вот вид:

<div class="col-md-3">    
    <select name="manufact" onchange="this.form.submit()"> 
    <option value="" selected="selected">Selectioner Constructeur</option> 
    <?php 
     foreach ($app as $row) { 
     $ManName = $Product_model->getManName($row->nManufacturer); 
     echo "<option value='".$row->nSerie."'>".$ManName."</option>"; 
     } 
    ?> 
    </select> 
</div> 

проблема заключается в том, что для некоторых продуктов, которые я получил дублирующиеся записи:

Problem Demonstration

Я пробовал команду mysql GROUP BY, чтобы сгруппировать результаты, но проблема в том, что мне нужно все $row->nSerie, чтобы отфильтровать следующий раздел результатов.

Что я имею в виду, что, когда пользователь нажимает на Constructor второй Selectтег появится с Series соответствующего Constructor

Я сделал это, но я не могу понять, как удалить дублированные записи и сохранить доступ к их $row->nSerie Надеюсь, что я смогу найти помощь по этой проблеме и благодаря каждому заранее.

+0

Вы можете, вероятно, использовать 'DISTINCT', чтобы получить уникальные данные. – Rahul

+0

^или вы можете использовать GROUP BY –

+0

@SariRahal, но это не может решить мою проблему. –

ответ

0

решение Ths является использование функции array_unique() PHP, так как результаты MySQL, возвращаемые запросом является массивом, то мы можем использовать array_unique() устранить дублированные значения следующим образом:

<select name="manufact" onchange="this.form.submit()"> 
<option value="" selected="selected">Selectioner Constructeur</option> 
<?php 
    $apps = array_unique($app); 
    foreach ($apps as $row) { 
    $ManName = $Product_model->getManName($row->nManufacturer); 
    echo "<option value='".$row->nSerie."'>".$ManName."</option>"; 
    } 
?> 
</select> 

А потом хранить ключи, которые собираются быть во втором погладить формы, как так:

foreach ($app as $row) { 
    echo "<input name='napp[]' value='".$row->nApplication."' type='hidden'>"; 
} 

Теперь, когда form является SUBM itted вы можете nappМассив в Where состояния MySQL запроса

1

Вы можете использовать Distinct до get().

function getApplication($product_id){ 
     $this->db->from('tapplicationproduct') 
       ->where('nProduct',$product_id) 
       ->join('tapplication','tapplication.nApplication=tapplicationProduct.nApplication'); 
       $this->db->distinct(); 
       $query = $this->db->get(); 
       $ret['rows'] = $query->result(); 
       $ret['number'] = $query->num_rows(); 

       return $ret; 
    } 
+0

и как я могу получить доступ к nSerie каждого экземпляра? –

+0

Ничего не изменилось при добавлении этой строки –

+0

, возможно, потому что это не те же результаты в строке, вы можете использовать 'groupBy nManufacturer' – LTasty

Смежные вопросы