注文したアイテムのポータルを含む注文をプルするphpページがあります。注文された各アイテムはループされ、メタサイトから削除するためにXMLを介して送信されます。ループ内で、メタサイトはデータベース内のアイテムのステータスに追加したい応答を返します。これが私が立ち往生しているところです-
ループ内で追加/編集するアイテムのレコードを識別するコードを取得する方法がわかりません。
これはこれまでのコードです-
<?php
require_once('Connections/invoices.php');
require_once('MetaSiteBooks/post_xml.php');
$ids_find = clone($invoices);
$ids_find->layout = 'orders';
$ids_findCriterions = array('orderID'=>$_REQUEST['orderid'],);
foreach($ids_findCriterions as $key=>$value) {
$ids_find->AddDBParam($key,$value);
}
fmsSetPage($ids_find,'ids',35);
$ids_result = $ids_find->FMFind();
if( is_a($ids_result,'FX_Error') || $ids_result['errorCode'] != "0")
fmsTrapError($ids_result,"error.php");
fmsSetLastPage($ids_result,'ids',35);
$ids_row = current($ids_result['data']);
$ids_row_key = key($ids_result['data']);
$ids_orderlineitem_portal_row = 0;
$ids_orderpaypalvars_portal_row = 0;
OK、これは注文されたアイテムのリストを含むレコードを識別します。
次にループを開始します-
$ids_orderlineitem_portal_rownum = 1;
foreach($ids_row['order_line_item::bookID'] as
$ids_orderlineitem_portal_row=>$ids_orderlineitem_portal)
{
$xml =
'<?xml version="1.0" encoding="ISO-8859-1"?>
<inventoryUpdateRequest version="1.0">
<action name="bookupdate">
</action>
<transactionType>delete</transactionType>
<vendorBookID>' . $ids_row['order_line_item::bookID']
[$ids_orderlineitem_portal_row].'</vendorBookID>
</inventoryUpdateRequest>';
$url ='https://inventoryupdate.metasite.com';
$port = 80;
$response = xml_post($xml, $url, $port);
$data = simplexml_load_string($response);
$code = (string) $data->Metasite>code;
XMLが送信され、応答されます。次に、アイテムのレコードに応答コードを追加したい-
$inventory_status_edit = clone($invoices);
$inventory_status_edit->layout = 'order_line_item';
$inventory_status_edit->AddDBParam('-recid',
$ids_row['order_line_item::bookID'][$ids_orderlineitem_portal_row]);
これは私が立ち往生しているところです、DBParamは正しくありません。とにかく、ここに残りのコードがあります-
$inventory_status_fields =
array('Metasite_status'=>'$code',
'inventory_status'=>'dltd',);
foreach ( $inventory_status_fields as $key=>$value) {
$inventory_status_edit->AddDBParam($key,$value);
}
$inventory_status_result = $inventory_status_edit->FMEdit();
if(is_a($inventory_status_result,"FX_Error") ||
$inventory_status_result['errorCode'] != "0")
fmsTrapError($inventory_status_result,"error1.php");
$inventory_status_row = current($inventory_status_result['data']);
$inventory_status_row_key = key($inventory_status_result['data']);
if($ids_orderlineitem_portal_rownum == 0)
break;
else
$ids_orderlineitem_portal_rownum++;
}//portal_end
?>
助けてくれてありがとう!