Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вроде не сложный запрос, но не понять как сделать
 
 автор: JIEXA   (27.04.2005 в 19:21)   письмо автору
 
 


В таблице 3 поля: id, name, parentid.
Такие записи
--------------------------------
|  ID   |  name  |  parentid   |
--------------------------------
|  1    |  Кат 1 |      0      |
--------------------------------
|  2    |  Кат 2 |      0      |
--------------------------------
|  3    |  Кат 3 |      0      |
--------------------------------
|  4    |Субкат 1|      1      |
--------------------------------
|  5    |Субкат 2|      1      |
--------------------------------
|  6    |Субкат 3|      2      |
--------------------------------
|  7    |Субкат 4|      2      |
--------------------------------
|  8    |Субкат 5|      2      |
--------------------------------
|  9    |Субкат 6|      3      |
--------------------------------

Поля с parentid равным 0 - это основные категории. Поля с parentid > 0 это субкатегории
Мне очень трудно объяснить, привиду лучше то, что должно вывести:

|  Кат 1  |   Кат 2 |  Кат 3 |
---------- -------------------
  Субкат1 | Субкат 3| Субкат 6
  Субкат2 | Субкат 4|
            Субкат 5|

   
 
 автор: Loki   (27.04.2005 в 20:10)   письмо автору
 
   для: JIEXA   (27.04.2005 в 19:21)
 

Если я правильно понимаю, то за один запрос это не вывести. сначала надо выбрать все основные категории, а затем, в цикле - подкатегории.

   
 
 автор: JIEXA   (27.04.2005 в 21:44)   письмо автору
 
   для: Loki   (27.04.2005 в 20:10)
 

Да, но как это на практике то?

   
 
 автор: cheops   (27.04.2005 в 23:23)   письмо автору
 
   для: JIEXA   (27.04.2005 в 21:44)
 

Можно вывести примерно следующим образом
<?php
  
// Устанавливаем соединение с базой данных
  
include "config.php";
  
// Формируем запрос на выборку субкатегорий
  // основной категории
  
$query "SELECT * FROM tbl WHERE parentid = 0";
  
// Выполняем запрос
  
$tb mysql_query($query);
  
// Проверяем правильность выполнения запроса
  
if(!$tb) exit(mysql_error());
  
// Обнуляем индекс
  
$i 0;
  
// В цикле выполняем обработку категорий
  
while($cat mysql_fetch_array($tb))
  {
    
menu[$i] = $cat['name'];
    
// Запрашиваем подменю данного меню
    
$query "SELECT * FROM tbl WHERE parentid = ".$cat['ID'];
    
// Выполняем запрос
    
$sb mysql_query($query);
    
// Проверяем правильность выполнения запроса
    
if(!$sb) exit(mysql_error());
    
// Обнуляем индекс
    
$k 0;
    while(
$sub mysql_fetch_array($sb))
    {
      
menu[$i][$k] = $sub['name'];
      
$k++;
    }
    
$i++;
  }
  
// Получили двумерный массив $menu, который
  // осталось только вывести
  
echo "<pre>";
  
print_r(menu);
  echo 
"</pre>";
?>

   
 
 автор: JIEXA   (27.04.2005 в 23:48)   письмо автору
 
   для: cheops   (27.04.2005 в 23:23)
 

спасибо

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования