AJAX
$(document).ready(function(){
//remove product from cart
$(".delete-product-cart").click(function(e){
var id = $(this).data('id');
$.ajax({
url: "remove_from_cart.php",
type: "GET", //send it through get method
data: {
id: id,
},
success: function(response) {
},
error: function(xhr) {
//Do Something to handle error
}
});
});
});
//remove_from_cart.php
<?php
// start session
session_start();
// get the product id
$id = isset($_GET['id']) ? $_GET['id'] : "";
// remove the item from the array
unset($_SESSION['cart'][$id]);
?>
//然后,我有了cart.php,在这里我按一下按钮可以在while循环中删除产品
。FOREACH中的会话购物车对更新产品很重要,而无需重新加载页面。那么,如何在不重新加载cart.php的情况下更新此会话购物车?
if(count($_SESSION['cart'])>0){
// get the product ids
$ids = array();
foreach($_SESSION['cart'] as $id=>$value){
array_push($ids, $id);
}
$stmt=$product->readByIds($ids);
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
product with ID here
}
}
我认为这会对您有所帮助。我曾经用过自己的代码。有很多改进之处,但我想这是您的学习项目
<?php
/**
* remove_from_cart.php
*/
// Test if the script gets loaded by a POST request
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['id'])) {
session_start();
$id = (int)$_POST['id'];
// remove the item from the array
unset($_SESSION['cart'][$id]);
}
/**
* cart.php
*/
if (isset($_SESSION['cart']) && count($_SESSION['cart']) > 0) {
// get the product ids
// Wy do this? your session is already an array with the ids
$ids = array();
// And here you add the key of the array to ids and not the product_id so you will get the wrong products
foreach ($_SESSION['cart'] as $id => $value) {
array_push($ids, $id);
}
$stmt = $product->readByIds($_SESSION['cart']); // Instead of $ids you can add the session
// this works, but add your fetch in your readByIds method to keep your code cleaner and return the array with products
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<div class="product-row">
<p><?= $row['product_name'];?></p>
<p><?= $row['product_price'];?></p>
<button type="button" class="delete-product-cart" data-id="<? $row['product_id']; ?>">Remove</button>
</div>
<?php
}
} else {
// Cart session doesnt exist or is empty
// Let the user know the his cart is empty
}
?>
<script>
$(function () {
// Remove product from cart
$(".delete-product-cart").click(function (e) {
var
button = $(this),
product_id = button.data('id');
$.ajax({
url: "remove_from_cart.php",
type: "POST",
data: {
id: product_id,
},
beforeSend: function() {
// Disable the button, to prevent duplicate request
button.attr('disabled', 'disabled');
},
success: function (data) { // Response data is not used now
button.parent().fadeOut(300, function () {
button.remove();
});
},
complete: function() {
// Make the button enabled again, for when the delete function didnt work the button can be pressed again
button.removeAttr('disabled');
}
error: function () {
//Do Something to handle error
}
});
});
});
</script>
因此,我很难从一个PHP文件到另一个PHP文件获取数组。 在我的第一个文件(file1.php)我得到了以下代码: 当然,当使用echo时,它将变得可见,并且输出正确的内容。它给了我一个包含订单信息的数组。现在我得到了另一个PHP文件,我需要在其中使用这些信息。 到目前为止,我尝试的是file1.phpfile2.php,然后回声数组...但结果却是一场空。 我尝试直接在文件1中回显我的数组。ph
我正在用PHP编写一个自定义购物车,我将产品信息添加到购物车会话中,如下所示: 我的挑战是:如果产品已经存在于$\u SESSION['cart]数组中,我想更新产品的价格和数量($qty),而不是添加它。像这样的
我正在跟随Laravel的购物车教程,但即使我已经将他的代码复制到了点子上,它也不像教程中那样工作。每次你点击一个产品时,购物车的数量应该会增加,但事实并非如此。 我正在学习Max Schwarzmueller的“Laravel购物车”教程,您可以在youtube上找到:https://www.youtube.com/watch?v=56TizEw2LgI 我是php、laravel和sessio
我正在为在拉雷维尔开会的客人建造一辆购物车。我可以向会话变量“cart”添加一个带有数量的产品但是,当我再次添加相同的产品时,我无法增加数量,因为我无法在数组中搜索相同的产品ID。 控制器 我正在将数据从我的AppServiceProvider传递到购物车: 查看 当相同的产品被添加到购物车时,我希望数量增加。如果没有,则向会话数组添加新产品id和数量
问题内容: 我将用户输入(在这种情况下,只是数量和产品代码)传递给php脚本,以通过ajax存储到会话数组中。我希望,每次用户单击“提交”并进行ajax调用时,数量和产品代码都会添加到会话数组中。但是现在发生的是,每次它更新会话中的现有数据时。因此,仅存在一对数据。 这是我的ajax脚本: 我的PHP sendToCart.php 问题答案: 每次进行ajax调用时,您都会覆盖会话变量。 您需要读
我正在尝试创建一个简单的购物车。 主要问题 页面