0

ディストリビューターからの製品を同期するために Web サービスを使用しています。最初のステップとして、すべてが適切に機能していることを確認するために、データを表示するテーブルを作成しました。次の関数を使用して、製品の説明を正常に取得できました。

function get_description($api_key, $item){
$url = 'http://www.stl-distribution.com/webservices/json/GetProductDescription.php';
$post_vars = 'api_key='.$api_key.'&item='.$item;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_vars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$return_data = curl_exec($ch);

$json_array = json_decode($return_data,true);
    return $json_array;
}

次のように foreach ループを使用して情報を表示しています。

      <table>
            <tr>
                    <th>ISBN</th>
                    <th>Description:</th>
                    <th>Categories:</th>
                    <th>Options:</th>
            </tr>
            <?php foreach($product_ISBNs as $item) : ?>
            <tr>
                    <td class="center"><?php echo $item[0]?></td>
                    <td class="center"><?php $item_description = get_description($api_key,$item[0]); echo $item_description['description'];?>
                    <td class="center"><?php $item_data = get_meta_data($api_key,$item[0]); echo $item_data['product_type']; ?>
            </tr>
            <?php endforeach?>
    </table>

関数を使用して説明を正常に取得できましたが、get_description()関数から一貫して次のエラーが発生しget_meta_data()ます。

Notice: Undefined index: product_type in C:\xampp\htdocs\STLImport\view\user_form.php on line 21

関数のコードは次のget_meta_data()とおりです。

function get_meta_data($api_key, $item){
$url = 'http://www.stl-distribution.com/webservices/json/GetProductMetaBasic.php';
$post_vars = 'api_key='.$api_key.'&item='.$item;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post_vars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$return_data = curl_exec($ch);

$json_array = json_decode($return_data,true);
    return $json_array;
}

print_r()ステートメントの直前に実行するとreturn $json_array;、次のエラーが発生します。

Array ( [0] => Array ( [error] => "" not found ) ) 

代理店のウェブサイトによると、リクエストは送受信されています。ページを更新するたびに、使用統計が上がります。そのため、データが返されていないか、正しく参照していないようです。説明が返されているので、これらの製品がデータベースに存在することがわかります。したがって、正しく参照していないはずですが、エラーの場所がわかりません。いろいろ組み合わせて参照してみましたがだめでした。Web サービスのドキュメントでは、データを返す方法について次の例を示しています。

{
"9781434768513":
{
    "isbn13":"9781434768513",
    "isbn":"1434768511",
    "upc":"000000912992",
    "title":"Crazy Love",
    "subtitle":"Overwhelmed By A Relentless God",
    "contributor1":"Chan, Francis",
    "contributor2":"Yankoski, Danae",
    "contributor3":"",
    "vendor":"David C. Cook",
    "release_date":"20080430",
    "retail":"14.99",
    "binding":"Paperback",
    "product_type":"Books",
    "category1":"Christian Living",
    "category2":"",
    "category3":"",
    "grade_level_start":"",
    "grade_level_end":"",
    "inventory_updated":"20100825 11:25",
    "tn_available":993,
    "tn_onorder":240,
    "nv_available":735,
    "nv_onorder":0,
    "image_small":"http:\/\/www.stl-distribution.com\/covers\/7814\/sm-9781434768513.jpg",
    "image_medium":"http:\/\/www.stl-distribution.com\/covers\/7814\/md-9781434768513.jpg",
    "image_large":"http:\/\/www.stl-distribution.com\/covers\/7814\/lg-9781434768513.jpg"
}
4

1 に答える 1

0

私のget_meta_data()関数にエラーがあったようです。私のAPIプロバイダーは、この行が私に通知しました

$post_vars = 'api_key='.$api_key.'&item='.$item;

になるはずだった

$post_vars = 'api_key='.$api_key.'&items='.$item;

「s」が追加されていることに注意してください。だから、$json_array空だったので空に見えた。私の他の機能は、「s」を必要としなかったため機能しましGetProductMetaBasicた。

さらに、この行は

<td class="center"><?php $item_data = get_meta_data($api_key,$item[0]); echo $item_data['product_type']; ?>

になるはずだった

<td class="center"><?php $item_data = get_meta_data($api_key,$item[0]); echo $item_data[$item[0]]['product_type']; ?></td>

サンプル データが示すように、配列は多次元だったからです。目的の値 ( product_type) が$item[0]配列内に含まれていました。したがって、$item_data['product_type']存在しませんでした。

于 2013-03-26T17:49:12.920 に答える