Как сделать корзину php
Перейти к содержимому

Как сделать корзину php

  • автор:

Создаем корзину для сайта

В этом уроке разберем, как можно создать корзину для сайта. Рассмотрим основные моменты. У нас будет страница с товарами, где для каждого товара будет кнопка купить со своим id, при клике на кнопку мы будем делать Ajax-запрос к php скрипту. В этом php файле будем создавать сессию корзины. Ну и напоследок сделаем страницу нашей корзины для сайта, где также при помощи Ajax-запросов можно будет менять количество товаров или удалять товар из корзины.

Вот наша страница с товарами:

      Корзина для сайта   

Товар 1

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae, modi!

Товар 2

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae, modi!

Товар 3

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Beatae, modi!

Теперь напишем скрипт обработки клика на кнопку, в котором мы получим id кнопки, который является кодом нашего товара и отправим его аякс запросом в файлик addtocart.php.

  

Также добавим на нашу страницы ссылку на корзину со счетчиком товаров.

Теперь создадим наш файл addtocart.php, где мы будем получать данные от аякс-запроса, открывать сессию корзины и записывать в нее добавленный товар. Сессия корзины будет у нас в виде массива, где индексами будут id наших товаров, а значения количество товаорв. При добавлении товара будем устанавливать количество 1, которое можно будет менять на странице корзины.

  else > $count = count($temp);//считаем товары в корзине $_SESSION['cart'] = $temp;//записывае в сесию наш масив echo $count; //возвращаем количество товаров ?>

Теперь сделаем страницу корзины cart.php. Мы будем выводить товары в виде таблицы:

input с количеством

У себя по id товара можете вытаскивать из базы информацию о товаре, для отображения названия, картинки, цены…

Вот код нашей корзины:

      Корзина   

Ваша корзина пуста

id количество Удалить $kol): ?> id товара: ">

Теперь подключим на нашу страницу корзины jqery и напишем скрипт отбработки изменения количества и кнопки удалить. Тут мы также будем делать аякс-запрос к нашим php-обработчикам, где будет меняться сессия корзины.

   

Осталось написать два php обработчика. В cartamount.php мы будем изменять количество товаров в нашей сессии, а в cartdel.php удалять в сессии запись с нужным id . Начнем с cartamount.php

Теперь в нашей сессии изменено количество и если обновим страничку корзины, то количество товаров сохранится. Теперь создадим обработчик удаления товара cartdel.php

 $_SESSION['cart'] = $temp; //сохраняем сессию ?>

Вот и все наша корзина для сайта готова, теперь можно создавать кнопку «оформить заказ» и там уже работать с нашей сессией корзины.

Как сделать корзину php?

Подскажите, пожалуйста, как можно сделать так, чтобы при нажатии на ссылку(кнопку) происходил переход в корзину, куда добавляется выбранный товар(бисквит)?

  ?> Учёт заказов для кондитерского цеха  body < font-family: Tahoma, serif; >a < display: block; color: #424242; text-decoration: none; text-align: center; border: 1px solid white; padding: 10px 0; margin: 0 0 10px 0; background: #fff; >a:hover  

Классический

Сладкий белый бисквит, пропитанный фирменным сметанным кремом. Классический десерт в классической форме.

Состав:
Яйца, сахар, мука, сметана.

" name="korzina" style="margin-right: 250px; margin-left: 650px; position:relative; top:-580px"> В корзину

Перерождённая классика

Ароматные медовые коржи, пропитанные сметанным кремом. Декорирован сметанным кремом, шоколадной глазурью и медовой крошкой.

Состав:
Яйца, сахар, мука, соль, сметана, мёд, шоколадная глазурь.

" name="korzina" style="margin-right: 250px; margin-left: 650px; position:relative; top:-695px"> В корзину

Ореховая нежность

Бисквит пропитанный сахарным сиропом и нежным кремом. Декорирован золотистым арахисом, кремовыми пампушками и жареной бисквитной крошкой.

Состав:
Яйца, сахарная пудра, сахар, миндальная мука, арахис жаренный, соль, сливочное масло.

" name="korzina" style="margin-right: 250px; margin-left: 650px; position:relative; top:-860px"> В корзину

Слабость королевы

Сладкий бисквит, пропитанный кремом. Оформлен ароматной клубникой, фруктовым желе и обожжённым белковым кремом с тонким карамельным ароматом.

Состав:
Яйца, сахар, мука, сливочное масло, экстракт ванили, цедра 1 лимона, взбитые сливки и клубника — для украшения.

" name="korzina" style="margin-right: 250px; margin-left: 650px; position:relative; top:-1010px"> В корзину

Сметанный

Сметанный шоколадный бисквит, пропитанный сахарным сиропом и сливочным сметанный кремом. Оформлен сливочным кремом и шоколадной глазурью.

Состав:
Яйца, сахар, мука, сметана, шоколад.

" name="korzina" style="margin-right: 250px; margin-left: 650px; position:relative; top:-1070px"> В корзину

Черепаха

Бисквитный торт, пропитанный сметанным кремом. Оформлен шоколадным покрытием и белковым кремом, декорирован под черепаху.

Состав:
Яйцо куриное, сахар, мука пшеничная х/п в/с, сливки на растительной основе, сметана, гель шоколадный, шоколадная глазурь, какао-порошок.

" name="korzina" style="margin-right: 250px; margin-left: 650px; position:relative; top:-1144px"> В корзину

введите сюда описание изображения

Таблица biskvit в базе данных:

Как создать корзину с мягким удалением в Laravel 8 и 7 Перевод

Всем привет! Я хотел бы рассмотреть некоторые концепции удаления в Laravel. Иногда нам может понадобиться спроектировать приложение так, чтобы в случае удаления пользователем данных, они не удалялись бы навсегда и все равно оставались в базе данных, но внешне не отображались. Laravel предоставил нам эту функцию «из коробки» под названием softDelete, поэтому я проиллюстрирую как удалить, просмотреть, восстановить и как навсегда удалить удаленные данные. Я назвал эту концепцию Корзиной (Recycle Bin).

Если вы предпочитаете видео, вы можете посмотреть видео на Youtube.

Шаг 1: Настройка приложения

localhost

  1. git clone https://github.com/Kingsconsult/laravel_8_crud.git
  2. cd laravel_8_crud/
  3. composer install
  4. npm install
  5. cp .env.example .env
  6. php artisan key:generate
  7. Добавьте конфигурацию вашей базы данных в файл .env
  8. php artisan migrate
  9. php artisan serve (если открывается сервер, http://127.0.0.1:8000, то мы готовы продолжать)
  10. Перейдите на http://127.0.0.1:8000/projects

Шаг 2: Добавить столбец deleted_at в таблицу projects

create migration file

В Soft Delete Laravel данные фактически не удаляются из базы данных, но к ним добавляется атрибут deleted_at, поэтому, когда мы запрашиваем данные из базы данных, Eloquent ищет данные с нулевым значением deleted_at и выдает их, но когда они имеют ненулевое значение deleted_at, обрабатывает их как удаленные.
Поэтому нам нужно добавить его и снова запустить нашу миграцию.

Шаг 3: Добавить столбец deleted_at в файл миграции

migration file

Запуск команды на Шаге 2 создаст файл миграции в database/migrations/, отредактирует файл и добавит $table->softDeletes(); в функцию up(), а также $table->dropSoftDeletes(); в функцию down(). Наш файл миграции выглядит следующим образом:

Шаг 4: Снова запустить миграцию

Нам нужно снова запустить миграцию, чтобы новый столбец был добавлен в существующую таблицу

migration

Зайдя в нашу базу данных, вы увидите новый столбец, созданный со значениями Null

database

Шаг 5: Включить трейт SoftDeletes в модели

Перейдите в app/Models/Project.php и добавьте трейт мягкого удаления. Он скажет модели только добавить дату к уже удаленной модели, но не удалять ее навсегда.

Также, добавьте путь трейта сверху

Шаг 6: Создать маршруты для получения всех удаленных проектов

Перейдите в routes/web.php и добавьте маршрут для получения всех удаленных проектов

Route::get(‘projects/deletedprojects’, [ProjectController::class, ‘getDeleteProjects’])->name(‘getDeleteProjects’);

Шаг 7: Создайте метод контроллера

В нашем маршруте выше мы указали методы getDeletedProjects в классе ProjectController, поэтому мы создаем этот метод. Перейдите в app/Http/Controllers/ProjectController.php и добавьте его:

public function getDeleteProjects() < $projects = Project::onlyTrashed()->paginate(10); return view('projects.deletedprojects', compact('projects')) ->with('i', (request()->input('page', 1) - 1) * 10); >

Из приведенного выше метода мы использовали Eloquent-функцию onlyTrashed(). Эта функция извлекает только модель с ненулевыми значениями deleted_at, поэтому она будет извлекать только удаленные проекты.

Шаг 8: Создать файл blade для просмотра всех удаленных проектов

Из нашего метода getDeletedProjects() выше, мы возвращаемся к представлению deletedprojects, поэтому нам нужно создать его, перейти к resources/views/projects/, создать файл deletedprojects.blade.php и скопировать индексную страницу, а затем отредактировать ее:

@extends('layouts.app') @section('content')

Laravel 8 CRUD

@if ($message = Session::get(‘success’))

@endif @foreach ($projects as $project) @endforeach

No Name Introduction Location Cost Date Deleted Action
> name >> introduction >> location >> cost >> deleted_at, ‘jS M Y’) >>

В столбце проекта action из приведенного выше кода мы добавили значок для восстановления удаленного файла — это удалит значение в deleted_at в таблице. Также мы добавили еще один значок для полного удаления проекта — это навсегда удалит проект из базы данных.

Далее, нам нужно создать функцию для восстановления удаленного проекта.

Шаг 9: Создать маршрут для восстановления удаленного проекта

Route::get(‘projects/deletedprojects/’, [ProjectController::class, ‘restoreDeletedProjects’])->name(‘restoreDeletedProjects’);

В нашем маршруте мы также указываем метод контроллера restoreDeletedProjects, поэтому мы направляемся к ProjectController и создаем этот метод.

Шаг 10: Создать метод контроллера для восстановления удаленного проекта

Перейдите в app/Http/Controllers/ProjectController.php и добавьте этот метод:

public function restoreDeletedProjects($id) < $project = Project::where('id', $id)->withTrashed()->first(); $project->restore(); return redirect()->route('projects.index') ->with('success', 'You successfully restored the project'); >

Шаг 11: Создать маршрут для полного удаления проекта

Нам также нужно создать функционал, чтобы полностью удалить проект, который мы не хотим оставлять в базе данных, поэтому давайте создадим маршрут:

Route::get(‘projects/retoreprojects/’, [ProjectController::class, ‘deletePermanently’])->name(‘deletePermanently’);

Step 12: Create the Controller Method

public function deletePermanently($id) < $project = Project::where('id', $id)->withTrashed()->first(); $project->forceDelete(); return redirect()->route('projects.index') ->with('success', 'You successfully deleted the project fromt the Recycle Bin'); >

index with all projects

Вот и всё! Давайте протестируем нашу работу
Мы создали проекты,

Мы также добавили значок корзины, который приведет нас на страницу, на которой мы показываем все удаленные проекты. Затем мы удалили два проекта и перешли на страницу корзины

recycle page

restored project

Это проекты, которые мы удалили с индексной страницы. Здесь у нас есть два значка: один для восстановления удаленных проектов, а другой для окончательного удаления проекта из базы данных.

Мы восстановили проект, и теперь он возвращается на главную страницу. Затем, наконец, мы полностью удалили другой проект.

permanently deleting a project

Вы можете просмотреть весь код в репозитории на GitHub.

Корзина, работающая на ajax, js, php и cookie

Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Нужно сделать корзину для интернет магазина работающую на ajax, js, php и cookie.

1. Общая информация (мини корзина), там где показывается 2 параметра: 1 – общее количество выбранных товаров и 2 – общая сумма выбранных товаров. Эта информация выводиться в небольшой блок корзины, как в обычных Интернет магазинах типа этого mebel7.ru и показывается пользователю на всех страницах.

2. Страница оформление заказа. В ней выводиться выбранные товары (id которых хранятся в куках) списком, напротив названий товара поле для ввода нужного количества товара, ссылка на удаление и сохранение этого товара. Короче также как тут: http://telephone.ru/advbasket (днс и сортировка не нужна, а кнопка оформить заказ – просто сделать заглушку)

