Корзина товаров для сайта на php
Как написать корзину для интернет-магазина на php? [закрыт]
Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме.
Как написать корзину на php? Желательно код с комментариями, или ссылку на сайт, где это все подробно описывается. Весь интернет обшарил, но нигде не нашёл.
2 ответа 2
Предлагаю такой вариант-вполне работоспособный и реализуем новичком: Используйте ajax для добавления товара в корзину. Все товары сохраняйте в текущей сессии, не думаю что там будут мегабайты из огромных списков с продукцией, поэтому базу пока отметаем или будем использовать в самом конце при покупке. ajax: Надо науйчить его отправлять только идентификатор товара (если такой имеется) и предусмотреть обновление циферки (это уже js) возле иконки на корзине. php: не забывать вытаскивать из сессии кол-во товаров и отображать возле корзинки. Также увеличивать список. Создать страничку корзины и заказа товара (конечная форма заявки). Написать код на php для записи товара в базу, где товаровед увидит заказ. Попробую что-то вменяемое прямо тут написать (без тестов, но суть думаю станет ясна): ajax:
Дальше теория: На странице оформления заказа выводите список товаров (надеюсь понятно откуда брать идентификаторы товаров), затем выводите поля для формы. Теперь что с базой делать или нет и какие плюсы и минусы: Если делать в базу то необходимо по крайне мере пару таблиц (одна для реквизитов заказывающего товар, а другая-это ассоциация с вашими товарами и текущих параметров заказчика). Данный подход вынудит делать в админке окно с просмотром заказов. Как сделать по другому:-без базы данных. Все что назаказывали и все что ввел про себя покупатель отсылать на почту.
Создайте корзину с PHP и MySQL
Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)
В этом еженедельном уроке screencast + мы научимся создавать собственную корзину покупок с PHP и MySQL. Вы увидите, что всё не так сложно, как кажется.
Предварительный просмотр скринкастов
Шаг 1
Начнём со структуры папок:
Структура
Шаг 2
Начнем с разметки html, а затем её оформления. Откройте index.php и скопируйте/вставьте код:
Как вы видите, наша страница имеет две колонки: основной столбец и sidebar. Теперь пройдём в CSS. Откройте файл style.css и пропишите код:
Вот как теперь выглядит наша страница продуктов:
Полный скринкаст
Шаг 3
Прежде чем перейти к части PHP/MySQL, нам нужно создать базу данных. Откройте phpMyadmin и выполните следующие действия:
Для экономии времени я экспортировал свою таблицу, чтобы вы просто запустили следующий запрос:


Шаг 4
До извлечения данных из базы данных я сделаю index.php шаблон для списка продуктов и корзины. Поэтому добавьте следующий код в начало страницы index.php:
Для этого нам нужно включить файл; добавьте эту строку в index.php между div с id “main”:
Теперь у нас полный index.php:
Давайте создадим соединение с MySQL. Откройте connections.php и пропишите следующее:
Шаг 5
Пропишем разметку для страницы продуктов. Откройте её и введите следующее:
Давайте посмотрим на страницу:
Как видите, это довольно уродливо. Давайте добавим этот CSS.
Выглядит намного лучше, не так ли? Внизу указан полный код style.css:
Шаг 6
Прежде чем извлечь продукт из базы данных, давайте удалим последние две строки из нашей таблицы (были нужны только для того, чтобы увидеть, как она будет выглядеть). Удалить это:
Отлично! Теперь в том месте, где были строки таблицы, введите следующий код PHP:
Если вы укажете одну из ссылок для добавления в корзину, увидите в нижней части страницы, что id передан.
Шаг 7
Давайте сделаем anchor работу, добавив следующий код в начало нашей страницы:
Проверим, установлена ли эта переменная сообщения и вызовите её на страницу (введите этот код под заголовком страницы H1):
Вот полная страница products.php.
Вот сообщение об ошибке, если id недействителен
Шаг 8
Вернёмся к index.php и пропишем sidebar. Добавьте следующий код:
Посмотрите на картинку снизу:

