Прошу подсказать алгоритм - как сделать такое?

12
P
На сайте с 06.01.2009
Offline
601
1115

Ребят, извините, но в теме не высказать свой вопрос, так как просто места не хватит.

Есть страница - каталог товаров. В каталоге 970 товаров. Не могу понять, как реализовать создание страниц. Т.е. первую сделал с 20-ю товарами, а как остальные?

Внизу каждой страницы соответственно перелинковка страниц (на которых по 20 товаров 1-20 21-40 41-60 и т.д.

Но вот не пойму, я ссылки в этой перелинковке делать не хочу такого вида

catalog25.php?p=2 catalog25.php?p=3 и т.д.

Понятно что могу руками сделать страницы

catalog25-2.php

catalog25-3.php

и т.д. но страницы хранятся в таблице БД и хотелось бы и дальше так делать, те. чтобы я не физические страницы создавал (копировал) а просто в таблице бд это всё как то делалось.

Понимаю, запутано, но может кто подскажет алгоритм.

Просто запутался.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

Алгоритм подскажем:)

1) делаем запрос к БД(SELECT * FROM tbl1 лимит X, X+20). X=номер страницы из названия файла.

2)На странице рисуем в цикле ту строчку, где числа это ссылки (страница 1, 2, 3, 4, ... , N)

3) Ссылки вида сайт.ру/catalog25/2.php(такова вида точно знаю сделать можно)

4) Через ридирект все льем на основной файл.

5) Там уже берем это число(номер страницы) и подставляем в запрос.

Это если кратко:)

Подпись))
siv1987
На сайте с 02.04.2009
Offline
427
#2

Гуглите про пагинацию.

P
На сайте с 06.01.2009
Offline
601
#3
Милованов Ю.С:
Алгоритм подскажем:)
1) делаем запрос к БД(SELECT * FROM tbl1 лимит X, X+20). X=номер страницы из названия файла.
2)На странице рисуем в цикле ту строчку, где числа это ссылки (страница 1, 2, 3, 4, ... , N)
3) Ссылки вида сайт.ру/catalog25/2.php(такова вида точно знаю сделать можно)
4) Через ридирект все льем на основной файл.
5) Там уже берем это число(номер страницы) и подставляем в запрос.
Это если кратко:)

При этом страницы будут существовать для ПСов?

Страницы сайт.ру/catalog25/2.php

сайт.ру/catalog25/3.php

сайт.ру/catalog25/4.php

сайт.ру/catalog37/2.php

сайт.ру/catalog37/3.php

и т.д?

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#4

Да вообще можно на 1 файле разрулить.

сайт.ру/каталог/номерКаталога/номерСтраницы

И через реврайтРуль уже разруливаем как хотим.

ЗЫ. естесно для Псов они будут существовать.

P
На сайте с 06.01.2009
Offline
601
#5
Милованов Ю.С:
Да вообще можно на 1 файле разрулить.
сайт.ру/каталог/номерКаталога/номерСтраницы
И через реврайтРуль уже разруливаем как хотим.
ЗЫ. естесно для Псов они будут существовать.

потер. не заметил

---------- Добавлено 12.11.2012 в 22:59 ----------

Подскажите, пожалуйста, основную страницу категории мне делать реально физически существующей или в таблице БД заводить? Надеюсь я понятно выражаюсь. Спасибо

D
На сайте с 14.01.2007
Offline
153
#6

postavkin, вы же свою cms строите? тогда у вас "должен" быть только index.php в корне.

в htaccess перенаправляете ВСЁ в index.php

а там уже пляшете, как хотите

P
На сайте с 06.01.2009
Offline
601
#7
Dinozavr:
postavkin, вы же свою cms строите? тогда у вас "должен" быть только index.php в корне.
в htaccess перенаправляете ВСЁ в index.php
а там уже пляшете, как хотите

Да какое строю ;) Пробую, не более того.

Да много чего уже сделано. Но я тут просто суть понять не могу.

На текущий момент все запросы перенаправляю в index.php

Но вот как быть

делаю страницу laminat.php

в странице сейчас выводится 520 товаров (условно).

Но я хочу чтобы выводилось по 20 и внизу были ссылки на другие страницы.

Как построить ссылки я примерно понимаю.

Я не понимаю - как делать страницы....

Если их не добавлять в таблицу бд то index.php решит что страницы нет и выдаст 404.

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

Вот и запутался

_
На сайте с 13.11.2012
Offline
2
_A_
#8

Попробуйте так:

1. В .htaccess прописать:

RewriteEngine on

RewriteRule ^/catalog/([0-9]{1,})/([0-9]{1,})\.html catalog.php?catalog=$1&part=$2

Теперь все запросы вида site.ru/catalog/<число>/<число>.html будут идти в скрипт catalog.php .

2. В файле catalog.php сделать следующее:

а. Создать константу, содержащую необходимое число позиций на одной странице: define( 'CATALOG_POSITIONS' , 20)

б. Проверить GET переменные на правильность

в. Сделать запрос к БД

"SELECT * FROM catalog_table WHERE catalog = ".$_GET['catalog']." ORDER BY 'id' LIMIT ".(($_GET['part']-1)*CATALOG_POSITIONS).",".CATALOG_POSITIONS

г. Проверить количество найденных строк

Если их ноль, то выдаем ошибку 404

header("HTTP/1.1 404 Not Found");

И завершаем скрипт(если необходимо)

die();

Если строк больше нуля, то идем дальше

д. Выводите найденные строки на страницу

е. Делаете запрос:

"SELECT count(*) AS count FROM catalog_table WHERE catalog = ".$_GET['catalog']

Если count меньше или равна CATALOG_POSITIONS(т.е. 20), то смысла делать ссылки нету(т.к. в каталоге всего одна страница).

Если count больше CATALOG_POSITIONS, то необходимо вычислить количество страниц у каталога.

ё. Вычисляем количество страниц:

$count - количество страниц в каталоге(не забудьте создать переменную)

$catalog_pages = ceil($count/CATALOG_POSITIONS);

ceil - это округление до большего. Если, например, $count равен 125 и CATALOG_POSITIONS равен 20, то $catalog_pages будет равен 7 (6 страниц по 20 позиций и одна с 5-тью позициями)

ж. На основании $catalog_pages создайте ссылки на другие страницы каталога:

site.ru/catalog/номер каталога/номер страницы.html

Если не наделать ошибок, то поисковики это должны без проблем обработать и проиндексировать.

Не забывайте про безопасность при написании скрипта!

Самый стабильный хостинг (http://www.beget.ru/?id=27692)
Dreammaker
На сайте с 20.04.2006
Offline
569
#9
P
На сайте с 06.01.2009
Offline
601
#10
_A_:

Не забывайте про безопасность при написании скрипта!

Об этом вообще ничего не знаю.

Спасибо за расклад.

Я принял решение сделать для раздела подбора товаров страницы, которые будут существовать физически на сервере и обойдусь без всяческих обработчиков.

---------- Добавлено 13.11.2012 в 19:09 ----------

А вместо номеров можно буквы - т.е. слова?


site.ru/catalog/plitka/red.php
site.ru/catalog/plitka/blue.html
12

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