Перейти к содержимому


Партнерская программа Kredov

Слияние таблиц и вывод группируя по разделам

#1 kolesgan

kolesgan
  • Пользователь
  • 73 сообщений
  • Репутация: 0
0

Отправлено 27 Март 2011 - 08:58

У меня имеется в базе три таблицы. В одной таблице (cat) собран список категорий организаций, в другой (sprav) подкатегорий со строкой cat - содержащий id категории из таблиц cat. И сама таблица (org) где будут содержатся все добавленные в каталог организации.
Возможно ли сделать так, чтоб вывелись все категории в виде списка, и под каждой категорией подкатегории. И все это в две колонки.
Примерно как онлайн-справочник на этом сайте - http://www.cheb.ru/

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Март 2011 - 11:36

kolesgan, обсуждалось на форуме уже подобное - http://www.masterweb...nii-rubrikator/

<?php

$html = ""; // переменная для вывода данных
$cats = array(); // определяем массив категорий

// выбираем из базы все категрии
$res = mysql_query("SELECT * FROM `cat`");
if( mysql_num_rows($res) )
while( $cat = mysql_fetch_assoc($res) ) // обходим все категории из запроса
{
$cats[$cat['id']] = $cat; // заносим категорию
$cats[$cat['id']]['sub'] = array(); // создаем в категории пустой массив для подкатегорий
}

// если категорий > 0
if( count($cats) )
{
// выбираем из базы все подкатегории
$res = mysql_query("SELECT * FROM `sprav`");
if( mysql_num_rows($res) )
while( $subcat = mysql_fetch_assoc($res) ) // обходим все подкатегории из запроса
{
// если существет категория с id = id_cat (id_cat - поле из таблицы подкатегорий - связка с категориями)
if( array_key_exists($subcat['id_cat'], $cats) )
$cats[$subcat['id_cat']]['sub'][] = $subcat; // заносим подкатегорию
}
}

// ИСПОЛЬЗОВАНИЕ
if( count($cats) )
{
// обходим все категории
foreach($cats as $cat)
{
$subcats = array();

if( !count($cat['sub']) ) continue; // если в категории не найдены подкатегории - пропускаем

$html .= "<div style='font-size:17px;'>{$cat['name']}</div>";
$html .= "<div>"

// обходим все подкатегории
foreach($cat['sub'] as $subcat)
$subcats[] = "<a href='...'>{$subcat['name']}</a>"; // формируем ссылку на подкатегорию

$html .= implode(",", $subcats); // соединяем все ссылки на подкатегории в одну строку через ","
$html .= "</div>";
}
} else {
$html = "Категорий не найдено";
}

echo $html; // выводим собранный материал

?>

  • 0

#3 kolesgan

kolesgan
    Topic Starter
  • Пользователь
  • 73 сообщений
  • Репутация: 0

Отправлено 27 Март 2011 - 12:06

спасибо
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 29 Март 2011 - 09:29

kolesgan, тему можно закрывать или имеются ещё вопросы по выводу?
  • 0


Оформление форума – IPBSkins.ru