![]() |
Модераторы: 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 |
||||
|
|||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
||||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
smartov
А мне нужен и id и русское название раздела и английское название раздела..... случаи разные бывают. -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Куксикус
Дык! ![]() Mal Hack Если слова "товарищ" и "гражданин" (а моежет еще и "камрад"?!) на этом форуме считаются ругательными, прошу указать мне на пункт в правилах, гже это написано. Спасибо. |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
smartov
id - для упорядочивания категорий в том порядке, который мне нужен. английское название для ЧПУ русское название сам понимаеш для чего - должны же люди знать в какой раздел они заходят -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
smartov я не про слова, я про ТОН !!
|
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Куксикус
Недопонял ![]() Но смотри. По хорошему. Должна быть отдельная таблица "Разделы" С полями (например) id english_name russian_name А в таблице записей, должно быть поле razdel_id (например). А то так ты вдруг решишь поменять название раздела. И тогда тебе придется менять эту строку во ВСЕХ записях ![]() Это один из вариантов возможных проблем. А если ты вдруг захочешь еще и... ну украинский язык добавить, наример. Страшно подумать что надо будет всем записям (которых уже к тому моменту много может быть) добавить поле и прописать туда значение. А вот в таблицу разделов добавить поле или хоть 10 будет куда меньшей проблемой. Молчу про то, сколько лишнего места кушается, и про то, что призводительность падает (ведь при чтении каждой записи читаются русское и английское имена раздела). Так бы они читались только один раз из таблицы разделов. Инересно, давно это мой текст еще и тон передает (до чего техника дошла). Тем более что я его изо всех сил старался смягчить смайликами. Особенно во втором случае прецедента вообще не вижу. Здаётся мне это просто у тебя как в цитате: "Такую личную неприязнь я испитываю к потерпевшему, что просто кушать не могу" © Мимино |
|||
|
||||
R.M. |
|
||||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
smartov
В каких записях? это чисто название раздела оно только выводится и больше нигде ни в каких таблицах не фигурирует, то, что в разделе содержится селектится по cat = id раздела.
Кроме русского никаких языков больше небудет - сайт для русскоязычного населения, у иностранцев....другой склад ума так сказать, а украинские пользователи интернета по русски хорошо понимают насколько я знаю Mal Hack,smartov, успакойтесь ![]() -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
||||
|
|||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Куксикус
Ну вот! Верно же ![]() Может я просто неверно понял. Но если я правильно представил себе структуру твоей таблицы записей, то она примерно такая
И получается что у каждой записи есть поле с именем раздела к которому она принадлежит. Если я не прав - поправь. Если так - то и получается дублирование инфы. |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Куксикус, давай еще раз на БИС, выложи структуры твоих задействованных, в данной ситуации, таблиц о подробнее опиши, что ты хочешь добиться.
ЗЫ. По-моему ты запутал уже всех ![]() -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
-=Ustas=- Да он уже всего добился
![]() |
|||
|
||||
R.M. |
|
|||
![]() Анархист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2164 Регистрация: 8.6.2005 Где: Питер Репутация: 0 Всего: 30 |
Структура
id | eng | rus | cat | razdel id - номер записи eng - название для ЧПУ т.е. чтото вроде http://blablabla.ru/razdel/podrazdel rus - русское название для вывода на экран cat - на сайте 3 главных категории и цифра в этом поле показывает в какую категорию выводить данную запись razdel - в одной из категрий нужны подкатегории и это поле отвечает в какой подкатегории будут выводиться записи Помоему тут всё нужно ![]() -------------------- Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека. Nokia LifeStyle - Всё для смартфонов Nokia |
|||
|
||||
-=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Ну, судя по всему, избыточной информации нет.
![]() -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 2 Всего: 259 |
Куксикус Вопрос закрыт
![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |