PHP и с чем его едят....

Dre.hz

Active Member
Ок, тогда по порядку.

1. Как нарушить целостность данных в этой БД.
Редактируем Кефир, сохраняем его со значениями Химия > Молочные.
Тогда в таблице продуктов кефиру будет соответствовать пара Химия > Молочные, а в таблицах категорий будет пара Продукты > Молочные, а значит данные в БД противоречат самим себе.

2. Как нужно, Lite-версия.
Нужно просто убрать поле idCategoryProduct. Если нужно вывести все продукты из категории, то просто запросом типа:
Код:
SELECT p.* FROM products p, categories c, subcategories s WHERE c.idCategory=123 AND c.idCategory = s.idCategory AND s.idPodCategory = p.idPodCategory
3. Как нужно, расширенная версия, за что лично я бью по рукам.
- Если называете поля в lowerCamelCase, то называте все поля так. касается fileNameOwner.
- из названий полей можно смело убрать название таблицы. Нет смысла его повторять. Если хочетяс использовать его в запросах для наглядности, можно писать `categories.name`.
- Если названия полей на английском, то нужно заглянуть в словарь и перевести неизвестные слова. Касается idPodCategory -> idSubCategory
- Собственно, категории и подкатегории это одно и то же. У них даже таблицы одинаковые. Нет смысла хранить их в двух таблицах - должна быть одна. В ней будет поле типа parent, где будет указан ID родительской категории. В запросе таблицу можно джоинить саму с собой.
 

[fly]

Sweet orange
1. Как нарушить целостность данных в этой БД.
Редактируем Кефир, сохраняем его со значениями Химия > Молочные.
Тогда в таблице продуктов кефиру будет соответствовать пара Химия > Молочные, а в таблицах категорий будет пара Продукты > Молочные, а значит данные в БД противоречат самим себе.
Так, при редактировании товара, нет возможности сменить категорию - только подкатегорию. Подробнее:

Мобильные телефоны
Самсунг
Нокиа
Филипс

Видеокамеры
Панасоник
Сони

Фотоаппараты
Кенон
Олимпус


Товар можно перемещать только по красным пунктам. Нет возможности задать например:
Мобильные телефоны
Олимпус

Или я снова не верно понял.

- Если называете поля в lowerCamelCase, то называте все поля так. касается fileNameOwner.
- из названий полей можно смело убрать название таблицы. Нет смысла его повторять. Если хочетяс использовать его в запросах для наглядности, можно писать `categories.name`.
- Если названия полей на английском, то нужно заглянуть в словарь и перевести неизвестные слова. Касается idPodCategory -> idSubCategory
За это спасибо, сам понимаю, что как-то не доделано выходит. На счет названия полей - это для меня как идентификатор. Я сразу вижу откуда данные.

- Собственно, категории и подкатегории это одно и то же. У них даже таблицы одинаковые. Нет смысла хранить их в двух таблицах - должна быть одна. В ней будет поле типа parent, где будет указан ID родительской категории. В запросе таблицу можно джоинить саму с собой.
Тут не понял. У меня ведь есть кроме ID еще данные отдельно и для категорий и подкатегорий. Что это значит:
В запросе таблицу можно джоинить саму с собой.
Спасибо, что принимаете участие в моем развитии.
 

Dre.hz

Active Member
Так, при редактировании товара, нет возможности сменить категорию - только подкатегорию.
Тогда зачем передавать ID категории? Все это вертится вокруг этого вопроса - зачем _передавать_ ID категории со страницы редактирования?

По поводу категорий и субкатегорий в одной таблице. Сделал локально, скриншоты прилагаю.
1. Структура
2. Данные
3. Пример запроса

Делал на скоруюу руку, кодировка какая-то неадекватная стоит там... Должно быть utf8_general_ci
 

Вкладення

[fly]

Sweet orange
Тогда зачем передавать ID категории? Все это вертится вокруг этого вопроса - зачем _передавать_ ID категории со страницы редактирования?
Все верно. А ID категории для того, чтобы было проще (на мой взгляд) выводить товар кликнув на саму категорию. Без разбивки на подкатегории, а общим скопом.
 
Останнє редагування:

[fly]

Sweet orange
В общем буду изучать скрины. Как-то для меня это запутано получилось. Еще раз спасибо!
 

life-

Нафиг отвлекалово!
Есть вопросик. Возможно ли написать скрипт, который будет выполнять POST/GET запросы (как через curl), только IP адрес отправителя будет использоваться от клиента? То есть клиент должен делать запрос, а не сервер. Такое возможно?
 

Dre.hz

Active Member
Есть вопросик. Возможно ли написать скрипт, который будет выполнять POST/GET запросы (как через curl), только IP адрес отправителя будет использоваться от клиента? То есть клиент должен делать запрос, а не сервер. Такое возможно?
На стороне клиента обычно есть программа, которая может эмулировать curl - это браузер. Чтобы из браузера сделать GET-запрос можно, например, предложить юзеру кликнуть по ссылке, или перенаправить его послав header('Location: , а чтобы сделать POST можно, отправить форму. Еще можно соорудить XHR.

В реферере останется адрес сайта, с которого был переход.
 
Останнє редагування:

life-

Нафиг отвлекалово!
На стороне клиента обычно есть программа, которая может эмулировать curl - это браузер. Что бы из браузера сделать GET-запрос можно, например, предложить юзеру кликнуть по ссылке, или перенаправить его послав header('Location: , а чтобы сделать POST можно, отправить форму. Еще можно соорудить XHR.

В реферере останется адрес сайта, с которого был переход.
А если мне нужен будет HTML код сайта, куда я направляю клиента? И чтобы я мог послать дополнительные заголовки/куки, как в случае с curl. Такое возможно? Может не на PHP, AJAX к примеру?
 

Nikitenko

New Member
Всем добрый вечер. Подразумеваю, что мой вопрос уже неоднократно поднимался, но повторюсь: есть ли у нас в Сумах достойные курсы по php, либо репетиторы, которые смогут обучить веб-программированию? На данном этапе интересует именно php, так как html и css знаю. К java пока не дорос.
 
Зверху