Интернет-магазин на чистом PHP для портфолио PHP-разработчика
Решил написать интернет-магазин в качестве проекта для портфолио. Так как, по сути, это моя первая крупная программа (не только на PHP), хотел бы обсудить её реализацию. Узнать, что об этом думают разбирающиеся в сфере люди
В базе данных содержатся таблицы:
- users с данными о пользователях: id (Primary, Auto Increment), логин, пароль через password_hash(), email, расширение аватарки (имя файла совпадает с логином), ФИО, дата рождения, город, ранг (постоянный клиент, VIP и т.д.)
- products с данными о товарах: id товара, id категории, имя производителя, цена, количество товара на складе, оценка покупателей
- categories с данными о категориях товаров: id категории, id родительской категории, краткое описание
- orders с данными о заказах: id заказа, номер заказа, id покупателя, сумма, состояние заказа, способ оплаты, способ доставки
- ordered_products c заказанными товарами (т.к. в заказе может быть несколько товаров, создаю под них отдельную таблицу): id заказа, id товара, цена (с учётом скидки)
- images с фотографиями товаров: id, id товара, путь к файлу
При заходе пользователя на сайт открывается главная страница, на которую подгружается несколько товаров из базы данных в зависимости от оценки. При нажатии на кнопку "Аккаунт" открывается страница пользователя с его данными и отдельной вкладкой (кнопкой) под открытие списка заказов. В список заказов выводятся , сформированные из таблицы БД orders (WHERE ID = user_id)
При заходе администратора на свой аккаунт открывается две вкладки: список заказов (с выборкой по дате), и интерфейс для создания новых товаров, категорий на сайте.
Осталось ещё несколько функций сайта, которые я пока не знаю как реализовать.
- Где хранить комментарии и отзывы к товару в базе? Держать их вперемешку в таблице comments? Не будет ли в таком случае поиск среди всех комментариях слишком долгим?
- Как реализовать смену языка? Придётся прописывать отдельно новый сайт с английским языком и английской базой?
- Как ограничить пользователя одним отзывом на товар? Перед отправкой каждого отзыва проводить поиск по таблице отзывов этого товара?
Понимаю, что важно как можно больше продумать самостоятельно, но всё-таки хотелось бы снизить число ударов граблями по лбу к минимуму. Буду рад любым советам, не только касающимся указанных выше вопросов
Ответы (2 шт):
Интернет-магазин это не только товары и заказы, это обычный сайт, к которому прикручивается функционал магазина. Соответственно, в админке должен быть полный функционал по управлению сайтом. По поводу ваших вопросов:
- Разделить таблицы, ведь комментарии я оставляю ко всему магазину.
- Сделать можно по разному, но суть - в той же таблице, например, добавив языковых полей, типа title_ru, title_en
- Да, ищем отзыв юзера к товару и скрываем форму для отзыва.
- По поводу папки localization - годится только для статичных данных, типа названия месяцев, дней недель и т.д. Все остальное через БД.
По поводу всего остального - пишите, научитесь проектировать, столкнувшись с куууучей своих же грабель. А потом плюнете и будете работать с современными "свистоперделками", нужными для работодателей))
Рекомендую добавить 1. Таблицу с категориями товаров 2. Таблицу со свойствами товаров (привязывать к категориям) Чтобы при добавлении товара ему можно было присвоить свойство, например Лампочка - "Тип" [светодиодная, накаливания и т. д.].