【问题标题】:How to MSSQL Query a SESSION Array Using PHP如何使用 PHP 使用 MSSQL 查询 SESSION 数组
【发布时间】:2014-03-14 19:50:06
【问题描述】:

我有一个购物车,我正在尝试使用 SESSION 数组显示用户购物车中的产品。目前,所有添加到购物车的产品都会排列到$_SESSION["products"] SESSION 中。现在,我正在尝试查询$_SESSION["products"] 会话以在带有分页的列表中显示产品。我正在使用分页,所以每页只显示 10 个产品。基本上,$_SESSION["products"] 是用户通过浏览器缓存添加到购物车的缓存产品数组。我意识到你不能从字面上查询$_SESSION["products"],但我正在寻找类似的东西来检索结果作为“查询”。在下面的分页代码中,分页显然可以正常工作并检索product_code 并每页显示10 个。除了从 SESSION 中检索之外,我正在寻找与此完全相同的东西。

在最简单的形式中,我如何从我的 SESSION 中检索数据?

这是我正在寻找的那种代码的视觉解释:

$strSQL = $_SESSION["products"]; 

$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");  
$Num_Rows = mssql_num_rows($objQuery);  

这是我的分页代码:

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<?php
session_start();
include_once("config.php");

$objConnect = mssql_connect('gdm','Gdr','Rod1!');  
$objDB = mssql_select_db('GBadfr',$objConnect ); 

$strSQL = "SELECT * FROM products WHERE 1=1 ".$cheack." ORDER BY id ASC"; 

$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]");  
$Num_Rows = mssql_num_rows($objQuery);  

$Per_Page = 2;   // Per Page  
$Page = $_GET["Page"];  
if(!$_GET["Page"])  
{  
$Page=1;  
}  

$Prev_Page = $Page-1;  
$Next_Page = $Page+1;  

$Page_Start = (($Per_Page*$Page)-$Per_Page);  
if($Num_Rows<=$Per_Page)  
{  
$Num_Pages =1;  
}  
else if(($Num_Rows % $Per_Page)==0)  
{  
$Num_Pages =($Num_Rows/$Per_Page) ;  
}  
else  
{  
$Num_Pages =($Num_Rows/$Per_Page)+1;  
$Num_Pages = (int)$Num_Pages;  
}  
$Page_End = $Per_Page * $Page;  
IF ($Page_End > $Num_Rows)  
{  
$Page_End = $Num_Rows;  
}  
?>

<?php
    if(isset($_SESSION["products"]))
    {
        $total = 0;
        echo '<form method="post" action="PAYMENT-GATEWAY">';
        echo '<ul>';
        $cart_items = 0;
$i = 0;
  foreach ($_SESSION['products'] as $cart_itm)
     if(++$i > 10) break;
   {
            $product_code = $cart_itm["code"];
           $queryy = "SELECT TOP 1 product_name,product_desc, price FROM products WHERE product_code='$product_code'";
           $results = mssql_query($queryy, $mysqli);
           $obj = mssql_fetch_object($results);

            echo '<li class="cart-itm">';
            echo '<span class="remove-itm"><a href="cart_update.php?removep='.$cart_itm["code"].'&return_url='.$current_url.'">&times;</a></span>';
            echo '<div class="p-price">'.$currency.$obj->price.'</div>';
            echo '<div class="product-info">';
            echo '<h3>'.$obj->product_name.' (Code :'.$product_code.')</h3> ';
            echo '<div class="p-qty">Qty : '.$cart_itm["qty"].'</div>';
            echo '<div>'.$obj->product_desc.'</div>';
            echo '</div>';
            echo '</li>';
            $subtotal = ($cart_itm["price"]*$cart_itm["qty"]);
            $total = ($total + $subtotal);

            echo '<input type="hidden" name="item_name['.$cart_items.']" value="'.$obj->product_name.'" />';
            echo '<input type="hidden" name="item_code['.$cart_items.']" value="'.$product_code.'" />';
            echo '<input type="hidden" name="item_desc['.$cart_items.']" value="'.$obj->product_desc.'" />';
            echo '<input type="hidden" name="item_qty['.$cart_items.']" value="'.$cart_itm["qty"].'" />';
            $cart_items ++;

        }

        echo '</ul>';
        echo '<span class="check-out-txt">';
        echo '<strong>Total : '.$currency.$total.'</strong>  ';
        echo '</span>';
        echo '</form>';
        echo '<a href="checkout.php">Checkout</a>';
        echo "dsa ".$cart_items."dsa";
    }

?>
</body>
</html>

感谢您的帮助。感谢所有帮助。

附:我在Shopping Cart's `View Cart Items` Page is not Paginating Properly 有一个类似的问题,如果你愿意,可以看看。再次感谢您的帮助。

【问题讨论】:

  • 所以我们应该猜测$strSQL 是否是有效的 SQL 查询字符串,或者(更有可能)是您从其他查询构建的结果数组?究竟是什么思维过程导致您认为可以将数组填充到查询中并实际发生某些事情?

标签: php session caching pagination shopping-cart


【解决方案1】:

应该有效

<?php
$i = 0;
  foreach ($_SESSION['products'] as $result)
     if(++$i > 10) break;
   {

     // Echo what you want from your array.

   }

?>

刚刚看到您更新了您的代码(以上内容不起作用)。如果要遍历数组。使用 foreach 循环显示购物篮和其中的每一项。

【讨论】:

  • 我正在尝试使用 foreach 循环来显示购物篮及其中的每一项。我也试图将项目分页十。例如,如果有 25 个项目,则将有 3 页,前两页各有 10 个项目,最后一页有 5 个项目。但是,我确实使用了您的代码,我将更新我的问题以显示我的代码和结果。
  • 这是我在网站上运行 PHP 页面时显示的内容:× (Code :1) Qty : 1 Total : 0 Checkout。我的购物篮中目前有五件商品。
  • 我不知道。您是在运行自制结账系统还是已经建立的解决方案?很难定义你的问题。当用户将商品添加到购物篮时,它会存储到哪个 SESSION?
  • 它没有正确显示任何产品,它只显示一个数组。我更喜欢使用分页,因为我的老板在蓝图中要求它。你知道每页显示十个数组的方法吗?
  • 上面的代码应该将回显限制为 10,但在单击时将无法分页,如显示 11-20。不幸的是,我在 PHP 方面并不熟练,无法为您提供解决方案。不过,我可以帮助您正确地回显结果。在项目旁边,我想你已经添加到篮子或类似的东西,当按下时存储了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
相关资源
最近更新 更多