Если Вы попали на этот сайт и ищите разработчика, то Вы попали не по адресу, данный сайт посвящен обучению программистов, а статья — научить программистов делать качественные интернет-магазины.
Если у Вас ещё нет минимальной базы знаний, то добро пожаловать на базовый курс, где Вы получите этот самый минимальный уровень. После прохождения первого уровня у Вас уже будет минимальная техническая база, осталось лишь знания все объединить изучив «Как создавать интернет магазин». Идеально же пройти и оба курса второго уровня моей школы, но не обязательно. Данную статью я бы рассматривал как инструкцию, техническое задание на создание магазина без кода, код каждый напишет самостоятельно. И самое важное, это не «учебник для начинающих», а полноценная профессиональная статья предназначенная не только новичкам в помощь, но и высокой квалификации гуру. Итак, приступим:
Создание интернет-магазинов процесс не очень сложный, но имеет множество интересных деталей, из-за чего создавать сайт можно как 1 неделю сделав всё на низком уровне без должного функционала, так и работать до выпуска первой версии 3 месяца, а уже после дорабатывать, как поступили разработчики rozetka.com.ua.
Как создать приложение магазина Android + IOS + Сайт. Бесплатный урок!
Создание интернет магазина на базе готовой CMS
Быстрый и хороший способ получить готовый интернет магазин — купить готовую CMS (созданный интернет магазин сторонними разработчиками), где Вашей задачей будет: установить в несколько кликов мышкой, запустить и наслаждаться готовым сайтом. В CMS на подобии 1C-Bitrix, Amiro, OpenCart (свежий рейтинг CMS: http://www.ratingruneta.ru/cms/shop/) встроен весь базовый функционал, но любые доработки будут намного сложнее, чем в случаях самостоятельной разработки, так как Вам необходимо будет не только дописать этот сам функционал, но и разобраться как устроен базовый.
Объем необходимых знаний для штамповки сайта на любой CMS достаточно большой, допустим Bitrix создал целую школу: школу обучения CMS 1C-Bitrix. Если у Вас уже есть огромный опыт работа в Битриксе, допустим, то Вы без проблем сможете создавать новые интернет магазины любой сложности, но вот если их нет, то Вы так же много потратите время сопоставимое с созданием самостоятельно подобной сложности сайта. Хочу заметить, что именно самостоятельная разработка интернет магазина распространена среди любителей FrameWork Yii, Zend, Laravel по той причине, что толковых готовых CMS на базе данных фреймворков нет!
Самостоятельное создание магазина
Интернет магазин состоит из нескольких блоков, самые простые вроде «создать страницу отзывов» или «создать страницу контакты» Вы и самостоятельно можете создать, давайте разберём именно сложные вопросы.
Каталог товаров:
Как сделать ANDROID приложение за 10 минут! Сможет каждый :3
Одна из самых объемных тем. Если у нас простой магазин без разделения на категории, то создать простую таблицу `products` и поместить в неё товары. Если же появляются категории, то нам обязательно необходимо создавать отдельную таблицу под категории, связь же между товарами и категориями настоятельно рекомендую именно многие ко многим по той причине, что один товар может одновременно располагаться в нескольких категориях (стул — категория для работы и категория для отдыха, или же Брюки-шорты).
В случаях разделения категорий на подкатегории существует 2 пути разработки. Самый простой для новичков в том случае, когда мы 100% уверены, что глубина Вам заранее известна (Категория-подкатегория-подподкатегория), тогда можно уложиться и в хранении категорий в одной таблице, так и в нескольких отдельных.
На более профессиональном уровне применяют иерархические структуры данных (Деревья). Существуют 3 основных популярных алгоритма хранения: Список смежных вершин (Adjacency List), Вложенное множество (Nested Set), Материализованный путь (Materialized Path), где каждый из алгоритмов имеет свои плюсы и минусы. Допустим один из них проще получить товары категории, когда как второй позволяет более быстро перекладывать подкатегорию между категориями. Этот подходы позволяют создавать бесконечную глубину, где в категории «Обувь» будет лишь одна подкатегория «пол», а вот в компьютерах мы получим подкатегории такие как «pc», «mobile», pc же разделим на платы «памяти», «видео», «звук», «сетевая», которые мы так же сможем разделить на подкатегории по марке товара: ASUS, INTEL. Давайте взглянем на схемы:
Обратите внимание, что Adjacency List очень удобен тем, что как бы мы не шли вглубь, всегда у нас есть id_parent и по цепочке можно добраться в самое начало, очень понятный вариант, как мне кажется, так как если мы захотим выбрать все категории внутри FOOD нам достаточно сделать запрос на WHERE `id_parent` = 1. Конечно, тут возникает трудность в построении крошек (Food / Vegetable / Potato), но никто не мешает закэшировать в отдельной таблице или поле эту самую цепочку в любом удобном виде и перестраивать при изменении родителя в цепочке. Если рассматривать Nested Set, то тут можно добавить колонку «type», в которой будем писать, является ли это товаром или категорией, а далее делать выборку всех товаров где стартовый и конечный идентификатор будет в диапазоне родителя.
Если Вас пугает, что диапазон 1-14 у Food, то не бойтесь, ведь можно создать 1-100`000, тогда уже все категории и подкатегории поместятся. В этом подходе не так сложно выбрать товары, как перестроить дерево в случае переноса подкатегории в другой раздел, удалении подкатегории или добавлении новой, особенно когда мы хотим сохранить систему сортировки данного дерева.
С третьим вариантом Materialized Path всё так же понятно, конечно использовать запросы, пусть даже с индексом, через LIKE ‘1.1.%’ не очень симпатизируют, но вариант вполне рабочий. Некоторые движки могут объединять подходы для более высокого результата. Тема объемная по написанию кода, с другой стороны существует масса готовый примеров необходимых запросов для каждого из примеров. Допустим на уровне Doctrine ORM.
Далее идут фильтры для товаров. Если у нас простой сайт с одной категорией фильтров, то тут ничего сложного, можно в таблицу товаров добавить эти варианты, но если у нас идёт более разнообразные фильтры, то есть для жесткого диска мы применяем фильтры «обороты» и «объем данных», то уже для монитора идут совсем иные фильтры. Тут нам вновь поможет связь многие ко многим:
Как мы видим, тут вновь всё достаточно просто, обращаемся к products_option_value, хотим получить id товаров, у нас имеется id_option (имя опции) и value (значение опции), то есть `id_option` = ‘Производитель’ AND `value` = ‘ASUS’.
А теперь мы приходит к новой проблеме фильтров: фильтры на rozetka, основная проблема в том, что их много, и так для каждой категории или подкатегории. Профессиональные сайты не делают выборку всех пунктов и всех вариантов на каждой странице, после формирования списка фильтров создаётся кэш фильтра, можно даже в формате .html готовый список с радио-кнопками и на странице лишь подключается через include.
В свою очередь кэш фильтра перестраивается во время изменения этих самых фильтров в админке, а это значит, что некоторые кэш-фильтры были созданы более года назад и не поддавались изменениям. Нужно ли использовать кэш для простых сайтов? Если честно, то я придерживаюсь позиции, что время — деньги, а оптимизировать надо не всё на странице, а лишь узкие места сайта по необходимости. Если на сайт заходит 100 человек в сутки, до 10 онлайн, то от затраченных человеко-часов заказчик потеряет только деньги за эту работу, но ничего не заработает. А вот вложиться в оптимизацию можно уже в момент необходимости, когда сайт перестанет работать на столь хорошем уровне.
Завершением товаров хотелось бы акцентировать внимание, то свойства: топ продаж, акция, нет в наличии, отзывы, репутация товара — это всё создаётся достаточно просто, одним полем в таблице товаров, особенно когда это относится ко всем товарам в Базе Данных. Я бы этот функционал добавил бы на уровне разработки сайта, ведь создать его достаточно просто, а пользоваться им можно будет в любое время. Не стоит забывать, что разрабатывая магазин в интернете мы так же создаём некий шаблон, который в будущем можно будет перенести и использовать уже на другом сайте!
Корзина товаров и оформление
Второе правило работы с клиентами гласит, что все клиенты «почти» слепые, глухие, немые и тупые 🙂 Прошу прощение, если кого-нибудь мог обидеть, все совпадения с реальными людьми вымышлены! Правило очень простое — показать, объяснить, акцентировать внимание и т.д. На самом деле многие бизнесмены и программисты со стажем так думают, но не со зла, а с заботой, чтобы создать более удобный и простой интерфейс.
В продолжении создания корзины для интернет магазина надо сразу представить где мы будем хранить эту самую корзину. На ум приходит SESSION, COOKIE, MySQL и т.д. Сразу отсеиваем SESSION, так как любого человека могут отвлечь во время оформления заказа на любой её стадии. Человек должен вернувшись на сайт продолжить оформлять свой заказ.
MySQL плох тем, что мы будем со временем засорять нашу Базу Данных неоформленными заказами, которые надо будет чистить по крону спустя месяц игнорирования заказа. Куки же плохи тем, что люди могут начать заказывать на телефоне, а продолжить уже на PC дома или в офисе. Создание личного кабинета и корзины или, хотя бы, SESSION в MySQL позволит решить эту проблему, достаточно будет лишь убедить человека зарегистрироваться или авторизироваться.
В целом авторизация — крайне важная вещь. Запомните, чем проще человеку авторизироваться, тем больше шансов, что он завершит её. Последнее время я полюбил пользоваться авторизацией через FaceBook, ведь чтобы авторизироваться мне надо мышкой нажать на иконке FaceBook и всё. Особенно это актуально для мобильных телефонов, где набирать логин и пароль не такое уж и удовольствие.
Поиск на сайте
Конечно на сайте это отдельный целый инструмент, по факту я хотел бы акцентировать внимание на подобный поиск, где при наборе выходит список с подсказками: Search Dropdown:
Работает функционал через вывод найденных элементов в нижний DIV. При изменении поля дёргается скрипт, который и выполняет подстановку. Для простых списков AJAX не нужен, но могут быть списки и более сложные, попробуйте вбить слово war на сайте: https://goodgame.ru/, выглядит это так:
Опережая Ваш вопрос скажу сразу, что поиск идёт по всем необходимым таблицам, по всем необходимым полям. В связи с чем запросов много, код обрабатывается тяжело. Конечно, не стоит впадать в безумие и делать поиск по всем таблицам, когда наш сайт посвящен продаже товаров, наша цель подсказать и вывести товары пользователю, значит запрос делаем к таблице товаров, но имейте ввиду, что бывают и более обширные объемы. Для поиска в центре слова не используют LIKE %буква%, а используют поисковые системы Sphinx и т.д. (о Sphinx есть во втором уровне PHP, но я не агитирую).
Создание CMS интернет-магазина — админ панель
Удобно, просто, понятно — это итак очевидные вещи, давайте акцентируем внимание на безопасности. В первую очередь даже над минимальным интернет-магазином начинают работать несколько сотрудников и не всегда эти сотрудники хорошие люди. Важно понимать, что сотрудников и даже Вашего босса надо оградить от ненужного ему функционала, — никто не отменяет уязвимости CRSF в админке.
Допустим, редактор товаров на сайте должен иметь право добавлять товар, а так же отредактировать и удалять только свои товары. Раздел клиентской базы, контакты, email адреса — всё это скрываем от данного сотрудника.
Слежку никто не отменял, поэтому не забываем логировать действия сотрудников и это не только полезно от вредоносных действий, но так же позволит быстрее определить источник багов на сайте, а их будет и не один десяток при первой разработке сайта. Мне нравится уже придуманная ранее до нас система распределения прав в файловой системе Unix: «владелец», «группа», «остальные». Используя связь многие ко многим мы создадим группы «менеджер товаров», «менеджер статей», далее человеку, который должен иметь право пользоваться разделами товары и новости как раз присвоим эти 2 раздела (снова же нас спасает связь многие ко многим). В тему безопасности я бы добавил, что нельзя давать администраторам и менеджерам полной правки HTML на сайте, хватит и обычного редактора WYSIWYG с отключенным форматированием HTML кода. Пример взят отсюда: TinyMCE.
В тему удобства я бы ещё добавил идентификаторы количества изменённых действий. То есть если 10 заказов сформировали клиенты, значит в админке напротив вкладки «заказы» должна красоваться цифра 10.
Когда требуется быстрое реагирование на заказы, то вешают крон и добавляют Notifications. Поверх этого ещё звуковой сигнал, который отлично проявил себя ещё со времён icq, сегодня — skype.
Блокировка сайта — функционал, при котором на сайт ставится заглушка «временно не работает», и пока заглушка стоит, Вы можете чистить Базу Данных, перегонять новый прайс вместо старого или проводить другого рода технические работы. В целом, пока оборота не будет слишком большого, то и от подобной заглушки толку нет.
Наблюдение за функционированием сайта. Обычный код, который проверяет все файлы на изменение (с момента последней проверки), запускается по крону, игнорировать можно фото и видео файлы для снижения нагрузки, скрипт должен рекурсией пройтись по всему сайту и убедиться, что изменений не было. Если какой-то из файлов был изменён, то необходимо бить тревогу!
Скорее всего сайт был взломан или был загружен вирус. Я бы делал огромное уведомление при каждом заходе на сайт о состоянии сайта. Если уж углубиться, то подобные вещи можно слать СМСкой на телефон или по почте для ускорения реагирования. Помимо взлома необходимо быть уверенным, что служба CRON работает нормально.
Любой сбой службы может привести к тому, что cron не будет работать и Вам надо будет его перезагружать вручную. Самый простой способ в начале выполнения крон-скрипта добавлять в MySQL пометку о том, что скрипт начал выполнение в специальную таблицу контроля. При открытии админ панели выводить сообщение, что крон не был выполнен в случае ошибки. Если мы ставим выполнять крон каждый 1 час, то ставьте «бить тревогу» когда прошел интервал более 1 часа и 1 минуты между вызовами.
Резервное копирование. Один из важнейших моментов для бизнеса. Пункт №1 — всегда необходимо иметь полную копию сайта локально у себя, а так же эту же копию предоставить заказчику. Далее снимать вручную бек-ап MySQL можно через Sypex Dumper 2. Можно поставить на cron вызов:
mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql
Если объемы не очень большие, то поставьте на cron запуск скрипта 1 раз в 1 час / 1 сутки, и по созданию dump.sql отправляйте его на указанную почту и тут же удаляйте. Генерируйте уникальное имя, закройте доступ из-вне к sql файлам сервера. Вызвать внешнюю команду через PHP можно при помощи функции exec.
Бек-апы можно создавать и на уровне хостинга, зачастую всего за 30 рублей можно приобрести такие услуги:
Но тут не стоит забывать, что можете столкнуться с ситуацией, когда админы хостинга напишут «извините, у нас бек-апы не создавались», хотя Вы платили за них (жизненный опыт, повезло, что я хотел лишь одну запись откатить, но название хостинга называть не буду). Поэтому доверять посторонним людям мне кажется глупой идеей. Для более профессиональных высоконагруженных серверов берут 2 отдельных сервера, где связывают MySQL между серверами при помощи MASTER-SLAVE репликации, а файловую систему синхронизируют через rsync.
Поддержка
Помните главную вещь — сайтов без багов не существует! Есть баги, которые всплывают сегодня, а есть те, о которых клиент узнает спустя несколько лет. Продавая сайт Вы всегда должны давать гарантию, что Вы будете поддерживать сайт. Зачастую схема такая — первые месяца поддержка бесплатная, а по окончанию за плату.
Профессиональные фирмы могут не давать бесплатную поддержку в начале, так как у них уже исправлены все ошибки базовые. Зачастую новые версии выпускаете не только Вы, но и крупные системы вроде Yii, Zend, Laravel, ведь кто-то нашел новую дыру в огромном ядре. Что делать? Идите обновляйте у себя, убедитесь, что обновление не поломало работу сайта, а далее загружайте исправления клиентам.
Идеально было бы, когда система имела функционал самообновления, то есть если выходит новая версия, то она автоматически загружается всем пользователя и Вам не придется бегать за каждым клиентом. Выпускайте с Вашей стороны патч и наслаждайтесь свободой (данная система действует в Windows, Google Chrome, Антивирусы и т.д.). Единственное, я бы настоятельно рекомендовал проверять по 10 раз обновления перед загрузкой. А система обновления всегда создавала резервную копию обновляемых файлов (резервируют обновляемые файлы: nVidia drivers, Windows и т.д., из-за них Ваше место на винчестере с каждым днём сокращается 🙂 ). Данная тема поддержки попала в эту статью не для того, чтобы научить Вас поддерживать сайт, а научить создавать сайт, в котором будет встроен механизм поддержки.
В заключении хочу сказать, что не сдавайтесь перед трудностями, каждый новый интернет магазин созданный Вами приблизит Вас к идеальному пониманию программирования, а я же Вам пожелаю удачи и терпения дождаться новых тем посвященных созданию веб-сайтов.
Источник: school-php.com
Как я в 15 лет написал интернет-магазин
Я заинтересовался программированием в 5-том классе. У меня в школе был кружок по HTML. Я туда пошел, походил, потом заболел, пропустил несколько уроков. Мы дошли до таблиц и я уже не смог догнать программу.
Но в 7-ом классе во втором семестре мы уже должны были учить HTML по школьной программе. И я снова очень заинтересовался сайтами. Стал смотреть видео типа «CSS за час». И уже через несколько месяцев, когда дети делали это:
Тут даже есть JS. Сверху можно менять тему. И она сохраняется в LocalStorage.
Потом папа нанял учителя и я стал делать такое:
Выучил flexbox, grid. Но эти сайты были никому не нужны, то есть их никто не использовал.
Но тут, каким-то чудом появилась возможность написать сайт про Модель ООН для детей. Там должна была быть возможность зарегистрироваться на модель и с админки принимать или отказывать человеку.
По советам учителя, была выбрана CMS Modx. Тогда я не знал вообще, что такое база данных, SQL, да и вообще умел просто верстать страницу с минимальным JS. Многому меня научил учитель, но многое пришлось учить самому. В modx можно писать сниппеты на PHP.
Такое получилось. Это конечно было коряво. SQL таблицы у меня были не связаны, я знал только базовые SELECT, UPDATE и DELETE. И при входе в аккаунт, пользователя не сохраняло после закрытия браузера.
Но для меня это был уже большой прогресс.
Был еще школьный проект, нужно было написать сайт, написал сайт про школу, там сделал закачку изображений на сайт и парсил школьное расписание с основного сайта.
Далее был проект написать сайт, на котором было меню ресторана. И его нужно было изменять через админку. Он тоже был на modx и использовал PHP.
В последний момент, когда уже показывал работу, оказалось, что я при изменении продукта забыл дописать WHERE И изменялись все продукты.
Потом был еще один сайт, но он был просто страничкой без интерактива (просто CMS Modx без ничего), выучил только как делать многоязычие в modx.
Затем вышел год прокрастинации:)). Вообще я участвовал в проекте Italent.
Но, учитывая, то что у меня намечалось еще много проектов, родители решили меня перевести в дистанционную школу на экстерн, где нужно сдать всего две контрольные в год по предмету и на них дается 24 часа.
Мой папа занимается автоматизацией магазинов и ресторанов. В конце лета 2020 года заказ поступил из сети магазинов мяса. Нужно было написать программку для автоматизации процесса выдачи зарплаты. У каждого сотрудника была ставка за день и раз в неделю выдавали заплату.
Каждый день нужно было прийти и через интерфейс программы моего папы «открыть» день с помощью считывателя магнитных карт. Каждая карта имела код и он был привязан к сотруднику.
В программе нужно было показывать отчеты по магазинам и по сотрудникам (сотрудник мог работать в двух магазинах за день, есть магазины, которые находятся через дорогу друг от друга). Если сотрудник пришел позже открытия магазина или ушёл раньше закрытия, то строку нужно было подсветить красным.
Цель была найти такую платформу, где можно просто перетаскивать из тулбокса элемент на форму, потому, что писать команды типа: form.add_button() — это сложно и долго.
Из вариантов нашел PyQt, но он у меня вообще не запускался. Поэтому выбор пал на С#(winforms). Тогда выбрал .NET Framework, не знал тогда, в каком направлении движется Microsoft.
Использовал DataSet(xds) и там указывал SQL запрос.
Вот структура базы:
Я выучил, что такое joins в sql, хранимые процедуры, views, немного узнал о C# да и вообще много чего.
Решил попробовать переписать папину программу. Узнал про технологию WPF. Решил писать на ней, потому, что WinForms уже устарела и у WPF больше возможностей. Ну и выбрал уже .NET Core(.NET 5). Сырой SQL мне уже не нравился, прочитал про ORM Entity Framework.
База данных была MS SQL Server.
Научился делать экспорт в Excel. Выучил UniformGrid в WPF. Этот список можно продолжать очень долго..
В декабре 2020 года оказывается, что у сети магазинов, для которой я писал программу, есть интернет-магазин на Bitrix, и они с ним мучались. Это все работало так:
Человек оформлял заказ, он поступал в программу битрикса, оператор видел заказ, смотрел адрес, заходил в Google Maps, искал адрес, куда человек заказал и определял, какой магазин ближе, звонил в этот магазин и диктовал заказ, а кассир в магазине его вводила в программу, с ФИО и номером телефона, а ведь легко можна ошибится.
Конечно же, с увеличением заказов ставало еще сложнее. Возникла идея написать сайт с нуля с автоматической отправкой на магазин в программу папы. Магазин нужно было привязать к адресам. В моем случае это были улицы Киева и еще несколько городов. Причем магазин мог отказаться от заказа и он мог отправится на другой магазин.
Пообещал написать сайт, а я в душе не знал как такое писать. Раз уже изучил C#, легче всего было на нем и писать, так и сделал. Выбрал ASP.NET Core.
Также нужна была программа для оператора, где можно изменять продукцию, смотреть заказы и если магазин отказался, то выбрать магазин. Для программы все также, как и к прошлой, но решил что надо Entity Framework Core, сразу была проблема, там оказывается нужно самому писать Include связанных объектов, когда Entity Framework делал join всех связей автоматически.
Планировалось еще сделать редактор страниц, чтобы пользователи могли сами редактировать их. Я его сделал, но в итоге заполняю сам.
Ну и началось. Купил книгу по основам ASP.NET Core, Blazor Components и WPF, стал писать элементарщину. Узнал про паттерны проектирования (MVC, MVVM).
Стал писать, не получалось ничего. Все было сложно и не работало. Потом понемножку написал корзину и справочники в программе. Так и написал сайт.
Потом другие магазины мяса тоже захотели себе сайты, пришлось сделать таблицу с настройками, для каждого индивидуальными.
Еще клиенты попросили сделать статистику. Выучил как рисовать графики в WPF.
Было еще много проблем. Изначально не закладывалась возможность заказа без регистрации, а это необходимая функция, пришлось попотеть.
Было еще колесо фортуны с продуктами. Мне нужно было из JS, по окончании кручения, вызвать C# событие, сделал его статическим, поскольку его было легче вызвать из JS, а о последствиях не задумался. Колесо запустил с 10 до 11 утра. Выиграть можно было много, и народа налетело. Много человек одновременно заказывали.
И, когда крутилось колесо, к примеру, у трех человек, то когда у первого докручивалось, сайт записывал подарок в базу и показывал поздравление, но поскольку событие статическое, то оно вызывалось на всех трех колесах и записывало три подарка одному человеку, а поздравление показывало всем.
Вспоминаю это время с ужасом! Пришлось потом вручную подарки в базе менять.
Итог
За это время я многому научился. Когда я хотел переписать папину программу (я ее не забросил), то мотивация со временем пропала. Когда же писал интернет-магазин, то пообещал сделать то, что не умел, но это очень увеличило мою мотивацию, и поскольку не хотелось подвести, я учил все очень быстро, можно сказать включил turbo boost!
Мне еще есть куда стремиться, паттернами, к примеру, у меня в коде даже не пахнет. Надо когда-нибудь выкинуть этот сайт и написать заново. Интересно, какие проекты меня ждут в будущем?
Но мои интересы — это не только программирование, а также монтаж видео (мой канал) и многое другое. Я еще не определился, кем я буду, но все-же думаю, что что-то связанное с программированием.
Спасибо за прочтение моей статьи!
Источник: habr.com
Делаем простейшее подобие интернет-магазина.
Хотя, конечно, вернее будет назвать это «система заказа товаров на сайте».
Но, глядя на сайты многочисленных российских фирм, которые работают
именно по такому принципу (www.dostavka.ru, www.depo.ru, www.wstore.ru),
мы тоже с пафосом назовем набор простеньких скриптов «ИНТЕРНЕТ-МАГАЗИН».
Что для этого потребуется: любой web-сервер, поддерживающий работу с cgi.
Вполне подойдет apache, eserv, pws. Установленный php версий 3.0.х — 4.0.х,
установленный сервер баз данных mysql (хотя, не имеет значения какой именно —
но этот пример написан исходя из того, что установлен именно mysql).
Платформа не имеет особого значения. Это будет работать и на win32, и на unix.
Что мы хотим получить: чтобы пользователи, путешествуя по нашему сайту,
могли заказать интересующие их товары, и чтобы этот заказ попал к нам в руки.
А дальше уже начинается обычная работа менеджеров.
Определим задачи:
1) Каждый пользователь при заходе на сайт должен получить уникальный идентификатор.
Мы же должны знать кто именно заказывает товары?
2) Для каждого пользователя у нас должна хранится виртуальная «корзина»,
где будет учитываться что заказано и в каком кол-ве.
3) В конце концов, весь заказ отправляется по e-mail менеждеру (с информацией кто, когда,
что и сколько заказал) и самому пользователю сделавшему заказ.
Делаем таблицы для базы данных товаров. Здесь нужна оговорка — идеальный случай,
если у вас каждый товар имеет свой уникальный код.
По всем правилам именно так и должно быть.
У вас не так? Сделайте поле auto_increment — сильно облегчите жизнь.
Вообщем, будем счиатать что с базой товаров у Вас все ок.
Для определенности, рассмотрим самый простой случай — у вас всего одна таблица с
примерно такой структурой:
create table main ( id varchar(20) not null, manufacture varchar(255), name varchar(255) not null, price double(8,2) default ‘0.00’ not null, primary key (id) ); insert into main values ( ‘1002575’, ‘manuf_1’, ‘tovar 1’, ‘150.21’); insert into main values ( ‘125575’, ‘manuf_1’, ‘tovar 2’, ‘254.02’); insert into main values ( ‘1255757’, ‘manuf_1’, ‘tovar 3’, ‘456.24’); insert into main values ( ‘4556852’, ‘manuf_2’, ‘tovar 1’, ‘75.24’); insert into main values ( ‘15957725’, ‘manuf_2’, ‘tovar 2’, ‘5721.01’); insert into main values ( ‘5732548’, ‘manuf_2’, ‘tovar 3’, ‘685.49’);
Но никакой разницы принципиальной нет, конечно же.
1) Делаем файл, в котором у нас каждому пользователю присваивается идентификатор:
else < srand(time()); $uid = md5(uniqid( «»)); setcookie ( «cookie_tmp»,$uid,time()+604800, «/»); >?>
Источник: www.internet-technologies.ru