Помогите убрать дублирование элемента

Dark Angel

BinaryWebDev
Регистрация
5 Апр 2006
Сообщения
671
Реакции
113
Добрый день у меня при выводе элементов внизу

Для просмотра ссылки Войди или Зарегистрируйся справа последний дублируется элемент , как убрать что бы его не выводило вот код отвечающий за его комманду

PHP:
$aData['companies'] = $this->db->select("SELECT I.*,IL.title FROM bff_items I
            INNER JOIN bff_items_lang IL ON IL.id = I.id
            WHERE I.cat_id = :id AND IL.lang = 'ru'
            ORDER BY RAND() LIMIT 5 (сделал 6)",
            array('id' => $aData['cat_id']));
        foreach($aData['companies'] as &$val){
            $val['link'] = str_replace('{sitehost}','gorodbox.ru',$val['link']);
        }

ps сделал решение пока в выводе добавив условие что 6й элемент div класс хайден но это не очень хорошо. От хорошего бы совета как сделать правильно не отказался
 
Последнее редактирование модератором:
По всей видимости именно в БД есть дублирующиеся элементы.
Для начала надо сделать запрос без лимита, т.е. убрать LIMIT 5 и посмотреть вывод, чтобы понять сколько элементов всего и сколько дублей.

Потом проверить массив на дубли и уже после этого делать вывод.
p.s. чето я не вижу div с display:none;
p.s.2 array_uniqe не подойдет, т.к. он не работает с двумерными массивами, поэтому Для просмотра ссылки Войди или Зарегистрируйся тут есть несколько решений как это сделать
 
Нет не совсем ты прав. дублей нет, нужно убрать вывод этого же элемента в этом элементе, то есть в WHERE добавить условие
 
Вот тут
Код:
    foreach($aData['companies'] as &$val){
 $val['link'] = str_replace('{sitehost}','gorodbox.ru',$val['link']);
 }
выводятся все элементы массива $aData['companies'],
соответственно если при выводе вылазит дубль, значит он получается в результате запроса в БД выше, где этот массив заполняется данными из БД.

вариантов два.
либо сделать вручную этот запрос и посмотреть откуда там дубли вылазят
либо убирать их уже после запроса в БД, но перед выводом
 
Да неа, это формирование ссылки.. у меня тут пишется формирование а уже в шаблоне выводится, это отвечает за формирование.. а форычем выводится название переменной что бы я писал в шаблоне типа ?val=ссылка или img
 
Лишний элемент не может взяться ниоткуда, сделай print_r($aData['companies']);
 
Неа дублируется компания ( то есть внизу выводит компании из этой же категории но и ее выводит вот это нада убрать
чего где дублируется на сайте, не понятно? В блоке Наш адрес что ли?
 
Понял задачу, но все равно не понимаю что там выводится на сайте по ссылке. Страница фирмы с id 57. Ниже в массиве она же несколько раз. Почему так, не могу понять.
Но по принципу задачи можно сделать что-то подобное... нужно исключить из массива id фирмы (страницы). Нужна переменная страницы (фирмы). Например, это $firm_id Поэтому в коде добавить строку, типа этой:
PHP:
 foreach($aData['companies'] as &$val){
            if( $val['id'] == $firm_id ) continue;
            $val['link'] = str_replace('{sitehost}','gorodbox.ru',$val['link']);
        }
Если правильно понял.
Или в SQL выбрку добавить подобное условие: AND I.id != ".(int)$val."
За синтаксис не ручаюсь :)
 
Назад
Сверху