想要将查看详细信息页面产品ID存储到会话中

时间:2015-08-06 10:53:32

标签: php mysql

我想制作一个最近访问过的产品部分。在视图详细信息中,当用户输入产品ID时,$_GET['pid'];现在想将其存储到$_SESSION['views'];现在它将存储到会话中。然后它需要显示为数组,因为它需要放入产品的选择查询,然后它将显示在while循环中。

$_SESSION['views']=$_GET['pid'];

现在,当我进入另一个产品视图详细信息页面时。会议将有1, 然后在Query:

SELECT * FROM `property` WHERE id=$_SESSION['views']

但它需要在while循环中显示 在7个产品访问后,第一个将被删除,最新的一个应插入到最后一个会显示新记录。

2 个答案:

答案 0 :(得分:0)

$_SESSION['views'] = array();

然后添加新产品

function addProduct($product)
{
    $_SESSION['views'][] = $product;
    if (count($_SESSION['views']) > 7) {
        $removedElement = array_shift($_SESSION['views']);
    }
}

查询

SELECT * FROM `property` WHERE id in <?= implode($_SESSION['views']) ?>

如果您需要更多面向对象的方法,请查看SPL。

答案 1 :(得分:0)

如果您想展示所有7种产品,您应该像这样进行查询:

SELECT * FROM `property` WHERE id IN ($productList)

和$ productList应该是产品的ID,用逗号分隔,如下所示:

$productList = join(',', $_SESSION['views']);

现在你需要$ _SESSION ['views']作为ab数组:

if (isset($_SESSION['views'])) {
    // add new element
    $_SESSION['views'][] = $_GET['pid'];
    // remove old elements
    if (count($_SESSION['views'] > 7)) array_shift($_SESSION['views']);
} else {
    // initialize an array
    $SESSION['views'] = array($_GET['pid']);
}