3. Список товара (для теста хотя бы 5 позиций) напротив каждого товара ссылка о добавлении и поле, где указывать, сколько этого товара нужно добавить (как тут http://mebel7.ru/mebel/catalog/1/). И когда делается клик по позиции для добавления в корзину выводиться по центру информация (мини окошко на 3 сек.) об успешном добавление товара. Причем “мини окно” должно быть ровно по центру, не зависит от того, где мы находились внизу или вверху страницы каталога. И при добавлении в мини корзине изменяются ее параметры.

4. Сделать все эти пункты нужно без перезагрузки страницы!, т.е. на ajax, js, php. И самое главное условие ВСЕ должно работать максимально быстро с минимальной нагрузкой. Никакой лишней информации по передачи и только оптимизированный скрипт. А также все должно работать одинаково хорошо и быстро как минимум в 3 браузерах IE, opera, mozila. Использовать “хаки” и прочее запрещено! Все должно отвечать нормам.

Теперь техническая часть:

База данный 1 таблица:

CREATE TABLE `catalog` (

`id` int(11) NOT NULL default ‘0’,

`idcat` int(3) NOT NULL default ‘0’,

`name` varchar(255) NOT NULL default »,

`costrozn` int(11) NOT NULL default ‘0’,

KEY `idcat` (`idcat`),

idcat – id раздела где товар

name – название товара

costrozn – цена товара (целая)

Суть такая: когда передаем id товара и его количество из каталога (списка товаров) в скрипт php (который взаимодействует с БД и вытаскивает цену товара и проверяет, что такой товар вообще существует) через ajax то он пишется в Куки в виде массива или строки с разделителем (тут как быстрее и лучше), 3 параметра: id товара, количество его, цена за 1 единицу.

Если товар с таким id уже в Куках есть, то просто увеличиваем (изменяя) его количество на указанное во входящем.

Должна быть проверка на левое число (от дурака), т.е. вводить разрешено числа от 1 до 999 и никакие другие символы более!

Далее в мини корзину посылаются данные из Куков в виде всего двух параметров: общее количество и общая сумма товаров. Маршрут посылки и отправляемые данные нужно составить максимально простыми и очень быстрыми, чтобы все “летало” и работало железно.

Если корзина пустая то выдавать сообщение в мини корзине, что она пуста.

А вот кстати и вид мини корзины:

Товаров: 12 шт. на сумму

оформить заказ | очистить

Очистить – соответственно удалить все товары из корзины (Куков).

В html это стоит сделать, например на

Оформить заказ – это форма типа как http://telephone.ru/advbasket только управление ею происходит без перезагрузки страницы на ajax.

В ней тоже должны быть защиты от дурака.

Работать форма должна в связке с Куки и БД. Бежим по Кукам соединяемся с БД и выдираем от туда инфу (заголовок, цену, сравнимаем). Причем КАК ТОЛЬКО мы попадаем на эту форму, если есть товары в корзине (куки), то сразу перепроверяем и обновляем (если нужно) данные в корзине с данными в базе (Аля синхронизация), т.е. если цена в Куках не совпадает с ценой в БД, то изменяем Куки (ставим новую цену на нужный id) и выдаем новые данные в “мини корзину – которая и тут будет нас сопровождать, в шапке например” (это если товар в корзину положили, а оформить заказ решили через месяц (и Куки живы), когда цена уже поменялась на этот товар в БД).

Но стараемся конечно по возможности не обращаться к БД с лишними данными, делая лишнюю нагрузку, все обращения к БД должны быть обдуманными.

Куки сохранять нужно сроком на 3 месяца.

Писать скрипт нужно максимально грамотный, оптимизированный и со всем возможными защитами от дурака и других ошибок, задача сделать отличный очень быстрый скрипт корзины и оформления заказа (форма подсчета и управление корзиной “удаление, изменение количества товара”).

Если вы действительно готовы сделать выше написанное на профессиональном уровне, то тогда пишите за сколько WMZ и сколько времени вам потребуется для выполнения заказа.

Просьба не предлагать готовые скрипты!

А если вы предложите более логичный вариант по ТЗ и логике в некоторых местах, мы с радостью выслушаем их, но это уже лично!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *