|
|
|
| Всем привет.
Подскажите как сделать постраничный вывод по двум таблицам?
У меня имеется таблица категорий и таблица анекдотов.
категории:
id | name | uid
1 | категория 1 | 0
2 | категория 2 | 0
3 | категория 3 | 0
4 | подкатегория1 | 1
5 | подкатегория2 | 1
6 | подкатегория3 | 1
7 | подкатегория4 | 1
|
анекдоты:
id | id_cat | text
1 | 1 | Анекдот1
2 | 1 | Анекдот2
3 | 1 | Анекдот3
4 | 1 | Анекдот4
5 | 1 | Анекдот5
6 | 1 | Анекдот6
7 | 1 | Анекдот7
|
Вывод:
Категория 1
Подкатегория1
Подкатегория2
Подкатегория3
Подкатегория4
-Анекдот1
-Анекдот2
-Анекдот3
-Анекдот4
-Анекдот5
-Анекдот6
-Анекдот7
Категория 2
Категория 3
|
Как мне сделать вот этот вывод с постраничной навигацией?
Подкатегория1
Подкатегория2
Подкатегория3
Подкатегория4
-Анекдот1
-Анекдот2
-Анекдот3
-Анекдот4
-Анекдот5
-Анекдот6
-Анекдот7
Чтобы сначало выводило подкатегории, ну а после сами анекдоты.
Допустим по 5 элементов на страницу.
Страница первая:
Подкатегория1
Подкатегория2
Подкатегория3
Подкатегория4
-Анекдот1
|
Страница вторая:
-Анекдот2
-Анекдот3
-Анекдот4
-Анекдот5
-Анекдот6
|
Третья страница:
| |
|
|
|
|
|
|
|
для: Babruisk
(27.07.2010 в 20:17)
| | delete | |
|
|
|
|
|
|
|
для: Babruisk
(27.07.2010 в 20:17)
| | Никто не знает что ли? | |
|
|
|
|
|
|
|
для: Babruisk
(28.07.2010 в 16:07)
| | Просто устали все говорить об этом ;-) | |
|
|
|
|
|
|
|
для: sim5
(28.07.2010 в 16:10)
| | Тут вывод по двум таблицам, такого вопроса я не встречал. | |
|
|
|
|
|
|
|
для: Babruisk
(29.07.2010 в 01:05)
| | Вообще-то, по логике вещей, навигации по двум страницам быть не может, так как пользователь всегда получает одну страницу. Чего вы там хотите на нее вывести, это уже ваши заботы, но категории, это обычно меню, а содержимое категорий, это уже много страниц с навигатором. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 02:12)
| | А как же быть с подкатегориями?
Смотрите пример.
Допустим у меня есть такая категория:
Авто
В ней есть подкатегории:
ВАЗ
ЗАЗ
ГАЗ
В подкатегорию ВАЗ я добавляю автомобили марки ВАЗ, в подкатегорию ЗАЗ я добавляю автомобили марки ЗАЗ и в кактегорию ГАЗ я добавляю автомобили категории ГАЗ.
Допустим мне необходимо добавить один автомобиль марки BMW, а под него я не хочу создавать отдельной подкатегории, но это все таки автомобиль, значит добавлю его в категорию Авто.
В итоге у меня получится вывод из категории авто таким:
Авто [категория]
ВАЗ [подкатегория]
ЗАЗ [подкатегория]
ГАЗ [подкатегория]
-BMW [сам автомобиль] | |
|
|
|
|
|
|
|
для: Babruisk
(29.07.2010 в 15:36)
| |
Категория 1
Подкатегория1
Подкатегория2
Подкатегория3
Подкатегория4
-Анекдот1
-Анекдот2
-Анекдот3
-Анекдот4
-Анекдот5
-Анекдот6
-Анекдот7
Категория 2
Категория 3
|
Вот такого не может быть, ибо это и не меню, но и не навигация. Если говорить об анекдотах, то я не представляю какие могут быть подкатегории у анекдотов, например, "Про это...". Но такое меню, даже врагу не пожелаешь.
Что касается автомобилей, то их можно разбить на несколько вложенных подкатегорий, и не надо быть большим автоспециалистом, чотбы понять - BMW никакого отношения к заводу ГАЗ не имеет, и должен быть помещен в авто зарубежных производителей, в подкатегорию авто, например, класса люкс, подкатегорию BMW. Доступ к ветвям такого меню осуществляется JS сценарием (хотя может и чисто CSS меню хватит).
А вот выбор пользователем авто/иностранные/люкс/BMW должен вывести на странице все модели этих авто (этой подкат/покатегории), и если моделей много и требуется навигация по страницам этих моделей, то заради бога.
Чтоже касается добавления авто в некую кат/подкат/подкат/...., то сперва нужно выбрать категорию добавления (для вашего примера, это авто/иностранные/люкс/BMW), а значит при обработке формы вы будете знать в какую категорию добавляется марка автомобиля, то есть, не промахнетесь.
В общем подумайте, вы просто путаете понятия. Странно, если ваши пользователи действительно будут пытаться искать BMW у завода ГАЗ, надеясь их там найти. Если все таки вам не охота по логике, тогда это ваши проблемы. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 16:32)
| | Наверно автор уже разобрался, но все же.
Не легче ли присвоить новой марке авто (БМВ) идентификатор в таблице и выводить из базы данные примерно по такому принципу:
$auto1 = mysql_query("SELECT * FROM таблица_где_находятся_категории_подкатегории WHERE cat = 'auto'",$db);
$auto = mysql_fetch_array($auto1);
echo "Авто:";
do
{
echo "$auto[name_auto]";
}
while ( $auto = mysql_fetch_array($auto1) );
Далее тоже в цикле выводим из этой же таблицы авто подподкатегорий.
$auto1 = mysql_query("SELECT * FROM таблица_где_находятся_категории_подподкатегории WHERE cat = 'subauto'",$db);
$auto = mysql_fetch_array($auto1);
do
{
echo "$auto[name_sub_auto]";
}
while ( $auto = mysql_fetch_array($auto1) );
И по идеи у вас будет выведена такая структура:
Авто:
-ВАЗ
-ЗАЗ
-ГАЗ
--БМВ
--РСБ
(если поставить еще цикл с выводом подподподкатегорий, то будет еще:)
---ККУ
---ЫФВ
Вот как-то так... | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 17:50)
| | Вот когда ГАЗ начнет выпускать BMW, пожалуйста. Собственно мне глубоко плевать, что и для чего вы будет присваивать, я искать автомобиль BMW в списке автомобилей ГАЗ не стану, да мало кто, думаю, будет это делать. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 18:50)
| | Это ж для примера. Babruisk же захотел выпускать БМВ под ГАЗ... Вот я ему такую структуру и привел. | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 19:33)
| | Да делайте что хотите запару с ним - к чемоданам конфеты и пряники, в анекдоты выступления президентов, в автомобили детские велосипеды... Мне как-то все равно, это ваши проблемы. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 19:39)
| | Прочитайте предыдущее сообщение: "Такая структура не у меня, а у автора"! | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 19:48)
| | Я и вашу "идею" тоже читал, а потому.... | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 19:49)
| | Я ссылался на структуру автора. | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 20:22)
| | Ну и предлагайте ему свою "идею", мне то зачем такое нужно?
....
ваш код
ваш код
который мне не интересен
....
и результат:
И по идеи у вас будет выведена такая структура:
Авто:
-ВАЗ
-ЗАЗ
-ГАЗ
--БМВ
--РСБ
И смысл вашей "идеи"? Пусть опять в грязь, но в цивильном костюме? Беседуйте с автором, мне это не интересно, потому как глуп результат, а каким методом это достигается мне как-то....
>И по идеи у вас будет выведена такая структура:
У меня такая структура никогда не будет! | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 20:27)
| | Та кода ж до вас дойдет, я ссылался на пожелания автора! Автор попросил помочь основываясь на его данные - я помог ОСНОВЫВАЯСЬ ЕГО данными. Что тут не понятно? Да, я бы тоже не стал делать такую структуру, но не видя многих вещей, которые известны только автору темы, не возможно ссылаться на другие данные, что бы получить желаемый результат! | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 20:33)
| | Да когда же до вас дойдет, что надо просто смотреть, где вы нажимаете ссылку "Ответить".
Почему половина новоприбывших на форум считает, что эти ссылки просто так расставлены в каждом посте?
Если вы отвечаете автору - то "Ответить" надо счелкать под его постом. А сейчас получилось, что вы ответили sim5, которому это совершенно не нужно. | |
|
|
|
|
|
|
|
для: neadekvat
(29.07.2010 в 20:35)
| | "автор: sim5 (29.07.2010 в 20:27) письмо автору
для: lElectroHardl (29.07.2010 в 20:22)
Ну и предлагайте ему свою "идею", мне то зачем такое нужно?
....
ваш код
ваш код
который мне не интересен
....
и результат:
И по идеи у вас будет выведена такая структура:
Авто:
-ВАЗ
-ЗАЗ
-ГАЗ
--БМВ
--РСБ
И смысл вашей "идеи"? Пусть опять в грязь, но в цивильном костюме? Беседуйте с автором, мне это не интересно, потому как глуп результат, а каким методом это достигается мне как-то....
>И по идеи у вас будет выведена такая структура:
У меня такая структура никогда не будет!"
И это писал конечно не sim5 и отвечаю я конечно не ему... Прежде чес ко-го учить, удостоверьтесь, что человек не прав. | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 20:33)
| | 1. Каталог - некий список информации об объектах, составленный с целью облегчения поиска этих объектов по какому-то признаку.
2. Каталог для навигации пользователя, это меню, конечные каталоги которого содержат конечные объкты (документы), хотя могут быть документы и в каталогах верхних уровней (при крайней необходимости).
3. Выбор каталога приводит к выводу содержащихся в нем документов. Вывод самих документов может быть разбит на порциональный вывод, если нельзя отобразить все документы сразу.
4. Помещать в меню кроме списка каталогов еще и списки конечных документов можно в том случае, если это один, два документа, хотя смысла в каталогах в этом случае нет.
Идея каталогизации автора просто бредовая, так как уже не отвечает пункту 1.
Вы повторяете идею автора. Не зависимо от того, как вы решаете вывод такой идеи, я его тоже считаю бредом, на что вам и ответил. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 21:02)
| | >>Вы повторяете идею автора.
Правильно. Вдумайтесь в эти слова. ...идею автора, а не свою.
Примерно такая ситуация:
Мне дали пластилин и бумагу. И сказали: слепи кирпичный дом!
Как я могу слепить кирпичный дом, если мне дали только пластилин?
Так же и тут. Мне дали только пластилин. | |
|
|
|
|
|
|
|
для: lElectroHardl
(29.07.2010 в 21:08)
| | Я бы сказал "Ну и лепите сами кирпичный дом из пластилина". | |
|
|
|
|
|
|
|
для: sim5
(29.07.2010 в 16:32)
| | По моему примеру там BMW находится в основной категории "Авто".
Ладно, поступим по другому.
Допустим имеется загруз центр.
Имеются категория "Видео", а в ней подкатегории "Авто", "Юмор" и категория "Спорт".
А я хочу добавить один фильм, но не хочу создавать под него новую подкатегорию, а хочу разместить его в основной категории "Видео".
Только не говорите, чтобы я создал подкатегорию "Разное", мне нужно именно так, как я объяснил. | |
|
|
|
|
|
|
|
для: Babruisk
(30.07.2010 в 06:45)
| | Да пожайлуйста, куда вы там будете добавлять свои автомобили/видео, удобно ли их будет искать вашим пользователям, это вы сами с ними райзбирайтесь. Но при чем тут постраничная навигация да еще по двум таблицам, и вообще, что это значит?
Например, категория "Видео" имеет id=12. При выводе формы выводите список категорий, в котором можно выбрать категорию для помещения файлов. Обрабатывая форму по полученному значению списка категорий, вы получите id=12 (при выборе категории "Видео"). Делаете запрос на помещение записи имени файла фильма для категории с id=12. То еже самое и, если, для помещения вы выберите иную категорию, и как она у вас там будет дразниться, хоть "в полосочку", лишь бы она была в списке со своим значением id. Другое дело, если вам нужно создать новую категорию, значит вы делаете тоже самое практически, но добавляете не файл чему либо, а название новой категории, ее описание и прочее, и либо как категорию верхнего уровня, либо как вложенную в другую (родителя). В чем собственно проблема?
Постраничный же вывод, это кардинально иное понятие, а вы путаете понятие постраничной навигации с выбором каталога. | |
|
|
|
|
|
|
|
для: sim5
(30.07.2010 в 07:11)
| | Извините, но вы сново не поняли меня.
Я имею ввиду именно постраничную навигацию.
т.е. мне необходимо вывести все подкатегории из основной категории, а после них файлы, в выбранной категории/подкатегории с разбивкой по страницам. | |
|
|
|
|
|
|
|
для: Babruisk
(30.07.2010 в 07:15)
| | А эти категории будут отображаться только на первой странице?
--
UPD: нашёл ответ в примере первого поста.
Примерный алгоритм:
1. Определить начальное смещение в списке категорий, согласно номеру текущей страницы, примерно так:
$categories_offset = $page_num * $items_per_page; // где $page_num - номер страницы с 0, $items_per_page - кол-во элементов на странице
2. Получить общее количество категорий и количество элементов в текущей категории ($categories_num и $items_num).
3. Пропустить первые $categories_offset категорий и выводить $categories_count = min($items_per_page, max($categories_num-$categories_offset, 0)) категорий
4. Определись смещение в списке элементов текущей категории:
$items_offset = max($categories_offset-$categories_num, 0)
5. Пропустить первые $items_offset элементов категории и выводить $items_count = min($items_per_page - $categories_count, max($items_num-$items_offset, 0)) элементов | |
|
|
|
|
|
|
|
для: Babruisk
(30.07.2010 в 07:15)
| | Ну а чего вы тогда опять с ввопросами добавления куда-то чего-то?
Что касается постраничной навигации, то выше это уже обсосано до костей. Категории - это меню, а никакой либо список с постраничной навигацией. Да и как вы себе это представляете? Выбирает (если есть вложения категорий, значит предварительно раскрыв список вложенный) пользователь вашу категорию "Видео", значит вам идет запрос file.php?id=12, получив его, выбираете все записи этой категории,и выводите этот список (описание) в окно основного контента. Еесли они не помещаются все на страницу (это в конфигурации обычно указывается), то строите навигатор и выводите его на страницу. А вот ссылки навигатора будет обращаться уже не только с id=12, но еще и иметь параметр определяющий номер порции (смещения) выводимых данных. Как строятся навигаторы постраничные - в раздел MySQL, и смотрите примеры, коих там много.
Это логично, нормально, стандартно, и вроде бы вы и сами это понимаете. Чего у вас такого необычного, что ну никак не позволяет этим воспользоваться?
А получение списка категорий родительской категории, это не имеет отношения к навигации, запрашивайте, выводите перед списком документов. Правда если есть меню, то зачем?
PS. Вы наверное имеете ввиду следующий навигатор на странице, определяющий местоположения пользователя:
<a href="?id=1">cat1</a> :: <a href="?id=2">cat2</a> :: <a href="?id=3">cat3</a> :: cat4
? | |
|
|
|
|
|
|
|
для: sim5
(30.07.2010 в 07:31)
| | Тс не знает что такое " хлебные крошки" поэтому такой сумбур в определениях чего хочет и куда добавить
Может всё таки нужна навигация? | |
|
|
|
|
|
|
|
для: oliss
(30.07.2010 в 09:33)
| | Навигация по категорям это меню. Если ему надо отобразить путь из категорий, еще понять можно. Но о какой он постраничной навигации в категории твердит, убейте, я не понимаю. Нетю такого. | |
|
|
|
|
|
|
|
для: Babruisk
(27.07.2010 в 20:17)
| | Вы сейчас зарабатываете себе гемор, чтобы потом услышать от пользователей "WTF? Сделайте нормально!"
Вы тут начали с анекдотов, успели сказать про машины и какие-то видео.
Обычную постраничную навигацию вы делать умеете?
Если умеете, то у вас два варианта:
1. Писать сложный запрос к бд (сложный - значит с подзапросами типа JOIN)
2. Писать два запроса - один для каталогов, второй для анекдотов | |
|
|
|
|
|
|
|
для: Babruisk
(27.07.2010 в 20:17)
| | Всем спасибо за помощь. | |
|
|
|