Пагинация страниц - каждую отдельную страницу надо создавать в БД?

123 4
P
На сайте с 06.01.2009
Offline
592
2087

Извините, за такой, может непрофессиональный вопрос.

Суть такая.

Все запросы направляются в index.php

Код в index.php пробегает по всем таблицам базы и если в одной из таблиц есть urlstranizy = $_SERVER['REQUEST_URI'] то запрос обрабатываем. Если ни в одной нет - то header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');

Есть раздел подбора материала - для этого раздела есть таблица 'podbor_tovara'.

Допустим я хочу сделать страницу - белый ламинат. Чтобы из всех 580 товаров из таблицы 'tovary' произошел отбор товаров только ламинат и только в белом цвете. Заношу в таблицу 'podbor_tovara' новую строку, в которой урл будет bely_laminat.php ну и заполняю другие поля - h1, title и т.д.

В итоге, войдя на страницу - bely_laminat.php мы получаем список товаров (белого цвета ламинат).

Но вот я с пагинацией не могу разобраться.

Допустим поставил лимит вывожу по 20 товаров, а внизу под товарами ссылки


1 | 2 | 3 | 4 |

где урлы такие bely_laminat.php?page=2, bely_laminat.php?page=3 и т.д.

Но если в таблицу 'podbor_tovara' не добавить эти урлы - то само собой index.php дает ошибку 404.

Не могу понять, как делают? Не руками же добавляют в таблицу все "пагинационные страницы" каждого такого отбора? (белый ламинат, серый, черный, длинный, коротки и т.д.).

Разъясните, пожалуйста.

ps просто если бы я сделал физически существующую страницу bely_laminat.php - то вообще нет проблем, в коде страницы мы получаем чему равна page и выводим товары...

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

topy
На сайте с 28.03.2006
Offline
142
#1

postavkin, вы просто не правильно с базой работаете.

Не надо при поиске "чего-то" создавать таблицу podbor_tovara и писать в нее значение из этой таблицы.

Надо сделать запрос на выборку из базы всех подходящих строк и "вытащить" их в массив, а потом циклом разобрать этот массив на строки (товары) и вывести их как душе угодно.

В случае постраничного вывода надо ограничивать этот запрос в базу через limit и в массив видирать по x значений.

Это на пальцах так сказать.

Новости коротко и ясно (https://subnews.ru)
P
На сайте с 06.01.2009
Offline
592
#2
topy:
postavkin, вы просто не правильно с базой работаете.
Не надо при поиске "чего-то" создавать таблицу podbor_tovara и писать в нее значение из этой таблицы.

Надо сделать запрос на выборку из базы всех подходящих строк и "вытащить" их в массив, а потом циклом разобрать этот массив на строки (товары) и вывести их как душе угодно.

В случае постраничного вывода надо ограничивать этот запрос в базу через limit и в массив видирать по x значений.

Это на пальцах так сказать.

Я может не четко объясняю...

Есть таблица товаров.

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

Таблицу 'podbor_tovara' сделал для страниц как бы отдельного раздела...Блин я вообще не понимаю...

---------- Добавлено 13.11.2012 в 13:05 ----------

topy:

Надо сделать запрос на выборку из базы всех подходящих строк и "вытащить" их в массив, а потом циклом разобрать этот массив на строки (товары) и вывести их как душе угодно.

В случае постраничного вывода надо ограничивать этот запрос в базу через limit и в массив видирать по x значений.

Так я могу так сделать.

Но мне нужна отдельная страница под некоторые запросы..типа белый ламинат, серый ламинат, ламинат матовый и т.д. Просто нужно сделать не страницу подбора товара (её я сделал), а ряд страниц под конкретные НЧ, причем в каждой странице много товаров, поэтому парюсь с пагинацией и не понимаю как её сделать при выше описанных условиях...

D
На сайте с 14.01.2007
Offline
153
#3
postavkin:
Так я могу так сделать.
Но мне нужна отдельная страница под некоторые запросы..типа белый ламинат, серый ламинат, ламинат матовый и т.д. Просто нужно сделать не страницу подбора товара (её я сделал).

если делать отдельные таблицы под товар, материал и свойства товара, то "сквозное меню" вы можете строить из таблицы "товар_свойства-товара" (н.4 в личке)

P
На сайте с 06.01.2009
Offline
592
#4
Dinozavr:
если делать отдельные таблицы под товар, материал и свойства товара, то "сквозное меню" вы можете строить из таблицы "товар_свойства-товара" (н.4 в личке)

Короче я понял - мне пора на завод обратно. Думал что умею, знаю. НиФИГа.

Получается что таблицу товаров я зря сделал.

В ней урл страницы, урл фото товара, название производителя, название коллекции, навзание цвета материала, артикул материала, размер материала, поверхность и ещё с 5 важных характеристик.

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

jpg 116165.jpg
P
На сайте с 06.01.2009
Offline
592
#5

Я вообще запутался. Не пойму.

Если не заводить ни в какую из таблиц страницу - 'krasnyj_laminat.php' - то как страница откроется...её ведь не будет существовать.

D
На сайте с 14.01.2007
Offline
153
#6
postavkin:
В ней урл страницы, урл фото товара, название производителя, название коллекции, навзание цвета материала, артикул материала, размер материала, поверхность и ещё с 5 важных характеристик.

1.в отдельную таблицу вы выносите то, что общее у многих товаров + по чему вам надо искать

артикул в таблицу к товару, "гранит" отдельно и + таблицу "соединения"(я не знаю как они правильно по-русски называются)

2. Пример "красный гранит". вы на главной, вам нужно построить меню.

идёте в таблицу "товар_св-товара", берёте id, по этим id в соотв. таблицах берёте название.

получили "красный гранит" и сделали из него "/красный-гранит.пхп"

кто-то кликнул на "/красный-гранит.пхп": идём в базу, проверяем, есть ли у нас такое сочетание и если есть берём кол-во.

предположим у нас 12 наименований и мы хотим 5 на страницу= всего 3 страницы= ставим внизу линки на "/красный-гранит_2.пхп" и "/красный-гранит_3.пхп"

так легче?

bay_ebook
На сайте с 28.05.2010
Offline
111
#7
postavkin:
Я вообще запутался. Не пойму.
Если не заводить ни в какую из таблиц страницу - 'krasnyj_laminat.php' - то как страница откроется...её ведь не будет существовать.

Для "red_laminant.php"


SELECT * FROM `tovar` WHERE `color` = 'red' AND `material` = 'laminant' LIMIT 50 OFFSET 0

Для "green_metal.php"


SELECT * FROM `tovar` WHERE `color` = 'green' AND `material` = 'metal' LIMIT 50 OFFSET 0

Ну это все конечно на пальцах для примера.

Суть - таблица одна с товарами, для цветов, материалов можно выносить доп таблицы (это если цветом и материалом у товара больше одного может быть).

А для вывода нужного товара или списка товаров - нужно играться sql запросами select с условием.

Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
P
На сайте с 06.01.2009
Offline
592
#8
Dinozavr:
1.в отдельную таблицу вы выносите то, что общее у многих товаров + по чему вам надо искать
артикул в таблицу к товару, "гранит" отдельно и + таблицу "соединения"(я не знаю как они правильно по-русски называются)

2. Пример "красный гранит". вы на главной, вам нужно построить меню.
идёте в таблицу "товар_св-товара", берёте id, по этим id в соотв. таблицах берёте название.
получили "красный гранит" и сделали из него "/красный-гранит.пхп"
кто-то кликнул на "/красный-гранит.пхп": идём в базу, проверяем, есть ли у нас такое сочетание и если есть берём кол-во.
предположим у нас 12 наименований и мы хотим 5 на страницу= всего 3 страницы= ставим внизу линки на "/красный-гранит_2.пхп" и "/красный-гранит_3.пхп"

так легче?

Да более менее понял. Спасибо.

Т.е. чтобы завести один новый товар - например ламинат tarkett bremo 47, мы бегаем по разным таблицам и заводим характеристики товара (то есть в нужном поле таблицы ставим id этого нового товара?)

---------- Добавлено 13.11.2012 в 14:10 ----------

bay_ebook - так а страницу "red_laminant.php" вы физически бы сделали или как?

---------- Добавлено 13.11.2012 в 14:12 ----------

Просто тема ушла немного в другое русло...А вопрос то был - главный в первом посте.

wwwwww
На сайте с 29.04.2011
Offline
195
#9

Почитайте теорию для начала.

Это ж как в первый класс пойти и не уметь читать.

ПРоектирование БД

Пагинация

Видишь? Свободная подпись.
P
На сайте с 06.01.2009
Offline
592
#10

Чтобы добавить новую статью на сайт, я захожу в таблицу бд 'statji' и добавляю новую запись - вношу урл (будет урлом страницы новой статьи), h1, title, content и т.д. Т.е. я назначаю урл и прочие данные.

Не могу спроецировать эту систему на страницы подбора материалов...

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий