Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> убрать повторения по определенной колонке базы 
:(
    Опции темы
denis7777777
Дата 8.11.2012, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Всем привет.
есть sql запрос

Код

select dle_pages.id as page_id, dle_pages.cid as page_cid, dle_pages.page_name as page_name, dle_pages.page_alt_name as page_alt_name, 

(select dle_category_pages.name from dle_category_pages where dle_category_pages.id=page_cid) as cat_name,
(select dle_category_pages.alt_name from dle_category_pages where dle_category_pages.id=page_cid) as cat_alt_name

from dle_pages where dle_pages.cid in (SELECT dle_category_pages.id
FROM `dle_category_pages` where parentid='15') order by dle_pages.cid


результат выполнения запроса: 

Код

page_id    page_cid    page_name    page_alt_name    cat_name    cat_alt_name 
33    16    вопрос 1    vopros1    Общие вопросы    general
34    16    Вопрос 3    vopros3    Общие вопросы    general
42    17    вопрос2    vopros2    Технические вопросы    technical

исполняющий код: 
Код

$db->query( "select dle_pages.id as page_id, dle_pages.cid as page_cid, dle_pages.page_name as page_name, dle_pages.page_alt_name as page_alt_name, 

(select dle_category_pages.name from dle_category_pages where dle_category_pages.id=page_cid) as cat_name,
(select dle_category_pages.alt_name from dle_category_pages where dle_category_pages.id=page_cid) as cat_alt_name

from dle_pages where dle_pages.cid in (SELECT dle_category_pages.id
FROM `dle_category_pages` where parentid='15') order by dle_pages.cid ");

        
        while ( $row = $db->get_row() ) {

$cat_name = $row['cat_name'];

echo "<b>".$cat_name."</b><br /><br />";
echo $row['page_name']."<br />";
        }


результат выполнения: 
user posted image

подскажите пожалуйста как сделать что бы текст "Общие вопросы" выводился 1 раз?  smile 
вывести его вверху, а дальше пошли страницы из этой категории уже.
и так со всеми категориями, например "Технические вопросы"

PM MAIL   Вверх
Fortop
Дата 8.11.2012, 13:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Как вариант запоминать предыдущее значение $cat_name
И если оно равно текущему, то не выводить его

Код

print ($cat_name == $old_cat_name ? '':$cat_name);


как-то так


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
denis7777777
Дата 8.11.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Fortop, а $old_cat_name это что такое, как оно должно быть сделано?
PM MAIL   Вверх
Aliance
Дата 8.11.2012, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Я вижу здесь 2 адекватных решения:
1) изменить логику запроса, возможно сделать два. Сперва выбираем категории, потом для каждой категории внутренности. Либо группировка.
2) Группировка на стороне сервера. Что-то типа:
Код

$categories = array();
while ($row = $db->get_row()) {
    if ( ! array_key_exists($row['page_cid'], $categories)) {
        $categories[$row['page_cid']] = array(
            'title' => $row['cat_name'],
            'alt'   => $row['cat_alt_name'],
            'pages' => array()
        );
    }
    $categories[$row['page_cid']]['pages'][$row['page_id']] = $row['page_name'];
}
foreach ($categories as $categoryId => $category) {
    echo '<ul>';
    printf('Категория: %s [%d]', $category['title'], $categoryId);
    foreach ($category['pages'] as $pageId => $page) {
        printf('<li>Страница: %s [%d]</li>', $page, $pageId);
    }
    echo '</ul>';
}


И пользуйтесь правильной кнопкой код, для sql языка есть отдельная кнопка.
PM MAIL WWW ICQ Skype   Вверх
denis7777777
Дата 8.11.2012, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Aliance, спасибо огромное, то что нужно. smile 
на счет sql кода понял, не заметил выпадающий список.  smile 
PM MAIL   Вверх
denis7777777
Дата 8.11.2012, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Aliance, подскажите пожалуйста еще вот какой момент. 
сижу пытаюсь прописать ссылку на страницу, не получается.
пробовал так: 
Код

printf("<li><a href=\"".$row['page_alt_name']."\">%s</a> </li>", $page, $pageId);


как сделать что бы вместо # 
Код

printf("<li><a href=\"#\">%s</a> </li>", $page, $pageId);

был вывод 
Код

$row['page_alt_name'];

заранее благодарен.
PM MAIL   Вверх
Fortop
Дата 8.11.2012, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(denis7777777 @  8.11.2012,  13:14 Найти цитируемый пост)
Fortop, а $old_cat_name это что такое, как оно должно быть сделано? 

Я же написал.
Цитата(Fortop @  8.11.2012,  13:07 Найти цитируемый пост)
Как вариант запоминать предыдущее значение $cat_name


После того как  вы уже вывели текущий $cat_name запоминайте его значение в $old_cat_name внутри цикла.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Aliance
Дата 9.11.2012, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Код

printf('<li><a href="%s">%s</a></li>', $row['page_alt_name'], $page);


Мануал тут: php.net/sprintf
PM MAIL WWW ICQ Skype   Вверх
denis7777777
Дата 9.11.2012, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 11.5.2006

Репутация: нет
Всего: нет



Цитата(Fortop @  8.11.2012,  23:48 Найти цитируемый пост)
После того как  вы уже вывели текущий $cat_name запоминайте его значение в $old_cat_name внутри цикла.

все получилось. спасибо.  smile 

Цитата(Aliance @  9.11.2012,  10:23 Найти цитируемый пост)
Мануал тут: php.net/sprintf

уже читал, но что то не вкурил сначала что и как   smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.