Невозможно вставить данные корзины в таблицу MySQL. Я могу вставить данные клиента при нажатии кнопки «Отправить», но не данные корзины. Может кто-нибудь помочь мне разобраться в этом? Таблица должна содержать такие данные, как идентификатор, название продукта, цена, количество и общая цена.
$(document).on("click", "#register_btn", function () {
$.ajax({
url:"php/register_customer.php",
method:"POST",
data:{
name: document.querySelector("#customer_name").value,
phone: document.querySelector("#customer_phone").value,
},
success:function(data)
{
console.info(data);
}
});
})
function load_cart_data()
{
$.ajax({
url:"php/fetch_cart.php",
method:"POST",
dataType:"json",
success:function(data)
{
$('#cart_details').html(data.cart_details);
$('.total_price').text(data.total_price);
$('.final_price').text(data.final_price);
$('.final_quantity').text(data.total_quantity);
$('.total_tax').text(data.tax);
$('.badge').text(data.total_item);
}
});
}
register_customer.php
<?php
session_start();
include('config.php');
if (isset($_POST['name'])) {
$customerName = $_POST["name"];
$customerPhone = $_POST["phone"];
$cart_detail = [];
foreach($_SESSION["shopping_cart"] as $keys => $values) {
$sql = "INSERT INTO `cart` (`name`, `price`, `quantity`, `total_price`) VALUES (?,?,?,?)";
$statement= $dbh->prepare($sql);
$res = $statement->execute([$values['product_name'], $values['product_price'], $values['product_quantity'], $values["product_quantity"] * $values["product_price"]]);
}
$sql = "INSERT INTO `customers` (`customer_name`, `customer_phone`) VALUES (?,?)";
$statement= $dbh->prepare($sql);
$res = $statement->execute([$customerName, $customerPhone]);
if ($res) {
echo json_encode(['res'=>"success"]);
}
}
?>
Мутная таблица:
CREATE TABLE IF NOT EXISTS cart
( cart_id int(11) NOT NULL AUTO_INCREMENT
, name varchar(100) NOT NULL
, price double(10,2) NOT NULL
, image varchar(255) NOT NULL
, quantity int(10) NOT NULL
, total_price varchar(100) NOT NULL
, vegnonvegimage varchar(255) NOT NULL
, PRIMARY KEY (cart_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Как вы пытались отлаживать свой код?
product_name значение для этого показывает undefined на консоли
Тогда это кажется довольно простым решением. При определении $_SESSION["shopping_cart"] убедитесь, что каждый из них включает ключ product_name.
Теперь я получаю значение, но дата не вставляется в таблицу
СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ cart (cart_id int (11) NOT NULL AUTO_INCREMENT, name varchar (100) NOT NULL, price double (10,2) NOT NULL, image varchar (255) NOT NULL, quantity int (10) NOT NULL, total_price varchar (100) NOT NULL, vegnonvegimage varchar (255) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (cart_id)) ENGINE = InnoDB DEFAULT CHARSET = latin1;
У вас проблема либо на стороне клиента, либо на стороне сервера. Начните со своего клиента. Игнорируйте AJAX, это излишество, придерживайтесь только своего JS / jQuery. console.info все. Как только это будет хорошо, вы можете перейти к AJAX. На стороне PHP не используйте базу данных, просто выгружайте все, чтобы посмотреть, что к чему. Как только это сработает, вы можете начать помещать его в базу данных.
Все нормально работает. Я даже получаю значения product_name, price amount в register_customer.php и даже данные клиента вставляются. в базу данных, но данные корзины не
Хорошо сделано. Спасибо
NOT NULL в запросе предотвратит вставку, поскольку вы не передаете никаких значений, поэтому они не могут быть нулевыми, если вы прочитаете мой комментарий о try / catch, он будет показывать ошибку и решил бы вашу проблему час назад (либо установите значение или не помещайте NOT NULL в столбцы таблицы)
Или определите значение ПО УМОЛЧАНИЮ.
Между прочим, столбцы с именем price почти никогда не являются DOUBLE (или VARCHAR); именно поэтому был изобретен DECIMAL.
Всем большое спасибо. Очень помогло.






$_SESSION["shopping_cart"]установлен и заполнен? оберните try / catch, чтобы увидеть, есть ли ошибки