1

ですから、これはかなり長いです、事前に申し訳ありませんが、とにかく私を助けてくれることを願っています、

ここに行きます:

カスタムショッピングカートを作成しました。チェックアウト(klarna)を統合します。問題は、jsonを使用してアイテムをチェックアウトに送信しようとすることです。

 $sendInfo = base64_encode(json_encode($_SESSION['cart_array']));
 echo '<input type="hidden" name="info" id="info" value="'.$sendInfo.'"/>';


 And to pick it up i use another one:
 $info = (array) json_decode(base64_decode($_POST['info'])); var_dump($info);

これは次のようになります。

array (size=2)
 0 => 
object(stdClass)[1]
  public 'item_id' => string '7' (length=1)
  public 'quantity' => int 1
1 => 
object(stdClass)[2]
  public 'item_id' => string '3' (length=1)
  public 'quantity' => int 1

 So to build it further and to get the products out from the database:

 $cartOutput ="";
 $cartTotal ="";
 $cartTOTAL ="";
 $shipping ="";
 $include ="";


 if (!isset($_SESSION["cart_array"]) || count($_SESSION["cart_array"]) < 1) {
   $cartOutput = "<h2 align='center'>Din kundvagn är tom</h2>";
   } else {

//Starta for each loop
$i = 0; 
   foreach ($_SESSION["cart_array"] as $each_item) { 
    $item_id = $each_item['item_id'];
    $sql = mysql_query("SELECT * FROM tblproducts WHERE idProducts='$item_id' LIMIT 1");
    while($row = mysql_fetch_array($sql)){
        $product_name = $row["strName"];
        $price = $row["dbPrice"];
        $details = $row["strDescription"];
        $artnummer = $row["strArtnummer"];

    }

これを統合のためにアレイに配置します。

 $cart = array(
  array(
    'reference' => $artnummer,
    'name' => $product_name,
    'quantity' => $each_item['quantity'],
    'unit_price' => $price,
    'discount_rate' => 0,
    'tax_rate' => $tax,
   ),
   array(
    'type' => 'shipping_fee',
    'reference' => $artnummer,
    'name' => 'Shipping Fee',
    'quantity' => 1,
    'unit_price' => $shipping,
    'tax_rate' => $tax,
)
   );

 foreach($cart as $fieldarray){
   $body .= $fieldarray['reference'].' - '. $fieldarray['name'].' - '. $fieldarray['quantity'].' - '. $fieldarray['unit_price']; 
 }

配列を取得します:

  //$cart var_dump
 array (size=2)
 0 => 
array (size=6)
  'reference' => string '40719013' (length=8)
  'name' => string 'Socka 2 par/fp WS Cotton' (length=24)
  'quantity' => int 1
  'unit_price' => int 4800
  'discount_rate' => int 0
  'tax_rate' => int 2500
 1 => 
array (size=6)
  'type' => string 'shipping_fee' (length=12)
  'reference' => string '40719013' (length=8)
  'name' => string 'Shipping Fee' (length=12)
  'quantity' => int 1
  'unit_price' => int 14500
  'tax_rate' => int 2500

 // $body var_dump
  string '40719013 - Socka 2 par/fp WS Cotton - 1 - 480040719013 - Shipping Fee - 1 - 14500' (length=81)

これまでのところ、問題なく機能しています。カートに数量を追加してからチェックアウトまで歩いていくと、同様に機能しますが、最初のvar_dumpから気付いたかもしれませんが、カートには2つのアイテムがあります(2異なるitems_id's)!つまり、カートから1つのアイテム(最後に追加されたアイテム)しか表示されないため、合計が間違っており、すべてのアイテムがチェックアウトにリストされていません。

だから誰かが私が間違っていることを知っていますか?

よろしくお願いします。

4

1 に答える 1

1

$cart-Array を設定するたびに、以前のエントリが上書きされます。

$cart = array(...)

おそらく、各エントリを cart-Array に追加する必要があります

$cart[] = array(...)
于 2013-03-17T21:24:35.987 に答える