我有一个PHP页面,它检索$_ session‘’products‘会话中的数组。该会话中的每个数组都是用户添加到“购物车”中的产品。目前,我的会话有11个数组,这意味着我已经向购物车中添加了11个产品。我现在正试图在我的view_cart.php页面上显示数组,并将它们分页到十个。基本上,我希望页面显示前10个数组,然后在view_cart.php?Page=2上显示第11个数组。现在,代码在第一页上显示前十个结果,但在view_cart.php?Page=2上再次显示相同的十个结果。
下面是我为view_cart.php页面编写的完整代码:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
session_start();
include_once("config.php");
$objConnect = mssql_connect('gdafgm','gdacf','Rdas!');
$objDB = mssql_select_db('Gdar',$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 = 10; // 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' LIMIT " . $Page_Start . "," . $Per_Page;
$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.'">×</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>';
}
?>
</body>
</html>下面是我的config.php页面的所有代码:
<?php
$mysqli = mssql_connect('gda','Gbc','Rgda');
$objConnectee = mssql_select_db('Gbdac',$mysqli );
?>下面是我在运行view_cart.php页面时遇到的错误:
Warning: mssql_query() [function.mssql-query]: message: Must declare the scalar variable "@start". (severity 15) in D:\Hosting\4502990\html\partscatalogue\view_cart4.php on line 65
Warning: mssql_query() [function.mssql-query]: Query failed in D:\Hosting\4502990\html\partscatalogue\view_cart4.php on line 65
Warning: mssql_fetch_object(): supplied argument is not a valid MS SQL-result resource in D:\Hosting\4502990\html\partscatalogue\view_cart4.php on line 66谢谢你的帮助。我们非常感谢所有的帮助。
发布于 2014-03-14 20:55:51
不会修复它:
您必须用以下行替换您的$queryy分配: $query =“从产品_代码=‘$product_name_code’限制的产品中选择product_name,product_desc,价格”。$Page_Start。 ",“$Per_Page; 还没有在您的代码上测试过这一点,如果没有解决您的问题,您可以发布结果吗?还可以考虑将MySQL的
LIMIT _start_,_length_用于分页的建议用途。
编辑:
对不起,过读了Server
修正SQL Server:
将$query分配替换为:
$query = "SELECT TOP 1 product_name,product_desc, price FROM products WHERE product_code='$product_code'
AND product_id BETWEEN ($Page_Start) AND ($Page_Start + $Per_Page)";发布于 2014-03-14 21:12:40
你应该可以通过这样的话得到一页的结果
$strSQL = "
SELECT * FROM products
WHERE 1=1 {$cheack}
ORDER BY id
OFFSET (($Page - 1) * $Per_Page)
FETCH NEXT $Per_Page ONLY
";(当然,在确保设置了适当的PHP变量之后)。
https://stackoverflow.com/questions/22415445
复制相似问题