在图像切换上更新php Session变量

时间:2013-12-05 03:25:55

标签: javascript php html

我试图让用户只需点击图片即可在购物车中添加/删除商品。我还希望图像在点击时更改,以显示已购买此项目的数量。

最后,我希望购物车存在于同一页面的单独标签上。

到目前为止我所拥有的是:

<?php session_start(); ?>
...
...
<div style="display: block; width:1024px;">
<img id="image_id" src="image.png" width="110" height="110" style="margin-left:40px";>
<script>

$('#image_id').toggle(
    function() {
        $(this).attr('src','image1.png');
        <?php $_SESSION['cart']['image_id'] = 1; ?>
    },
    function() {
        $(this).attr('src','image2.png');
        <?php $_SESSION['cart']['image_id'] = 2; ?>
    },
    function() {
        $(this).attr('src','image3.png');
        <?php $_SESSION['cart']['image_id'] = 3; ?>
    },
    function() {
        $(this).attr('src','image.png');
    <?php// $_SESSION['cart']['image_id'] = 0; ?>
    }
);
</script>
...
...
</div>

<!-- Cart Tab -->

<div id="tab4" style="display:none; width:1024px; padding-top:40px;">

<table border="1">
<tr>
<th>Name</th>
<th>Price</th>
<th>Quantity</th>
<th>Total</th>
</tr>

<?php
    if($_SESSION['cart']) {
        foreach($_SESSION['cart'] as $itemname => $quantity)
        {
            if($quantity == 0) continue;
            $price = $_SESSION['items'][$itemname];
            $prod = $price*$quantity;
            $_SESSION['total'] += $prod;
            echo "<tr>";
            echo "<td>" . $itemname . "</td>";
            echo "<td>" . $price . "</td>";
            echo "<td>" . $quantity . "</td>";
            echo "<td>" . $prod . "</td>";
            echo "</tr>";
        }
        echo "<tr>";
        echo "<td></td>";
        echo "<td></td>";
        echo "<td></td>";
        echo "<td>" . $_SESSION['total'] . "</td>";
        echo "</tr>";
        echo "</table>";
    }    
?>

<a href="#tab1">Continue Shopping</a>

</div>

我遇到的问题是图像更改正确(仅当我点击它并切换四个不同的图像时才会改变),但是当我查看购物车的内容时,它不会改变。它立即执行所有4个php语句。我知道,因为如果我移除最后的拨动开关(我将数量重置为0)并查看购物车,它已经显示我在购买之前有3件商品。

任何帮助将不胜感激。我猜我也可以构建图像作为表单输入,或者在点击时执行脚本的超链接,但我尝试了两种方法都没有运气。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

Javascript在浏览器中执行,并且在将页面提供给用户之前在服务器上执行php。

调用javascript时不会执行您的PHP代码段,而是在用户查看页面之前在服务器上执行它们。

不是将PHP代码直接放在javascript函数中,而是需要使用AJAX调用向服务器发送请求。

也就是说,在这种特殊情况下,最好将购物车信息存储在cookie而不是会话中。