У меня есть 3 таблицы: Товары, Товары в заказе, Заказы; При добавление нового заказа я вношу запись в Таблицу заказы: Код (Text): if($_SESSIONN['cart'] && $_SESSION['email'] && isset($_POST['order']){ $id = $_SESSION['id']; $data = data("Y-m-d H:i:s"); $status = "Новый"; $price = $price_order; $query = mysql_query("INSERT INTO orders(id_client, price_order, data_order, status) VALUES ('$id','$price','$data','$status')"); Далее мы перебераем сессию корзины и вводим в таблицу Товары в заказе id-шники товаров в магазине и их количество в заказе. Код (Text): foreach($_SESSION['cart'] as $id => $quantity): $product = get_product($id); $query = mysql_query("INSERT INTO items_in_orders(id_item_in_shop, id_order_in_shop, quantity_item_in_order) VALUES ('{$product['id']}', ???, '$quantity')"); endforeach; Добавлено спустя 52 секунды: Вопрос: Как засовывать постоянный id заказа?
при завершении работы с корзиной записать инфу о заказе и получить идентификатор заказа в таблице заказов. вполне логично что это должен быть первичный ключ с автоинкрементом. а потом уже итерируя контент корзины записать состав заказа. если сложить ваши два куска кода то логика у вас такая и есть. проблема я так понимаю в том что вы не знаете какой получился идентификатор заказа? mysqli_insert_id поищите.
Ну первое я создаю заказ, Там есть поле id_order. Оно автоинкремент. Теперь получается я его должен получить функцией mysqli_insert_id. И перебирая сессию корзины, просто вставлять его в запрос Добавлено спустя 7 минут 12 секунд: Как я понял Код (Text): if($_SESSIONN['cart'] && $_SESSION['email'] && isset($_POST['order']){ $id_client = $_SESSION['id']; $data = data("Y-m-d H:i:s"); $status = "Новый"; $price = $price_order; $query = mysql_query("INSERT INTO orders(id_client, price_order, data_order, status) VALUES ('$id_client','$price','$data','$status')"); $id_order_in_shop = mysql_insert_id(); foreach($_SESSION['cart'] as $id => $quantity): $product = get_product($id); $query = mysql_query("INSERT INTO orders(id_item_in_shop, id_order_in_shop, quantity_item_in_order) VALUES ('{$product['id']}', '$id_order_in_shop', '$quantity')"); endforeach; }
Ничего не работает проверил все. Имена таблиц и полей правильные не в этом ошибка. Код (Text): <?php if($_SESSION['cart'] && $_SESSION['email'] && isset($_POST['order'])){ db_connect(); $id_client = $_SESSION['id']; $data = data("Y-m-d H:i:s"); $status = "Новый"; $price = number_format($_SESSION['total_price'],2); $query = mysql_query("INSERT INTO orders_in_shop (id_client, price_order, data_order, status) VALUES ('$id_client','$price','$data','$status')"); $id_order_in_shop = mysql_insert_id(); foreach($_SESSION['cart'] as $id => $quantity): $product = get_product($id); $query = mysql_query("INSERT INTO items_in_orders (id_item_in_shop, id_order_in_shop, quantity_item_in_order) VALUES ('{$product['id']}', '$id_order_in_shop', '$quantity')"); endforeach; } ?>
во-первых, проверяете ли вы успешность запросов? во-вторых, проверяете ли вы что именно у вас в запросах? например меня смущает строка $product = get_product($id); - получается что в корзине хранится какая-то хрень которую потом приходится дополнительно обрабатывать функцией которая судя по строке {$product['id']} возвращает массив. в логике наверное ошибка.
Fatal error: Call to undefined function data() in /Applications/MAMP/htdocs/odeonsite/views/pages/order.php on line 63 вот ошибка в чем.
Всем спасибо вот готовый скрипт Код (Text): <?php if(isset($_POST['order']) && $_SESSION['total_price'] && $_SESSION['id']){ $status = "Новый"; $price = $_SESSION['total_price']; $data = date("Y-m-d H:i:s"); $id_client = $_SESSION['id']; $query = mysql_query("INSERT INTO orders_in_shop (id_client, price_order, status, data_order) VALUES ('$id_client','$price','$status', '$data')"); $id_order_in_shop = mysql_insert_id(); foreach($_SESSION['cart'] as $id => $quantity): $query = mysql_query("INSERT INTO items_in_orders (id_item_in_shop, id_order_in_shop, quantity_item_in_order) VALUES ('$id', '$id_order_in_shop', '$quantity')"); endforeach; } ?>