在会话中添加id作为数组,并根据其中的id返回产品


Add ids as array in a session and return products according to ids inside it

我想在一个会话中添加多个产品,然后在报价页面显示该会话中的所有产品。

我是怎么做的:

到报价页面的链接,该页面发送productid:

<p><a class="offertelink" href="offerte.php?product='.$productcr[0]['id'].'">Request a quote</a></p>

然后在引用页,我把它放在一个会话中:

$_SESSION['product'] = $_GET['product'];

但是这只记住一个产品,如果我回去添加另一个产品,那么只显示那个新产品而不是我添加的两个产品。

我想保存会话中的所有id,然后在查询中使用id IN ('1', '2', '3')

显示所有保存的产品

id是通过点击链接发送的产品。

我尝试了一些事情,比如把会话变成一个数组,但它仍然只记得一个产品id。我有session_start在文件的顶部,我包括所有地方。

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

检查$_SESSION['product']是否已经存在。如果不创建它作为ARRAY。然后将所有后续id添加到$_SESSION['product'] Array中,如下所示:$_SESSION['product'][] = $_GET['product'];。这样,当您尝试访问$_SESSION['product']

时,您就可以确保拥有一个id数组。
<?php //<==  NOTICE THAT THERE IS NO WHITE SPACE BEFORE "<?php"
    // FIRST CHECK IF SESSION EXIST BEFORE STARTING IT.
    // DO THIS AT THE VERY TOP OF EACH SCRIPT THAT NEEDS ACCESS TO $_SESSION DATA
    if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
        session_start();
    }
    // DO THIS ON THE PAGE WHERE YOU ARE SETTING THE IDs INTO THE $_SESSION
    if( !isset($_SESSION['product'])){
        $_SESSION['product'] = array();
    }
    $_SESSION['product'][] = $_GET['product'];

UPDATE:获取用于数据库的字符串值

<?php
    if( !isset($_SESSION['product'])){
        $_SESSION['product'] = array();
    }
    // CHECK FIRST THAT $_GET['product'] IS SET BEFORE ADDING IT TO SESSION
    if( isset($_GET['product']) ){
        $_SESSION['product'][] = $_GET['product'];
    }
    // IN THE FILE THAT USES THE DATA FOR DATABASE TRANSACTIONS,
    // YOU CAN DO THIS:
   // THE $valuesForDB WOULD CONTAIN SOMETHING LIKE: '2','7','10','12','13'
    $valuesForDB    = "'" .  implode("','", $_SESSION['product']) . "'";

    var_dump($valuesForDB);  //<== PRODUCES::: string ''2','7','10','12','13'' (length=22) [FOR EXAMPLE]
    var_dump($_SESSION['product']);
    // PRODUCES SOMETHING LIKE:::
    array (size=5)
      0 => int 2
      1 => int 7
      2 => int 10
      3 => int 12
      4 => int 13