Шаг 9
Наконец, откройте cart.php и введите код:
Он похож на код из index.php и products.php, поэтому я не буду объяснять всё снова. Вы заметили, что количество теперь отображается не в форме, а в поле ввода (чтобы мы могли изменять количество). Кроме того, таблица заключена в form tag. Чтобы получить общую стоимость элементов, мы умножаем количество конкретного продукта (из сеанса) id на его цену. Это повторяется в каждом цикле.
Шаг 10
Наконец, нам нужно заставить форму работать. Поэтому добавьте этот код в начало страницы cart.php.
Вот заполненный cart.php
Надеюсь, урок вам понравился. Если появятся вопросы, посмотрите более подробный видеоурок!
Интерактивная корзина на основе AJAX, PHP и JQuery
«Какая корзина? И почему вдруг корзина?» — возможно удивитесь вы, прочитав заголовок. Так вот, корзина самая обычная — та, которую все мы используем, покупая что-нибудь в интернет-магазине. А опубликовать статью о ее создании, я решила по одной, единственной причине — не смогла устоять перед замечательным и красивым решением.
Не верите? можете посмотреть результат. А если вам интересно как это делается, читайте далее.
Вступление
В этой статье, мы собираемся создать корзину, работающую на основе технологии Ajax. Все товары будут записываться в базу данных MySQL, данные будут обрабатываться с помощью PHP.
JQuery, будет запускать Ajax на странице, кроме этого, плагин simpletip, добавит всему процессу интерактивности.
Итак, давайте начнем, скачайте демо-файлы, и начинайте чтение.
Шаг 1 – База данных MySQL
Если вы хотите получить рабочую демо-версию, вам понадобится выполнить следующий SQL-запрос в панели управления базой данных (то есть в phpMyAdmin). Этот запрос создаст таблицу, и внесет несколько продуктов. Этот код запроса, также доступен в файле table.sql, в демо-файлах.
table.sql
После этого, вам нужно заполнить данные вашей учетной записи MySQL, в файле connect.php.
Шаг 2 – XHTML
Сначала мы создадим основную разметку.
demo.php
Как вы могли заметить, из вышеприведенного кода, мы расположили наш контент в двух основных секциях, полностью идентичных с точки зрения XHTML-разметки. В первой колонке мы отображаем все наши продукты, вторая колонка выступает в качестве корзины.
Ниже, вы можете увидеть детальное представление структуры нашей секции товаров.
Товары, генерируются с помощью нашего PHP-кода, как можно увидеть в строке 18. Мы разберем это подробнее, через несколько минут. Теперь, давайте взглянем, как мы обработаем XHTML-разметку, для получения финального дизайна.
Шаг 3 – CSS
В этот раз, CSS-код получился очень длинный, поэтому я разделил его на две части.
demo.css
Обратите внимание на класс tooltip. Он создается автоматически, плагином simpletip, но не имеет никаких стилей, по умолчанию. Вот почему, мы назначаем ему стиль здесь. Я использовал свойство border-radius, которое еще не поддерживается всеми браузерами, но не принесет сильного ущерба, тем, кто его не поддерживает.
Теперь, давайте взглянем на CSS-стили, для секции корзины.
Любой разработчик скажет нам, что здесь мы кое-что упустили. Как вы, наверное, догадались – специальные процедуры лечения для IE6.
Лично я, планирую в скором времени прекратить поддержку IE6 во всех своих проектах – если бы не IE6, вышеприведенный код, был бы на четверть короче, и мне не пришлось бы тратить столько времени на его отладку.
Но, в любом случае, вот, что нам нужно, чтобы IE6 понимал, то, что мы от него хотим:
demo.php
Отлично. Теперь, давайте взглянем на окончательный вариант PHP.
Шаг 4 – PHP
Мы используем PHP несколькими способами и в разных местах. Для начала, давайте посмотрим, как формируется список товаров на главной странице.
demo.php
Далее, в файле tips.php, мы снова используем PHP, для того чтобы передать в качестве параметра имя файла картинки, проверяя какой товар ассоциируется с этим изображением, и выводим подсказку в виде HTML. Это позднее, будет использоваться плагином simpletip.
ajax/tips.php
Кроме этого, мы используем PHP для получения данных, необходимых для добавления товаров в корзину. Разница в том, что в этот раз мы получаем данные в качестве JSON (javascript-объекта).
ajax/addtocart.php
Полученный объект имеет свойства status, id, price и txt. Все они используются AJAX-функциями, как вы скоро убедитесь.
Обратите внимание на то, что я заканчиваю каждую строку обратным слешем. Это сделано потому, что JavaScript не поддерживает множественные строчки.
И последний файл, в котором мы используем PHP – это order.php, который используется для обработки заказа. Сейчас, он просто выводит ваш заказ. Мы можете изменить его, включив форму обратной связи, функции платежных систем, или что-нибудь еще, что позволит превратить этот пример в функциональный онлайн-магазин.
order.php
На этом, часть PHP закончена. Все, что нам осталось сделать, это добавить немного магии jQuery.
Шаг 5 – JQuery
Поскольку мы будем использовать jQuery в полном объеме, нам понадобится подключить библиотеку jQuery UI, так же, как и основную.
Теперь, мы можем продолжить с нашим скриптом.
script.js
Основная идея в том, что мы используем атрибут изображения src, в качестве уникального ключа, который передается PHP. Каждый товар в базе данных имеет поле c именем файла, что позволяет нам найти нужный товар по его картинке.
Этот блок кода выполняется после того как страница полностью загрузилась, так, что мы уверены, что все элементы на странице инициализированы.
Ниже представлена вторая часть кода script.js.
В нескольких местах этого кода, мы используем id для указания товара. ID – это уникальный идентификатор, который создается базой данных MySQL один раз, когда мы вносим новую позицию.
Он передается AJAX-запросом, и нам необходимо перевести его в index-позицию нашего массива товаров для дальнейшего использования, все это осуществляет функция findpos().
Теперь, наша интерактивная корзина готова.
23 комментариев
Чревато SQL-инъекциями, советую почитать тут http://phpfaq.ru/slashes
deerua, ну это просто учебный пример, но за ссылку спасибо
Отличная штука, впервые такую корзину увидел тут. И так здорово узнать, как такое сделать самому. Спасибо за перевод!
Кстати, если ссылки в комментариях подчеркивать или еще как-то выделять, они станут заметными 😉
а эта штука может заменить виртумарт на джумла? 🙂
Нет, конечно. Это просто учебный пример. Но я думаю такую корзину можно прикрутить к виртумарт, но это при желании, конечно 😉
хорошая статья. прочитал не полностью.
но в учебных статьях всё-таки стоит обращать внимание на безопасность, ведь многие просто скачивают исходники, и делаю только косметические изменения.
Забыл про тег code в предыдущем комментарии 🙁 В нем упосинаются соответственно теги html, div и /div.
Не слишком ли накладно хранить данные о покупках чела в базе? Может быть использовать сессии или на худой конец прикрутить к примеру redis
А с чего вы взяли, что в базе данных хранятся данные о покупках пользователя?
сорри, это не в ваш блог было ) Параллельно читал ещё пару статей на эту тему. Просто все предлагают хранить заказы в бд. Интересно, а как вы храните данные о покупках?
В данном примере, они вообще не хранятся, а стоит ли хранить такие данные в базе, зависит от того, насколько они важны. Например на основе таких данных, магазин может составлять какие-то коммерческие предложения для конкретного пользователя, рекомендовать похожие товары. Наверное в этом случае, стоит хранить их постоянно.
Но это я так, рассуждаю, на самом деле я никогда не занималась написанием интернет-магазинов 😉
Да, сначало увидел эту статью на англ., обрадовался переводу, спасибо. А где тут SQL — инъекция, тыкните носом пожалуйста 🙂
а как настроить чтобы покупки происходили на платежных системах
и чтобы приходили деньги на мой счет?
например yandex money или PayPal
Очень удачное решение.Немного доработать безопасность и можно прикручивать к любому магазину.Спасибо за статью!
Нужно создать сайт посредника тао-бао со следующим функционалом:
1.
Нужно, чтоб над боковым меню или в любом другом месте сайта находилась кнопка, «добавить в корзину» на скриншоте.
2.По нажатии на нее появляется Ajax форма для заполнения (можно и не ajax, а простую перелинковку на страницу с такой-же формой).
Форма заполняется ВРУЧНУЮ!
В графе ссылка можно указать ссылку только с сайта тао-бао, цена-только цифры.
В случае неверного заполнения выскакивают такие ошибки в форме:
По окончании правильного заполнения и нажатия кнопки «отправить»,товар перескакивает в корзину, а перед нами появляется вот такое сообщение:
Тут все понятно, объяснять не буду.
3. Теперь о самой корзине.
Как я выше написал, при заполнении формы из п.2 и нажатии кнопки «отправить», товар попадает в корзину.
Теперь, при нажатии на эту корзину загружается отдельная страница со следующей информацией:
Информация в корзине должна быть та-же!Все просто,понятно и доступно!
При оформлении заказа нам доступны следующие функции:
Удалить товар,ссылка на товар (ссылка из формы с п.2), количество товара с изменяющейся ценой за товар внизу и кнопка «оформить».
Допустим, с количеством и товаром все правильно,нажимаем «оформить».Появляется вот такая форма:
Тут пользователь может заполнить обратные данные и нажать на кнопку «оформить».
4.Далее, заполненную форму можно отправить на почту посредника тао,а можно подключить форму оплаты с выбором оплаты:интернет-кошельки, онлайн оплата с банковских карт или оплата на счет в банке через терминал.Варианты оплаты,я думаю,лучше присылать в письме клиенту, который сделал заказ.А можно все онлайн платежи оформлять сразу и только после этого форму с оплаченым заказом присылать на почту посреднику тао,а в случае,если пользователь захочет оплатить товар в терминале-отображать для него данные о оплате,а посреднику тао-отправлять письмо о предзаказе товара.
Как-то так.
Конкретнее: добавление товара в корзину происходит путем заполнения специальной формы, в которой указываешь цену товара с сайта taobao, ссылку на него и обратные данные (Все это легко делается с помощью Contact Form 7). После заполнения формы товар появляется в корзине. При чем цена та, которую указали вы в этой самой форме.
Как мне раелизовать такую же возможность, как на сайте, по ссылке выше!?
Нужно,чтоб данные с этой формы шли в корзину, в которой будет производиться суммирование цен заказа и впоследствии, отправляться в виде письма на почту заказчику для оплаты.А еще лучше, если в этой самой корзине будет прикручена форма оплаты.
Надеюсь, на данном блоге обитают довольно опытные и отзывчивые люди. Буду очень благодарен за ответ. Слежу за комментариями…
Дмитрий, вы часть тех задания скопировали. Предлагаю оформить заказ в любой из веб-студий, а не флудить в комментах к добротной статье. Автору статьи — респект.
Корзина для интернет магазина php
Здравствуйте уважаемые читатели блога LifeExample, сегодня мы продолжим создавать интернет магазин с помощью PHP и реализуем еще несколько его модулей собственными руками. В прошлой части урока мы реализовали такие компоненты как каталог, карточка товара, и ЧПУ, а также сделали задел для системы наполнения каталога. Сегодня мы будем заниматься разработкой маленькой корзины для интернет магазина.
Пока я не начал описывать рабочий процесс, хочу выразить благодарность первым комментаторам, задающим толковые вопросы, а также тем людям, которые отсылают свои вопросы на мой контактный адрес. Спасибо, за то, что вы есть, и за то, что помогаете мне своими вопросами найти силы не опускать руки, по данному проекту и продолжать его развитие.
Еще хочу заметить, весь код, который я представляю, не претендует на 100% правильность и в ваших силах найти в нем ошибки и оптимизировать, так как вы считаете нужным. Целью данного проекта является не дать вам готовую «болванку» интернет магазина, а научить всех желающих мыслить и самостоятельно разрабатывать PHP программы. Теперь давайте перейдем к процессу разработки нашей системы.
Предлагаю сразу скачать материалы по данному уроку, для наглядности наших дальнейших действий.
Приступим. Какой же интернет магазин без корзины, в которую можно положить товар? Правильно, таких магазинов не существует, поэтому сейчас мы разработаем скрипт для маленькой корзины.
Маленькая корзина для интернет магазина
Под термином маленькая корзина, я понимаю тот интерфейс представления отложенных для покупки товаров, который, как правило, размещается в шапке сайта.
Маленькая корзина служит своеобразным индикатором для посетителей, по которому пользователь может ориентироваться в количестве отложенных товаров и итоговой сумме заказа.
С первого взгляда, кажется, что нет ничего проще, чем реализовать подобную вещь, с помощью сессии, но существует ряд подводных камней. Например, если поставить задачу: чтобы при возврате пользователя на сайт корзина была наполнена теми же товарами, что и на момент его выхода. В этом случае просто сессией не обойдешься.
Существует несколько способов решения данной задачи:
В большинстве случаев второй вариант подходит лучше первого, поэтому мы его и разработаем. Т.е. в итоге у нас корзина должна работать в связке session + cookies
Приступим, отрываем header.php и вставляем в верстку вывод нашей корзины:
Можете посмотреть на то, как изменился внешний вид сайта. Теперь давайте углубимся в структуру системы и начнем создавать нужные файлы.
Так как компонент маленькая корзина для интернет магазина не является отдельной страницей, то контроллера для нее мы создавать не будем, внешнее представление у нас уже есть в общем шаблоне, поэтому и отдельного views она тоже иметь не будет, а вот model все-таки придется сделать.
В папке \application\models\ создадим файл cart.php с таким содержанием:
Данная модель будет обновлять информацию о содержимом корзины. Пока нам достаточно иметь только функцию добавления товаров, но на будущее создадим интерфейсы для функций удаления товаров и отчистки корзины.
Все данные о продуктах из корзины, у нас будут храниться в массиве $_SESSION в виде ассоциативного массива, ключами которого будут ID продуктов, а значением – количество этих продуктов в корзине. Такой минимализм сыграет нам на руку при передаче этой информации в куки.
Теперь у нас есть модель Application_Models_Cart, и логично предположить, что она должна, откуда-то вызываться. Вызываться модель будет из контролера каталога. Почему каталога? Потому, что ссылки ‘В корзину‘ у нас расположены на странице каталога, завязанной на файлах view-controler-model относящихся к компоненту catalog. А еще и потому, что пока переходить на страницу большой корзины мы не будем. При нажатии на данные ссылки, мы должны оставаться на странице каталога, а информация в маленькой корзине должна изменяться.
В результате получим ссылку вида
При клике пользователя на данную ссылку, mvc-система передаст управление в application /controllers/catalog.php. Куда мы сейчас вставим нужный код обработчика данного события:
Так как мы пока не знаем что такое AJAX и без перезагрузки страницы никак не сможем обойтись, мы просто возвращаемся на страницу каталога, для того чтобы увидеть изменения в корзине. (Об основах AJAX можно прочесть тут.)
На этом можно было бы остановиться, если бы не стояла задача сохранения информации при возвращении пользователя после закрытия браузера. Самое время вернуться к пропущенной строчке:
Стоит предупредить, что далее людям, мало разбирающимся в ООП, будет сложно понять код построчно, но в рамках общего смысла не будет ничего сложного. Что же происходит в этой строке:
Помните первым шагом в этой статье мы в header.php вставили код:
Так вот, теперь вы наверняка понимаете, откуда берется данный массив $smal_cart и можете заметить, что логическая цепочка обмена информации замкнулась.
Стоит заметить, что при отключенных куках, данный механизм функционировать не будет, ровно также как и любой механизм, использующий сессии, так как идентификатор сессии для ее корректной работы хранится и передается все теми же кукмами.
Всем тем, кому требуются более тщательные объяснения, советую писать вопросы в комментариях, либо мне на e-mail.
Сегодня мы добавили немало кода, который требуется обмозговать и переварить, прежде чем преступать к следующим частям магазина. Надеюсь, что у вас не возникнет трудностей с пониманием данной статьи “Корзина для интернет магазина php”. Если вы еще не подписались на e-mail или rss рассылку, не стесняйтесь — подписывайтесь. Скачать листинг данного урока можно по ссылке:
Читайте также похожие статьи:
![]()
![]()
![]()
Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.































