使用已保存的会话创建“购物车”

时间:2016-07-20 07:20:38

标签: php jquery wordpress session

**更新** 我让脚本工作,但我想有选择删除产品......

现在这是我的代码:

<?php

session_start();

if (!array_key_exists('products', $_SESSION) || !is_array($_SESSION['products'])) {
    $_SESSION['products'] = [];
}

$productName = array_key_exists('productName', $_POST) ? (string) $_POST['productName'] : '';

if ($productName) {
    $_SESSION['products'][] = $productName;
}
?>
<h4>Saved Items</h4>

    <?php foreach ($_SESSION['products'] as $product): ?>
    <div class="echo-product"><i style="color:#F60;padding-right:20px;" class="fa fa-anchor" aria-hidden="true"></i><?php echo htmlspecialchars($product); ?></div>
    <?php endforeach;?>



<div class="btn-01"><p>Offerte aanvragen</p></div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script>
$(function(){  // $(document).ready shorthand
     $('.btn-01').hide().fadeIn(1000);
});
</script>

好的,让我解释一下。在我的网站上,我有类似购物车的东西。客户选择一艘船,并说(对于这个例子)船型和可选项。

当他们这样做时,将会有几个选项。

访客现在可以通过点击“保存此选项”选择“保存”船只和选项。然后将此选项保存在会话中,代码为:

<?php
    // Set session variables
    $_SESSION["boat"][] = get_the_title();
?>

并使用此代码回应:

<?php if(isset($_SESSION['boat'])){
    echo implode("<br />", array_unique($_SESSION['boat']));
} ?>

这是第一个问题:

这个代码只有在我保存第一个船选项(有3个(A,B,C))时才能正常工作,然后它说(如果我回应它)选择船A.但是当我然后保存第三艘船时说“船A,B和C”得救了。它不会跳过B船。我不知道为什么会这样。有人知道吗?以及如何解决这个问题?

好的,第二个问题。相同的代码。我怎样才能使保存的选项在div #saved-options中可见,就像添加商品的购物车一样,如果它们也可以删除,那就太棒了。

如果我使用此代码:

<div class="col-sm-2">
    <div id="saved-boats">
    <h4>Saved boats</h4>

    <?php if(isset($_SESSION['boat'])){
        echo implode("<br />", array_unique($_SESSION['boat']));
    } ?>
</div>

然后所有的船都已经救了。我可以使用以下代码销毁会话:

<div class="col-sm-2">
    <div class="saved-boats">
    <h4>Saved boats</h4>
    <?php
        // remove all session variables
        session_unset();
        // destroy the session
        session_destroy();
    ?>  

    <?php if(isset($_SESSION['boat'])){
        echo implode("<br />", array_unique($_SESSION['boat']));
    } ?>
</div>

然后我就可以了,问题1但是没问题,但我仍然无法自动更新div #saved-boats

有没有人可以帮助我解决这些问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

你可以这样试试......

$stuff = array(...);

$_SESSION['boat'] = array('cart_data'=> $stuff);

$stuff = $_SESSION['boat']['cart_data'];

$stuff = // do your process like push or pop.

$_SESSION['boat'] = array('cart_data'=> $stuff);

回应你的数据。

<?php foreach($_SESSION['boat']['cart_data'] as $key=>$value){
    echo $value;
} ?>