0

私はphpに問題があります

私は e コマース サイト (大学のコースワーク) を構築しており、バスケットに追加する部分を作成しています。

商品をバスケットに追加することはできます (タイトル、価格、ID、数量が表示されます) が、バスケットに商品を追加すると、データベース内の最初の商品のタイトル、価格、ID が常に表示されます。

(たとえば、データベースに 2 つのアイテムを追加すると、両方ともデータベースの最初のアイテムのタイトルになります)

(下のバスケットに商品を表示するためのコード) ありがとうございます

if(isset($_SESSION['cart']) && count($_SESSION['cart']) > 0){ 
    foreach($_SESSION['cart'] as $product_id => $qty){

        $sql = "SELECT  post_title, price, post_id FROM products"; 
            $result = mysql_query($sql);

            if(mysql_num_rows($result) > 0) {
            list($name, $price, $id) = mysql_fetch_row($result);

                echo "ID " . $product_id . " " . $name ." " . "Price : " . $price . " DB ID " . $id ." Quantity = " . $qty . "<br/>";
            }
    }

echo "<td colspan=\"3\" align=\"right\"><a href=\"$_SERVER[PHP_SELF]?empty\" onclick=\"return confirm('Are you sure?');\">Empty Cart</a></td>";

}else{

echo "0";
}
4

1 に答える 1

1

WHEREクエリに句を追加する必要があります。

$sql = "SELECT  post_title, price, post_id FROM products WHERE `id` = '$product_id'"; 

現在、クエリが行っていることはすべて、データベース テーブルからすべてを取り出しているため、最初の行を選択しています。

このWHERE句は、一致する製品の行のみを取得するようにクエリを制限します。製品 ID 列の列名を変更する必要がある場合があることに注意してください。

個人的な推奨事項ですが、ページが読み込まれるたびにデータベースから製品を取得するのではなく、カートに過剰な量の製品を追加する人がいないと仮定すると、製品情報をカートセッションキーにも保存します.

于 2013-04-14T22:22:55.000 に答える