За последние 24 часа нас посетили 58508 программистов и 1788 роботов. Сейчас ищут 837 программистов ...

Создаю каталог:)

Тема в разделе "PHP для новичков", создана пользователем Mark32, 4 янв 2009.

  1. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Цель: технически каталог должен выглядеть как у яши: если кто не знает адрес: http://www.yaca.yandex.ru/ :)
    Вобщем есть у меня таблица в мускуле с названиями главнфх категорий, и субкатегориями - т.е. это разные таблицы - первая называется maincat, вторая - subcat. Задача каталога на лицевой стороне, выстроить как у яши и многих других списки в виде столбиков: Сначала главное название каталога, а потом внизу его подкатегории, в виде трёх столбцов, скажем. Дык вот. Нашёл одну красивую констукцию:
    PHP:
    1.  
    2. $cols = 3;
    3.    echo "<table align='center' widht='100%'>";
    4.  do {
    5.      echo '<tr>';
    6.      for ($i=0; $i<$cols; $i++) {
    7.          echo '<td>' . (($data = mysql_fetch_assoc($Result)) ? $data['subcat'] : '-') . '</td>';
    8.      }
    9.      echo '</tr>';
    10.  } while ($data);
    11.  echo '</table>';
    получилось так, что код красиво формирует подкатегории на три столбца. Это замечательно. Но! Как его модифицировать, чтобы он делал столбики с названием главной категории и его подкатегорий??!! Под вечер не рублю уже... на какие только извращения не приходилось идти.... Дайте совет, увжаемые профи! Заранее благодарен!
     
  2. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    да, структура таблиц такая:

    maincat:
    id (порядковый номер главной категории - выставляется автоматически)
    name (имя главной категории)

    subcat:
    id (порядковый номер субкатегории - выставляется автоматически)
    name (имя субкатегории)
    num (где этот номер совпадает с номером id maincat, чтобы "привязать" подкатегорию к главной категории) чтобы можно было просто вытягивать подкатегории по команде select * from subcat, where num=$id (где номер субкатегории равен айди какой-то главной категории)

    вот.
     
  3. egrik

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

    С нами с:
    22 дек 2006
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Voronezh
    Mark32, в вашем случае - задача в хранении древовидной структуре. Не нужно создавать множество таблиц в этом этом случае (а если вложенность будет 10), поищите алгоритмы хранения деревьев, их множество. Разработчики mysql реккомедную хранить деревья следующим образом http://dev.mysql.com/tech-resources/art ... -data.html
     
  4. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Спасибо за совет! Действительно так лучше. Начал немного уже разбираться на основе
    _http://www.cubes.com.ua/documentation/index.php?page=articles/phptrees

    У меня вопрос всё равно остался. Вот выдача категорий (и главных и родительских):

    PHP:
    1.  
    2. $Query = "SELECT * from $TableName ORDER BY cleft ASC";
    3. $Result = mysql_db_query ($DBName, $Query, $Link);
    4.  
    5. while ($row = mysql_fetch_array ($Result))
    6. {
    7.    echo str_repeat("&nbsp;",6*$row['clevel']).$row['title']."<br>";
    8. }
    9.  
    А как сделать их по столбикам? У меняч в сущности только три категории: 1 - Самая главная (она одна, назвается "каталог") 2 - главный родительский 3 - подкатегории главных родительских (их много), так вот как сделать их по столбикам (<td></td>) как в яше?
     
  5. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    В поиск
     
  6. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Понятно что ядро вопроса уже изъезжено. пролазил уже. нашёл много полезного, но что-то похожее под мой случай нет.
     
  7. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    а как в тему сообщения файл прикрепить?
     
  8. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    вот так суёт данные в столбцы, но не "категорально", т.е. в разнобой, а нужно чтобы вверху каждого столбца была главная категория, а под ней уже подкатегории...

    PHP:
    1. $Query = "SELECT * from $TableName ORDER BY cleft ASC";
    2. $Result = mysql_db_query ($DBName, $Query, $Link);
    3.  
    4.  
    5.  
    6. $cols = 3;
    7.    echo "<table align='center' widht='100%'>";
    8.   do {
    9.      echo '<tr>';
    10.      for ($i=0; $i<$cols; $i++) {
    11.          echo '<td>' . (($data = mysql_fetch_assoc($Result)) ? $data['title'] : '-') . '</td>';
    12.      }
    13.      echo '</tr>';
    14.   } while ($data);
    15.   echo '</table>';