/
burmistrova_irina
/
web-application
Обзор
Документация
Войти
/
burmistrova_irina
/
web-application
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
process_order.php
97 строк
3 KB
burmistrova_irina
upload files
21 фев 2025, 13:38
21 фев 2025, 13:38
08eb655
Код
Авторство
О чём код?
<?php session_start(); date_default_timezone_set('Europe/Moscow'); require_once 'db_connect.php'; header('Content-Type: application/json'); if (!isset($_SESSION['user_id'])) { echo json_encode(['status' => 'error', 'message' => 'Необходима авторизация']); exit; } try { $pdo->beginTransaction(); // Получаем товары из корзины пользователя $stmt = $pdo->prepare(" SELECT c.*, p.name, p.price, p.stock_quantity FROM cart c JOIN products p ON c.product_id = p.product_id WHERE c.user_id = ? "); $stmt->execute([$_SESSION['user_id']]); $cartItems = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($cartItems)) { echo json_encode(['status' => 'error', 'message' => 'Корзина пуста']); exit; } // Подсчитываем общую сумму заказа $totalAmount = 0; foreach ($cartItems as $item) { $totalAmount += $item['price'] * $item['quantity']; // Проверяем наличие товара if ($item['stock_quantity'] < $item['quantity']) { $pdo->rollBack(); echo json_encode(['status' => 'error', 'message' => "Недостаточно товара {$item['name']} на складе"]); exit; } } // Создаем один заказ на все товары $stmt = $pdo->prepare(" INSERT INTO orders (user_id, total_price, status) VALUES (?, ?, 'pending') "); $stmt->execute([$_SESSION['user_id'], $totalAmount]); // Обновляем количество товаров на складе foreach ($cartItems as $item) { $stmt = $pdo->prepare(" UPDATE products SET stock_quantity = stock_quantity - ? WHERE product_id = ? "); $stmt->execute([$item['quantity'], $item['product_id']]); } // Формируем текст для записи в файл $orderText = "=== Новый заказ ===\n"; $orderText .= "Дата: " . date("Y-m-d H:i:s") . "\n"; $orderText .= "Пользователь: " . $_SESSION['username'] . " (ID: " . $_SESSION['user_id'] . ")\n\n"; $orderText .= "Товары:\n"; foreach ($cartItems as $item) { $itemTotal = $item['price'] * $item['quantity']; $orderText .= "- {$item['name']}: {$item['quantity']} шт. x {$item['price']} ₽ = {$itemTotal} ₽\n"; } $orderText .= "\nИтого: {$totalAmount} ₽\n"; $orderText .= "================\n\n"; // Записываем информацию о заказе в файл file_put_contents('orders.txt', $orderText, FILE_APPEND); // Очищаем корзину пользователя $stmt = $pdo->prepare("DELETE FROM cart WHERE user_id = ?"); $stmt->execute([$_SESSION['user_id']]); $pdo->commit(); echo json_encode([ 'status' => 'success', 'message' => 'Заказ успешно оформлен' ]); } catch (Exception $e) { $pdo->rollBack(); error_log("Ошибка при оформлении заказа: " . $e->getMessage()); echo json_encode([ 'status' => 'error', 'message' => 'Произошла ошибка при оформлении заказа' ]); } ?>