-1

このjQueryをPHPに変換しようとしている小さな問題があります

私がする必要があるのは、これを foreach 関数に配置することです。これは、jQuery コードで最初に行うことです。

$.each(obj.products, function(i, obj) {

    if(obj.barcode == barcode)
    {
        $("#showmoreinfohere").show();
        $("#moremovietop").html(obj.name.toUpperCase());
        $("img#selectedproduct").attr('src', ''+obj.logoURL+'');
        $("span#perticket").html(obj.price);
        currentproduct["barcode"] = obj.barcode;
        currentproduct["priceperticket"] = obj.price;
        currentproduct["cashbackperticket"] = obj.discount;
        $("span#VIPCashBack").html(obj.discount);
        total = obj.price * $("#qtyselect").val();
        $("span#totalprice").html("$"+total);
    }
});

私のPHPコード

<?php
    $cartdata = $fetch->cartitems($_COOKIE["sessionkey"]);
    foreach ($cartdata as $cart)
    {
        $product_details = $fetch->getbarcode('$cart["barcode]"');
    ?>

    <tr>
        <?php 
        foreach ($product_details as $product)
        {
        ?>

        <td><?php $product['name']?></td>
        <td><?php $product['price']?></td>
        <td><?php $cart['qty']?></td>
        <td><?php $product['discount']?></td>
        <?
        }
        ?>

    <?php
    }

 ?> 

私が得るエラーは

警告: 27 行目の /home/movies/public_html/tpl/cart.tpl の foreach() に無効な引数が指定されています

グーグルからの問題これは私が見つけているものです:

  1. foreach 内で foreach を実行できます
  2. product_details の JSON は次を返します

      {
       "_id": ObjectId("4f6ab67338fc5ded4f000000"),
       "company": "village",
       "logo": "http: \/\/...\/villagetop.png",
       "products": {
         "0": {
           "barcode": "236690091",
           "name": "Weekday",
           "logoURL": "http: \/\/...\/ticketpic1.png",
           "price": "12.50",
           "discount": "1.50" 
        },
        ...
      },
       "store_name": "movies" 
    }
    
4

2 に答える 2

0

製品の詳細が配列として返されないため、エラーが発生しています。次のように修正できます。

<?php

$cartdata = $fetch->cartitems($_COOKIE["sessionkey"]);
foreach ($cartdata as $cart)
{
    /* This is returning null or invalid data so it is erroring on the loop below....  
       Maybe this function could return array() if empty so it passes the loop in the   
       block below. Otherwise a check is needed before entering the loop.
    */  

    $product_details = $fetch->getbarcode($cart['barcode']);
?>

    <tr>
        <?php             
        // Errors here due to null or invalid data
        foreach ($product_details as $product)
        {
        ?>
            <td><?php echo $product['name']?></td>
            <td><?php $product['price']?></td>
            <td><?php $cart['qty']?></td>
            <td><?php $product['discount']?></td>
      <? } 
}?>

編集:jsonを投稿したのを見ましたが、これを実行すると何が返ってきますか?

 $product_details = $fetch->getbarcode($cart['barcode']);
 var_dump( $product_details  );    
于 2012-06-19T02:23:59.993 に答える
0

編集

答えを探す前に、スクリプトの先頭に次の 2 行を追加することをお勧めします。

error_reporting(-1);
ini_set('display_errors', 'On');

編集 2

JSON ダンプから、 の呼び出し方法に応じて、ループ内で$product_details->productsまたは のいずれかを使用する必要があります。$product_details['products']foreachjson_decode()


次のコード:

$product_details = $fetch->getbarcode('$cart["barcode]"');

動作する可能性は低いですが、そのための適切なコード:

$product_details = $fetch->getbarcode($cart['barcode']);

ループ内:

<td><?php $product['name']?></td>

これは何も出力しません。次のようなものが必要です。

<td><?php echo htmlspecialchars($product['name']); ?></td>
于 2012-06-19T02:02:54.210 に答える