0

配列からの情報を表示しようとすると問題が発生します。

サイト内のセッションをforeachチェックする がありnます。次に、セッションごとにデータベースを呼び出し、アイテムの配列をロードします。

から出た後foreach、同じ配列を順番に使用してアイテムを 1 つずつ表示したいと思いますが、最後のアイテムのn時間しか表示されません。

基本的に、2 番目foreach$row2['name']とは回数$row2['price']だけを表示していますが、常にテーブルの最後の項目を示しています。n

foreach ($_SESSION['cart'] as $item) 
{ 
$pid = $item['itemId'];
$q = $item['qty'];
if($q==0) continue;
$query2 = $con -> prepare("SELECT * FROM item_descr WHERE id_item = :idItem");
$query2-> bindValue (':idItem',$pid);
$query2->execute();
$row2 = $query2->fetch(PDO::FETCH_ASSOC);
SOME HTML STUFF....
}

ここにいくつかの独立した HTML スタッフ:

foreach ($_SESSION['cart'] as $item)    
{
   $pid = $item['itemId'];
   $q = $item['qty'];
HTML <div class="subTotalItem">
   <span class='cartItemsText'><?php echo **$row2['name']**; ?></span>
<span class='cartItemsText2'><?php echo $q." x "." $".$**row2['price'];** $subTotal+= $row2['price'] * $q; ?></span>
    </div>
}

問題がどこにあるのか、何か考えはありますか?

4

4 に答える 4

0

PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY として構成された PDO を使用する準備済みステートメントのデフォルト オプションではありませんか? 私が正しければ、コードの HTML 部分を作成するには、同じクエリを再度実行する必要があるということです。

リバーシブル カーソルの経験はありませんが、そのためのオプションがあります。

于 2013-04-09T20:27:58.620 に答える
0

省略した「SOME HTML STUFF」セクションのどこかに $_SESSION['cart'] 変数を設定しているとしか思えません。私がこれを言うのは、あなたのコードを見ると、 $_SESSION['cart'] が最初の foreach と同じように 2 番目の foreach にまったく同じ値を持つことが期待されるからです。

于 2013-04-09T20:30:37.203 に答える
0

クエリと同じループで出力する必要があります。ループを通過するたびに $row2 がリセットされます。

foreach ($_SESSION['cart'] as $item) 
{ 
 $pid = $item['itemId'];
$q = $item['qty'];
if($q==0) continue;
$query2 = $con -> prepare("SELECT * FROM item_descr WHERE id_item = :idItem");
$query2-> bindValue (':idItem',$pid);
$query2->execute();
$row2 = $query2->fetch(PDO::FETCH_ASSOC);

SOME HTML STUFF....


Put your HTML output here, not in second loop

 }

これはうまくいくはずです

于 2013-04-09T20:31:00.493 に答える