2

私は何日も試してきました(そして、ここSOで約20の投稿を読んでいます)、私の問題の解決策を見つけることができます。foreach ループを使用してセッション配列を反復処理し、3 つ (場合によってはそれ以上) のキーと値のペアを取得する必要があります。これは、後続のクエリでも使用する必要があります。

商品の価格は複数の要因によって変動するため、これが必要です。

最初に、for ループを使用してショッピング カートを作成しました。これは私が必要としていたものには機能しましたが (以下に表示されます)、アイテムを削除しようとしたときに問題が発生しました。SO に関する質問投稿から、foreach ループを使用する必要があることを学びました。それに応じて変更しましたが、キーと値のペアが 1 つしかない場合にのみ機能します。

foreach ループで必要なことを達成する方法はありますか? もしそうなら、どのように?

カートセッション配列に必要なものは次のとおりです。

$_SESSION['shop_cart'][$prodid]=$quantity;
$_SESSION['shop_cart']['season_price']=$season_priceid;

また?

$_SESSION['shop_cart']['prodid']=$prodid;
$_SESSION['shop_cart']['quantity']=$quantity;
$_SESSION['shop_cart']['season_price']=$season_priceid; //This is the third variable I need

foreach ループ (以前の for ループを含むメモ/コメント) を使用したコードは次のとおりですが、キーと値のペアが 1 つしかありません。

$prodid = $_POST['prodid'];
$quantity = $_POST['quantity'];
$season_priceid=$_POST['season_priceid'];
$empty= $_POST['empty']; 
$removed = $_POST['remove'];
$counter= $_POST['counter'];

if(isset($prodid))
{
 $_SESSION['shop_cart'][$prodid] = $quantity; 
}

   if (isset($empty ))
    {
    unset($_SESSION['shop_cart']);
    }


if (!isset($_SESSION['shop_cart']))//Checking if Session is Set or empty
   {
      unset($_SESSION['shop_cart']);
      echo "Cart is empty";
   }
   else
   {
      if(count($_SESSION['shop_cart'])==NULL || count($_SESSION['shop_cart'])==0 )
      {
         echo "Cart is empty";
      }
   }



    if (isset($removed)) 
    {
    foreach ($_SESSION['shop_cart'] as $cart_line_item => $item)
       {
        if($prodid==$item['prodid'])
            {
            unset($_SESSION['shop_cart'][$cart_line_item]); 
            continue;
            }   
        }
    }


  $_SESSION['shop_cart'][$prodid] = $quantity;           



$total=0; //For Price

 if (isset($_SESSION['shop_cart']))  
  {
    /*
    for($i=0;$i<count($_SESSION['shop_cart']);$i++) //The previous FOR LOOP works but cannot delete items correctly
    */
    foreach ($_SESSION['shop_cart'] as $prodid => $quantity)
    {
        /* //This is how the cart-display array was created with the FOR LOOP. As you can see here, I need three values to show in my cart array
        $prodid=$_SESSION['shop_cart'][$i]['prodid'];
        $quantity=$_SESSION['shop_cart'][$i]['quantity'];
        $season_priceid =$_SESSION['shop_cart'][$i]['season_priceid'];
        */

        $query = "SELECT prodid, description, price FROM products, seasons WHERE prodid = $prodid AND season_id= $season_priceid"; //###I NEED THIS THIRD VARIABLE next variable to get the right price)###
        $result = mysqli_query($hook, $query);
        $row = mysqli_fetch_assoc($result);
        $prodid = $row['prodid'];
        $price = $row['price'];
        $description= $row['description'];


        $subtotal = $price * $quantity;
                     $total += $subtotal;

echo "$description($prodid)---Quantity: $quantity--- $$price";      

echo "<form action=\"$_SERVER[SCRIPT_NAME]\" method=\"post\" >";
echo "<INPUT TYPE=\"submit\" name=\"remove\" VALUE=\"Remove\">";
echo "<input type=\"hidden\" name=\"prodid\" value=$prodid />\n";
echo "</FORM>";

echo "--------------------------<br/><br/>";

    }                                                             
  }

echo "TOTAL $total <br/><br/>";

echo '<pre>'. var_dump( $_SESSION['shop_cart']).'<pre/>';

echo "<br/>";

echo "<form action=\"$_SERVER[SCRIPT_NAME]\" method=\"post\" >";
echo "<INPUT TYPE=\"submit\" name=\"empty\" VALUE=\"Empty Cart \">";
echo "</FORM>";

次のことを試しましたが、何も機能しません:

    foreach ($shop_cart as $key =>$val) {           
                $season_priceid = $key['season_priceid'];
            //OR
                $season_priceid = $val['season_priceid'];     
        }

///////////

    foreach ($shop_cart as $val) {
        $season_priceid = $val['season_priceid'];
    }


///////////

    foreach ($shop_cart as $cart_arrays) {
                $season_priceid =$shop_cart['season_priceid'];
    }

それが役立つ場合、これは私の配列がさまざまなループでどのように見えるかです:

FOR LOOP ARRAY
array(3) { [0]=> array(3) { ["prodid"]=> string(2) "13" ["quantity"]=> string(1) "1" ["season_priceid"]=> NULL } [1]=> array(3) { ["prodid"]=> string(1) "6" ["quantity"]=> string(1) "1" ["season_priceid"]=> NULL } [2]=> array(3) { ["prodid"]=> string(1) "2" ["quantity"]=> string(1) "1" ["season_priceid"]=> NULL } }


FOREACH ARRAY (but I need a third element/value : "season_priceid")
array(3) { [2]=> string(1) "1" [6]=> string(1) "1" [3]=> string(1) "1" }
4

1 に答える 1