![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
Пишу такой код
Должен выводить так: Категория 1 Запись 1 Запись 2 Категория 2 Запись 1 Запись 2 и т.п., а выводит так: Категория 1 Запись 1 Запись 1 Категория 2 Запись 1 Запись 1 В чём ошибка? -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
$row_in наверное надо. А вообще, я сторонник того, чтобы не выполнять каждый раз запрос, а сначала все загрузить в единый массив, а потом его мучить. |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
Mal Hack
Точно, спасибо.
Мне както удобнее наоборот ![]() -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
||||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
По-моему, здесь лучше и гораздо рациональнее будет пробежаться рекурсивно. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
||||
|
||||
Bikutoru |
|
||||||||
Увлекающийся ![]() ![]() Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: 2 Всего: 22 |
Строка 14:
хотя по логике должно быть
ИМХО
такой код будет работать побыстрее, чем твой при большом количестве записей...
Т.е. ты хочешь сказать, что если в таблице несколько тысяч разделов записей, то эти несколько тысяч запросов к базе будут работать быстрее одного запроса, который возвращает все эти записи??? Очень сильно сомневаюсь... -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
||||||||
|
|||||||||
smartov |
|
||||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Bikutoru
Неверное понимание. Эти несколько тысяч запросов будут работать во много раз быстрее чем несколько тысяч array_filter-ов, которые придется применять при нормальной организации базы при выводе дерева элементов. П.С. Фраза моя была ответом на фразу
А организация базы, как у товарища Куксикус, где каждой у записи в поле razdel вместо id раздела написано его имя(!!) ![]() |
||||
|
|||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Да? Ты бы для начала хоть тестирование провел... Нет, я не спорю, что на каких-то задачах выгоднее сделать много маленьких запросов, чем отом шерстить один большой. Но таких задач меньше, точнее они редко ставятся.
А где ты там видел, чтобы я упоминал про фильтры? Запросы к базе это внешние операции, которые в большинстве случаев будут выполняться намного дольше, чем внутрескриптовые конструкции. Модератор: за хамский тон по отношению к участникам в следующий раз буду кирпич вешать. |
||||
|
|||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
С чего ты взял что у меня нет id ? Mal Hack Чтобы сначала всё засунуть в переменную а потом это выводить за циклом нужен ещё один цикл для вывода или я неправильно тебя понял? Привиди пожалуйста пример Добавлено @ 12:52 Кстати насчёт кирпичей... а куда мой пропал? ![]() -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
Mal Hack |
|
||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Ты должен делать что-то вроде:
Там где .... Надо сделать условие, для вывода инфы от нужной категории.. Тут ИМХО if надо будет еще юзать. |
||||
|
|||||
smartov |
|
||||||||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Так исходя из
Который должен отображать "Категория 1" на id не очень похожа ![]() О, поверь. Я с этим намахался много в свое время. И тестирование проводил еще как.
Про большинство случаев - совершенно верно. Но при случае фильтрования (выбрать записи которые входят в раздел) то обращение к базе ("select * ... where razdel_id=....") будет куда быстрее чем выбирать эти записи "внутрескриптовыми конструкциями" из массива всех записей, считаных предварительно. Именно то что предложил ты.
Твой код + как ты говришь если if заюзать - вот это и будет работать медленее. И чем больше будет записей тем больше будет разница. (Повторюсь - при условии того что mysql база находится на localhost по отношению к скриптам) |
||||||||
|
|||||||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
smartov спорить не буду, у меня тесты показывали другое.
Да и один запрос к БД всегда лучше, чем много маленьких (в большинстве, опять же) |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
smartov
А ты не думал что поле в котором хранятся id может называться id а не раздел и переменная $row['razdel'] выводит название раздела а не id или ты во всех своих скриптах вместо текста предпочитаеш одни id'шники выводить? Mal Hack Т.е. я должен всё забить в массив а потом этот массив вывести, так? -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
smartov |
|
||||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Ну тогда советую тебе подумать зачем в записях хранить еще и имя раздела если там уже хранится id раздела к которому эта запись принадлежит. Толку от такого дублирования информации?
Расскажу заодно как у меня было. Надо было мне значит вывести дерево. Вот почти как у гр. Куксикус только 4-й вложенности. Пункстов 4-го уровня было около 4000 и увеличивалось с каждым днём. Когда я делал так 1) выбирал все пункты 4 уровня в массив в начале скрипта 2) выводил в цкиле, опираясь на if, только те, которые сейчас надо (не запутал надеюсь %)) Т.е. дерево было:
Так вот как я при варианте, как я написал, скрипт выполнялся около 10(!) секунд. Когда же я сменил все циклы с if-ами на mysql_query(".... where parent_id=...") скрипт стал выполняться 2.5 секунды. Вот такие показатели. Это сообщение отредактировал(а) smartov - 7.2.2006, 12:26 |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |