postavkin

Рейтинг
601
Регистрация
06.01.2009
Dinozavr:
1.в отдельную таблицу вы выносите то, что общее у многих товаров + по чему вам надо искать
артикул в таблицу к товару, "гранит" отдельно и + таблицу "соединения"(я не знаю как они правильно по-русски называются)

2. Пример "красный гранит". вы на главной, вам нужно построить меню.
идёте в таблицу "товар_св-товара", берёте id, по этим id в соотв. таблицах берёте название.

Не воткнул - почему сразу из таблицы 'товары' не взять товары у которых колонка цвет='красный' а материал='гранит'. Не понял зачем 2,3,5 таблиц. Ребят, я сделал так.

На странице получил 100 результатов.

Я наверное не так объясняю задачу, но задача просто - страница физически не существует, как сделать так чтобы index.php не выдавал ошибку 404 при нажатии на "пагинационную страницу" красный гранит-2.php

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

Dinozavr:
1. пример: "/садасдф-гранит.пхп". в базе данных такой комбинации нет, вы пишите "товар не найден"
2. пример: "/красный-гранит_100500.пхп" в базе нет столько наименований->либо "не найдена", либо кидаете на "/красный-гранит.пхп"

Теперь понятно. Я не так сделал? Спасибо Dinozavr заранее


<?
// определим url
$tekurl = $_SERVER['REQUEST_URI'];
$tekurl = substr($tekurl, 1); // удалим первый слеш
// соед с бд
include('is/bd-soedinenie.php');
// пробежимся по всем таблицам БД и поймем есть урл или нет и в какой таблице он
$tablemass=array("statyi_001st", "zaprosy", "osnova", "proizvoditeli", "kollekzii", "tovary", "statyi2", "poisk_materialov");
$nooshibka=0;
foreach ($tablemass as $value) {
$result = mysql_query("SELECT id FROM $value WHERE urlstranizi='$tekurl' LIMIT 1");
$vsego = mysql_num_rows($result);
if ($vsego>0) {$nashatable=$value; $nooshibka=1; break(1);}
}
// отдаем серверу ошибку 404
if ($nooshibka===0) { header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');}
if ($nooshibka===1) {
//значит страница есть
if ($nashatable==='statyi_001st') {$razdel='statji';}
if ($nashatable==='zaprosy') {$razdel='zaprosy';}
и т.д.

У меня то существование урла проверяет по конкретному существованию записи...Нет записи с урлом - нет страницы.

ПОэтому и возник у меня гемор с пониманием того - как я могу сделать чтобы страницы открывались по ссылке red-laminat-2.php если в БД записан урл только red-laminat.php

т.е. таблицы надо вести как то так?

Спасибо

но все равно не понял, почему эти данные нельзя вести в одной таблице, в первой - сразу всё о товаре.

jpg 116172.jpg
Dinozavr:
грубо: дане,не:) просто чтобы решить вашу проблему, пришлось начать издалека:)

Не могли бы вы мне пояснить - как index.php определять должен существует страница или нет?

Может я нифига не понимаю, так как сделал не правильно изначально?

У меня index.php проходит все таблицы, смотрит - есть ли в какой из них текущий урл...если есть - определили раздел. Раздел определили - выводим соответств данные.

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

Dinozavr:
ээээ... урл=тайтл=h1. это для начала.
потом статья=товар, автор, число, тэги - свойства товара

и что все эти данные в одной таблице вести не правильно?

У меня в одной...и автор, и дата написания и подразел какой.

wwwwww:
Почитайте теорию для начала.
Это ж как в первый класс пойти и не уметь читать.
ПРоектирование БД
Пагинация

Спасибо, большое. Обязательно почитаю.

Но допустим я все таки отобрал товары, да криво, но пока проблем нет. Переделаю позже.

Мне сейчас не понятно другое

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

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

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 ----------

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

topy:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Всего: 5509