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

Форум PHP

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

 

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

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

тема: Постраничный вывод по двум таблицам
 
 автор: Babruisk   (27.07.2010 в 20:17)   письмо автору
 
 

Всем привет.

Подскажите как сделать постраничный вывод по двум таблицам?

У меня имеется таблица категорий и таблица анекдотов.

категории:

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


Третья страница:

  -Анекдот7

  Ответить  
 
 автор: Babruisk   (27.07.2010 в 20:20)   письмо автору
 
   для: Babruisk   (27.07.2010 в 20:17)
 

delete

  Ответить  
 
 автор: Babruisk   (28.07.2010 в 16:07)   письмо автору
 
   для: Babruisk   (27.07.2010 в 20:17)
 

Никто не знает что ли?

  Ответить  
 
 автор: sim5   (28.07.2010 в 16:10)   письмо автору
 
   для: Babruisk   (28.07.2010 в 16:07)
 

Просто устали все говорить об этом ;-)

  Ответить  
 
 автор: Babruisk   (29.07.2010 в 01:05)   письмо автору
 
   для: sim5   (28.07.2010 в 16:10)
 

Тут вывод по двум таблицам, такого вопроса я не встречал.

  Ответить  
 
 автор: sim5   (29.07.2010 в 02:12)   письмо автору
 
   для: Babruisk   (29.07.2010 в 01:05)
 

Вообще-то, по логике вещей, навигации по двум страницам быть не может, так как пользователь всегда получает одну страницу. Чего вы там хотите на нее вывести, это уже ваши заботы, но категории, это обычно меню, а содержимое категорий, это уже много страниц с навигатором.

  Ответить  
 
 автор: Babruisk   (29.07.2010 в 15:36)   письмо автору
 
   для: sim5   (29.07.2010 в 02:12)
 

А как же быть с подкатегориями?

Смотрите пример.

Допустим у меня есть такая категория:

Авто

В ней есть подкатегории:

ВАЗ
ЗАЗ
ГАЗ


В подкатегорию ВАЗ я добавляю автомобили марки ВАЗ, в подкатегорию ЗАЗ я добавляю автомобили марки ЗАЗ и в кактегорию ГАЗ я добавляю автомобили категории ГАЗ.

Допустим мне необходимо добавить один автомобиль марки BMW, а под него я не хочу создавать отдельной подкатегории, но это все таки автомобиль, значит добавлю его в категорию Авто.

В итоге у меня получится вывод из категории авто таким:

Авто [категория]
ВАЗ [подкатегория]
ЗАЗ [подкатегория]
ГАЗ [подкатегория]
-BMW [сам автомобиль]

  Ответить  
 
 автор: sim5   (29.07.2010 в 16:32)   письмо автору
 
   для: 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 у завода ГАЗ, надеясь их там найти. Если все таки вам не охота по логике, тогда это ваши проблемы.

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 17:50)   письмо автору
 
   для: 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) );

И по идеи у вас будет выведена такая структура:
Авто:
-ВАЗ
-ЗАЗ
-ГАЗ
--БМВ
--РСБ
(если поставить еще цикл с выводом подподподкатегорий, то будет еще:)
---ККУ
---ЫФВ

Вот как-то так...

  Ответить  
 
 автор: sim5   (29.07.2010 в 18:50)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 17:50)
 

Вот когда ГАЗ начнет выпускать BMW, пожалуйста. Собственно мне глубоко плевать, что и для чего вы будет присваивать, я искать автомобиль BMW в списке автомобилей ГАЗ не стану, да мало кто, думаю, будет это делать.

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 19:33)   письмо автору
 
   для: sim5   (29.07.2010 в 18:50)
 

Это ж для примера. Babruisk же захотел выпускать БМВ под ГАЗ... Вот я ему такую структуру и привел.

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:39)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 19:33)
 

Да делайте что хотите запару с ним - к чемоданам конфеты и пряники, в анекдоты выступления президентов, в автомобили детские велосипеды... Мне как-то все равно, это ваши проблемы.

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 19:48)   письмо автору
 
   для: sim5   (29.07.2010 в 19:39)
 

Прочитайте предыдущее сообщение: "Такая структура не у меня, а у автора"!

  Ответить  
 
 автор: sim5   (29.07.2010 в 19:49)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 19:48)
 

Я и вашу "идею" тоже читал, а потому....

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 20:22)   письмо автору
 
   для: sim5   (29.07.2010 в 19:49)
 

Я ссылался на структуру автора.

  Ответить  
 
 автор: sim5   (29.07.2010 в 20:27)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 20:22)
 

Ну и предлагайте ему свою "идею", мне то зачем такое нужно?
....
ваш код
ваш код
который мне не интересен
....

и результат:

И по идеи у вас будет выведена такая структура:
Авто:
-ВАЗ
-ЗАЗ
-ГАЗ
--БМВ
--РСБ

И смысл вашей "идеи"? Пусть опять в грязь, но в цивильном костюме? Беседуйте с автором, мне это не интересно, потому как глуп результат, а каким методом это достигается мне как-то....

>И по идеи у вас будет выведена такая структура:

У меня такая структура никогда не будет!

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 20:33)   письмо автору
 
   для: sim5   (29.07.2010 в 20:27)
 

Та кода ж до вас дойдет, я ссылался на пожелания автора! Автор попросил помочь основываясь на его данные - я помог ОСНОВЫВАЯСЬ ЕГО данными. Что тут не понятно? Да, я бы тоже не стал делать такую структуру, но не видя многих вещей, которые известны только автору темы, не возможно ссылаться на другие данные, что бы получить желаемый результат!

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 20:35)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 20:33)
 

Да когда же до вас дойдет, что надо просто смотреть, где вы нажимаете ссылку "Ответить".
Почему половина новоприбывших на форум считает, что эти ссылки просто так расставлены в каждом посте?
Если вы отвечаете автору - то "Ответить" надо счелкать под его постом. А сейчас получилось, что вы ответили sim5, которому это совершенно не нужно.

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 21:04)   письмо автору
 
   для: neadekvat   (29.07.2010 в 20:35)
 

"автор: sim5 (29.07.2010 в 20:27) письмо автору
для: lElectroHardl (29.07.2010 в 20:22)

Ну и предлагайте ему свою "идею", мне то зачем такое нужно?
....
ваш код
ваш код
который мне не интересен
....

и результат:

И по идеи у вас будет выведена такая структура:
Авто:
-ВАЗ
-ЗАЗ
-ГАЗ
--БМВ
--РСБ

И смысл вашей "идеи"? Пусть опять в грязь, но в цивильном костюме? Беседуйте с автором, мне это не интересно, потому как глуп результат, а каким методом это достигается мне как-то....

>И по идеи у вас будет выведена такая структура:

У меня такая структура никогда не будет!"

И это писал конечно не sim5 и отвечаю я конечно не ему... Прежде чес ко-го учить, удостоверьтесь, что человек не прав.

  Ответить  
 
 автор: sim5   (29.07.2010 в 21:02)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 20:33)
 

1. Каталог - некий список информации об объектах, составленный с целью облегчения поиска этих объектов по какому-то признаку.
2. Каталог для навигации пользователя, это меню, конечные каталоги которого содержат конечные объкты (документы), хотя могут быть документы и в каталогах верхних уровней (при крайней необходимости).
3. Выбор каталога приводит к выводу содержащихся в нем документов. Вывод самих документов может быть разбит на порциональный вывод, если нельзя отобразить все документы сразу.
4. Помещать в меню кроме списка каталогов еще и списки конечных документов можно в том случае, если это один, два документа, хотя смысла в каталогах в этом случае нет.

Идея каталогизации автора просто бредовая, так как уже не отвечает пункту 1.
Вы повторяете идею автора. Не зависимо от того, как вы решаете вывод такой идеи, я его тоже считаю бредом, на что вам и ответил.

  Ответить  
 
 автор: lElectroHardl   (29.07.2010 в 21:08)   письмо автору
 
   для: sim5   (29.07.2010 в 21:02)
 

>>Вы повторяете идею автора.
Правильно. Вдумайтесь в эти слова. ...идею автора, а не свою.
Примерно такая ситуация:
Мне дали пластилин и бумагу. И сказали: слепи кирпичный дом!
Как я могу слепить кирпичный дом, если мне дали только пластилин?

Так же и тут. Мне дали только пластилин.

  Ответить  
 
 автор: neadekvat   (29.07.2010 в 21:10)   письмо автору
 
   для: lElectroHardl   (29.07.2010 в 21:08)
 

