За последние 24 часа нас посетил 17491 программист и 1690 роботов. Сейчас ищут 998 программистов ...

Меню с двумя MySql таблицами. PHP

Тема в разделе "Прочие вопросы по PHP", создана пользователем Oleg_php, 12 апр 2012.

  1. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Привет всем. Помогите с решением задачи.
    Есть две таблицы catalog и subcategory, в первой лежат основные категории во второй подкатегории.

    Таблица CATALOG
    ---------------------------------------------------------------------------------
    cat_id | cat_title | cat_description | cat_keywords | cat_text |
    ---------------------------------------------------------------------------------
    1 |Заголовок| Описание кат. | Ключевые | Текст |
    ---------------------------------------------------------------------------------
    2 |Заголовок| Описание кат. | Ключевые | Текст |
    ---------------------------------------------------------------------------------
    3 |Заголовок| Описание кат. | Ключевые | Текст |
    ---------------------------------------------------------------------------------

    Таблица SUBCATEGORY
    -----------------------------------------------
    sub_id | cat_id | sub_title |
    -----------------------------------------------
    1 | 1 | Опис. подкат. |
    -----------------------------------------------
    2 | 1 | Опис. подкат. |
    -----------------------------------------------
    3 | 2 | Опис. подкат. |
    -----------------------------------------------
    4 | 1 | Опис. подкат. |
    -----------------------------------------------

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

    Пытался экспереметировать, но безуспешно. И желательно вывести это через return, так как шаблонная система.
    $sql = "SELECT *
    FROM catalog,subcategory
    WHERE catalog.cat_id=subcategory.cat_id
    ";

    $menu = $dbh->query($sql);
    if($menu !== false)
    {
    if ($menu->rowCount() > 0)
    {
    return $menu;
    }
    else
    {
    return false;
    }
    }
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. SELECT c.name as cname,sc.name as scname FROM catalog as c LEFT JOIN subcategory as sc ON c.cat_id=sc.cat_id
     
  3. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Сделал вот так :
    $sql = "SELECT c.cat_title as cname,sc.sub_translit as scname FROM catalog as c LEFT JOIN subcategory as sc ON c.cat_id=sc.cat_id";

    $menu = $dbh->query($sql);
    if($menu !== false)
    {
    if ($menu->rowCount() > 0)
    {
    return $menu;
    }
    else
    {
    return false;
    }
    }


    Добавлено спустя 9 минут 29 секунд:
    <? foreach ($menu_admin as $menu_admin_view): ?>
    <?=$menu_admin_view['cname']?><br />
    <?if (!empty($menu_admin_view['scname'])):?>
    <?=$menu_admin_view['scname']?><br />
    <?endif?>
    <? endforeach ?>

    таким образом получается что выводит
    Категория 1 - Подкатегория
    Категория 1 - Подкатегория
    Категория 1 - Подкатегория
    Категория 2 - Подкатегория
    Категория 2 - Подкатегория

    а надо чтобы один раз Категорию и под ним список подкатегорий.
     
  4. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Не тем по моему занимаетесь лучше написать не сложный код по созданию произвольного меню в который пишите пункты меню руками сколько надо в какой надо последовательности потом сохранить в массив и сериализовать и в файл
     
  5. Oleg_php

    Oleg_php Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    80
    Симпатии:
    0
    Желательно пока найти решение для этого вывода.

    Код (Text):
    1. <? foreach ($menu_admin as $menu_admin_view): ?>
    2.  <?=$menu_admin_view['cname']?><br />
    3.  <?if (!empty($menu_admin_view['scname'])):?>
    4.  <?=$menu_admin_view['scname']?><br />
    5.  <?endif?>
    6.  <? endforeach ?>
    7.  
    8. таким образом получается что выводит
    9. Категория 1 - Подкатегория
    10. Категория 1 - Подкатегория
    11. Категория 1 - Подкатегория
    12. Категория 2 - Подкатегория
    13. Категория 2 - Подкатегория
    Добавлено спустя 40 минут 10 секунд:
    Всё решил. Спасибо Всем кто откликнулся!