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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка каталога 
:(
    Опции темы
GhosTer
  Дата 17.5.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сразу предупреждаю что с PHP на извините не хотел) 

У меня есть таблица catalog с следующими данными: 
ID Name CatalogID 
1 Хлам 0 
2 НеХлам 0 
3 МегаХлам 0 
4 ПодХлам! 1 
5 ПодХлам2 1 
6 ПодМегаХлам 3 
7 ПодМегаХлам2 3 

ID - идентификатор каталога. 
Name - его наименование. 
CatalogID - указатель на то в каком каталоге находится данный подкаталог(как то так) 

В общем суть в том, что бы вывести из таблици следующую структуру: 

Код

-Хлам 
   -Подхлам! 
   -Подхлам2 
-НеХлам 
-МегаХлам 
    -ПодМегаХлам 
    -ПодМегаХлам2  





Попытался сделать так: 

Код

function ShowMapCatalog($IDCatalog) //select database 
{ 
        $ath = mysql_query("select * from ".TABLE_CATALOG." WHERE CatalogID=".$IDCatalog.";"); 

        if($ath) 
        { 
          $str="<ul>"; 
          while($author = mysql_fetch_array($ath)) 
          { 
            $str=$str."<li>".$author['Name']."</li>".ShowMapCatalog($author['CatalogID']); 
          } 
          $str=$str."</ul>"; 
        } 

    return $str; 
} 

echo ShowMapCatalog(0); 





Как вы наверное догадались, выводит пустоту))) 
Похоже что PHP так не делает)))

  smile Подскажите как правильно сделать!!!!! 
Через месяц диплом сдавать, а я только сел за него) smile 
PM MAIL   Вверх
Shark
Дата 17.5.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

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



ты хотя бы таблицу нормально бы нарисовал тут. лучше будет с двумя таблицами в отной таблице буду хранится каталоги, а в другой подкаталоги
Табл. catalog
id_catalog   |     catalog
1                 |      Хлам 
2                 |     НеХлам 
3                 |   МегаХлам 


Табл. podcatalog
id_podcatalog   |   podcatalog      |    id_catalog
1                       |    ПодХлам!       |           1 
2                       |   ПодХлам2        |          1 
3                       | ПодМегаХлам    |          3 
4                       | ПодМегаХлам2  |          3 

Код

$catalogs=mysql_query("SELECT * FROM catalog");
while($catalog=mysql_fetch_array($catalogs))
         {
                 $podcatalogs=mysql_query("SELECT * FROM podcatalog WEHRE id_catalog='".$catalog['id_catalog']."'");
                 while($podcatalog=mysql_fetch_array($podcatalogs))
                          {
                                   echo "Каталог: ".$catalog['catalog']."<br>Подкаталоги: ".$podcatalog['podcatalog']."<br><br>";
                          }
         }

что-то типо такого


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
GhosTer
Дата 18.5.2009, 04:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Оно то может быть и проще, но у каждого подкаталага1 может быть свой подкаталог2, а у каждого подкаталага2 может быть свой подкаталог3. И так до бесконечности.
Вот в чём загвоздка)
PM MAIL   Вверх
GhosTer
  Дата 18.5.2009, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нашел ошибку в строке
Код
$str=$str."<li>".$author['Name']."</li>".ShowMapCatalog($author['CatalogID']); 

Она должна выглядеть вот так
Код
$str=$str."<li>".$author['Name']."</li>".ShowMapCatalog($author['ID']); 


Всё работает!!!! smile 
PM MAIL   Вверх
NewDima
Дата 18.5.2009, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



Выводит пустоту или "<ul></ul>"?
PM ICQ   Вверх
GhosTer
Дата 18.5.2009, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Выводил идеально чистый лист)
При просмотре HTML-кода, тоже была пустота! smile 
PM MAIL   Вверх
NewDima
Дата 18.5.2009, 07:48 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



выводи значит mysql_error()
PM ICQ   Вверх
NewDima
Дата 18.5.2009, 09:16 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



что говорит?
PM ICQ   Вверх
MoLeX
Дата 18.5.2009, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


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

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



NewDima, по всем видимости автор уже решил проблему.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
NewDima
Дата 18.5.2009, 11:12 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

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



Так и пытайся помоч
PM ICQ   Вверх
bazzjr
Дата 18.5.2009, 12:16 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 27.12.2007
Где: Россия, Пермь

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



Тогда если строить одну таблицу, то следующим образом:

Table catalog

ID(avtoincrement)    NAME                  ID_CATALOG
    1                           main                          1
    2                           main2                        2
    3                           submain                    1,1
    4                           submainsubmain       1,1,1
    5                           submain2                  2,1
               
    и т.д.


в массиве ID_CATALOG, парсим цифры и запятые, и в соответствии с полученным результатом строим дерево.
PM MAIL ICQ   Вверх
GhosTer
Дата 19.5.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(GhosTer @ 18.5.2009,  06:13)
Нашел ошибку в строке
Код
$str=$str."<li>".$author['Name']."</li>".ShowMapCatalog($author['CatalogID']); 

Она должна выглядеть вот так
Код
$str=$str."<li>".$author['Name']."</li>".ShowMapCatalog($author['ID']); 


Всё работает!!!! smile

Ребята. Большое спасибо.
Но я справился с проблеммой.

Проблемма была в том что я указал не тот столбец и повторном вызове функции ShowMapCatalog, что привело к зацикливанию.
А страница была пуста, я так понимаю, потому что сервер не стал обрабатывать данный код и не отослал браузеру данные.
я же написал!!!!

А по поводу такой таблицы:

ID(avtoincrement)    NAME                  ID_CATALOG
    1                           main                          1
    2                           main2                        2
    3                           submain                    1,1
    4                           submainsubmain       1,1,1
    5                           submain2                  2,1

Я считаю это излишек. И достаточно:

ID(avtoincrement)    NAME                  ID_CATALOG
    1                           main                          0
    2                           main2                        0
    3                           submain                    1
    4                           submainsubmain       3
    5                           submain2                  2

где 0 в ID_CATALOG означает то что это начальный каталог
А вываод каталогов лучше осуществить по алфавиту, просто тобавить сортировку по столбцу NAME в mysql запросе.
Т.к. при большом списке каталогов, легче искать, все таки, по алфавиту, а не читать название всех перемешанных каталогов (я имею ввиду взгляд пользователя).
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.0771 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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