Я бы сказал "Ну и лепите сами кирпичный дом из пластилина".

  Ответить  
 
 автор: Babruisk   (30.07.2010 в 06:45)   письмо автору
 
   для: sim5   (29.07.2010 в 16:32)
 

По моему примеру там BMW находится в основной категории "Авто".



Ладно, поступим по другому.

Допустим имеется загруз центр.

Имеются категория "Видео", а в ней подкатегории "Авто", "Юмор" и категория "Спорт".

А я хочу добавить один фильм, но не хочу создавать под него новую подкатегорию, а хочу разместить его в основной категории "Видео".

Только не говорите, чтобы я создал подкатегорию "Разное", мне нужно именно так, как я объяснил.

  Ответить  
 
 автор: sim5   (30.07.2010 в 07:11)   письмо автору
 
   для: Babruisk   (30.07.2010 в 06:45)
 

Да пожайлуйста, куда вы там будете добавлять свои автомобили/видео, удобно ли их будет искать вашим пользователям, это вы сами с ними райзбирайтесь. Но при чем тут постраничная навигация да еще по двум таблицам, и вообще, что это значит?

Например, категория "Видео" имеет id=12. При выводе формы выводите список категорий, в котором можно выбрать категорию для помещения файлов. Обрабатывая форму по полученному значению списка категорий, вы получите id=12 (при выборе категории "Видео"). Делаете запрос на помещение записи имени файла фильма для категории с id=12. То еже самое и, если, для помещения вы выберите иную категорию, и как она у вас там будет дразниться, хоть "в полосочку", лишь бы она была в списке со своим значением id. Другое дело, если вам нужно создать новую категорию, значит вы делаете тоже самое практически, но добавляете не файл чему либо, а название новой категории, ее описание и прочее, и либо как категорию верхнего уровня, либо как вложенную в другую (родителя). В чем собственно проблема?

Постраничный же вывод, это кардинально иное понятие, а вы путаете понятие постраничной навигации с выбором каталога.

  Ответить  
 
 автор: Babruisk   (30.07.2010 в 07:15)   письмо автору
 
   для: sim5   (30.07.2010 в 07:11)
 

Извините, но вы сново не поняли меня.
Я имею ввиду именно постраничную навигацию.

т.е. мне необходимо вывести все подкатегории из основной категории, а после них файлы, в выбранной категории/подкатегории с разбивкой по страницам.

  Ответить  
 
 автор: sms-send   (30.07.2010 в 07:24)   письмо автору
 
   для: 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)) элементов

  Ответить  
 
 автор: sim5   (30.07.2010 в 07:31)   письмо автору
 
   для: 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
?

  Ответить  
 
 автор: oliss   (30.07.2010 в 09:33)   письмо автору
 
   для: sim5   (30.07.2010 в 07:31)
 

Тс не знает что такое " хлебные крошки" поэтому такой сумбур в определениях чего хочет и куда добавить
Может всё таки нужна навигация?

  Ответить  
 
 автор: sim5   (30.07.2010 в 10:16)   письмо автору
 
   для: oliss   (30.07.2010 в 09:33)
 

Навигация по категорям это меню. Если ему надо отобразить путь из категорий, еще понять можно. Но о какой он постраничной навигации в категории твердит, убейте, я не понимаю. Нетю такого.

  Ответить  
 
 автор: neadekvat   (30.07.2010 в 10:48)   письмо автору
 
   для: Babruisk   (27.07.2010 в 20:17)
 

Вы сейчас зарабатываете себе гемор, чтобы потом услышать от пользователей "WTF? Сделайте нормально!"
Вы тут начали с анекдотов, успели сказать про машины и какие-то видео.
Обычную постраничную навигацию вы делать умеете?
Если умеете, то у вас два варианта:
1. Писать сложный запрос к бд (сложный - значит с подзапросами типа JOIN)
2. Писать два запроса - один для каталогов, второй для анекдотов

  Ответить  
 
 автор: Babruisk   (30.07.2010 в 19:51)   письмо автору
 
   для: Babruisk   (27.07.2010 в 20:17)
 

Всем спасибо за помощь.

  Ответить  
Rambler's Top100
вверх

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