Я хотел бы сказать спасибо за любые ответы сразу. Я буду очень признателен за вашу помощь.
ОБНОВЛЕНИЕ Я только что прочитал на этом сайте, что кто-то упоминает типы данных xml и хранимые процедуры. Теперь я подумал, что поиска xml-rpc и обновления базы данных было недостаточно. Я ищу, как использовать данные XML для обновления базы данных. Но если у вас все еще есть мысли по моим вопросам ниже, я буду признателен за них.
Я гуглил и искал на этом сайте возможность и возможность использования данных, извлеченных с удаленного сервера через xml-rpc, для обновления таблицы базы данных, и я ничего не мог найти о том, как это сделать. Я нашел массу полезной информации о xml-rpc (я новичок в этом), и команда SQL для обновления таблицы базы данных довольно проста. Но как же я могу использовать данные, которые я получаю, используя xml-rpc для обновления таблицы?
Я думаю, это потому, что я, вероятно, не полностью понимаю xml-rpc. У меня есть корзина для покупок, и все, что я хочу сейчас сделать, это получить данные о запасах у моего поставщика. Когда пользователи нажимают на ссылку на продукт, мне нужно захватить уровни запасов в реальном времени и вставить эти номера уровней запасов в мою таблицу инвентаризации продуктов для этого конкретного продукта (так что это на лету).
Я заглянул в php-файл, где скрипт корзины извлекает уровень запасов товара из базы данных. Кажется, я бы добавил две вещи прямо перед этим захватом. 1. Вызов xml-rpc для получения уровня запасов по sku и 2. Команда обновления SQL для вставки этих данных в базу данных.
Но как только я сделаю вызов xml-rpc, он вернет уровень запасов, куда эти данные попадают? Из моего прочтения кажется, что эти данные открываются пользователю посредством какой-либо распечатки или отображения результатов непосредственно в веб-браузере. Но вместо этого мне нужно переместить эти данные в таблицу базы данных.
Есть мысли? Это возможно?
Это функция, которую я отредактировал, чтобы попытаться получить уровни запасов и обновить таблицу: я добавил эти два раздела в существующую функцию - // Получение уровня запасов по sku от поставщика, // Обновление инвентарной таблицы по sku
<code> /**
* Show the inventory management quick view on the manage products page if inventory tracking is on for a product
*
* @return void
**/
private function GetInventoryLevels()
{
$GLOBALS['ISC_CLASS_ADMIN_ENGINE']->LoadLangFile('products');
if(isset($_REQUEST['p']) && isset($_REQUEST['i']) && isset($_REQUEST['v']) && isset($_REQUEST['t'])) {
$prodId = (int)$_REQUEST['p'];
$invType = (int)$_REQUEST['i'];
$variationId = (int)$_REQUEST['v'];
$combinations = array();
// First determine if inventory tracking is by product or by option
if ($invType == 1) {
**// Grab inventory level by sku from supplier**
$server_url = "http://gg.com/ttt/webservices/index.php";
$prodcurrentinv = "";
if (function_exists('xmlrpc_encode_request')) {
$request = xmlrpc_encode_request("catalog.getStockQuantity(sku)", array($prodcurrentinv));
$context = stream_context_create(array('http' => array(
'method' => "POST",
'header' => "Content-Type: text/xml",
'content' => $request
)));
$file = file_get_contents($server_url, false, $context);
$response = xmlrpc_decode($file);
if (xmlrpc_is_fault($response)) {
trigger_error("xmlrpc: $response[faultString] ($response[faultCode])");
} else {
print '<pre>';
print_r($response);
print '
';
}
} еще {
print '
К сожалению, вы, похоже, не скомпилировали модуль xmlrpc.
';
}
напечатать '
';
require_once 'XML / RPC2 / Client.php';
// так как мы используем функцию 'catalog', нам нужно убедиться, что она префиксует функцию
// имя, когда он вызывается на сервере. (Документы XML_RPC2 предполагают, что вы можете использовать
// 'catalog.getStockQuantity (sku)' как имя функции класса, но это не правильно.
$ options = array (
'prefix' => "каталог."
);
$ client = XML_RPC2_Client :: create ($ server_url, $ options);
$ result = $ client-> getStockQuantity (sku) ($ prodcurrentinv);
print '
';
print_r($result);
print '
';
напечатать '
';
** // Обновление инвентарной таблицы по sku **
$ query = sprintf ("обновить prodcurrentinv из [| PREFIX |] продуктов, где productcode = '% d'",)
// Просто запрашиваем таблицу продуктов на предмет текущего и низкого уровня запасов
$ query = sprintf ("выберите prodcurrentinv, prodlowinv из [| PREFIX |] продуктов, где productid = '% d'", $ GLOBALS ['ISC_CLASS_DB'] -> Quote ($ prodId));
$ result = $ GLOBALS ['ISC_CLASS_DB'] -> Query ($ query);
if ($ row = $ GLOBALS ['ISC_CLASS_DB'] -> Fetch ($ result)) {
printf ("
% s ", GetLang ("UpdateInventoryLevels"));
echo "";
echo "";
echo "
";
printf ("% s: ", GetLang ("CurrentStock"));
printf (" ", $ row ['prodcurrentinv '], $ prodId, $ prodId);
echo "";
echo "";
echo "";
printf ("% s: ", GetLang ("LowStockLevel"));printf (" ", $ row ['prodlowinv '], $ prodId, $ prodId);
echo "";
echo "";
printf (" & nbsp;
", GetLang (« Save »), $ prodId, $ prodId);
}
} еще {
$ optionIds = array ();
// Извлечение комбинаций вариантов для этого продукта
$ query = "SELECT * FROM [| PREFIX |] product_variation_combination WHERE vcproductid = '". $ prodId. "'";
$ result = $ GLOBALS ['ISC_CLASS_DB'] -> Query ($ query);
while ($ комбинация = $ GLOBALS ['ISC_CLASS_DB'] -> Fetch ($ result)) {
$ комбинации [] = $ комбинация;
$ optionIds = array_merge ($ optionIds, explode (",", $ комбинация ['vcoptionids']));
}
$ optionIds = array_unique ($ optionIds);
// Теперь извлекаем варианты, которые нам нужны
if (! empty ($ optionIds)) {
$ optionIds = implode (",", $ optionIds);
// Получить параметры комбинации
$ Варианты = массив ();
$ query = "SELECT * FROM [| PREFIX |] product_variation_options WHERE voptionid IN (". $ optionIds. ")";
$ result = $ GLOBALS ['ISC_CLASS_DB'] -> Query ($ query);
while ($ var = $ GLOBALS ['ISC_CLASS_DB'] -> Fetch ($ result)) {
$ Варианты [$ Вариация ['voptionid']] = массив ($ Вариация ['voname'], $ Вариация ['vovalue']);
}
}
printf ("% s ", GetLang ("UpdateInventoryLevels"));
foreach ($ комбинаций как $ строки) {
$ output = "";
$ options = explode (",", $ row ['vcoptionids']);
foreach ($ options как $ option) {
$ output. = isc_html_escape ($ Вариации [$ опция] [0]). ":". isc_html_escape ($ Варианты [$ вариант] [1]). ",";
}
$ output = trim ($ output, ',');
эхо "". $ вывод. "";
echo "
";
echo "";
echo "";
echo "
";
printf ("% s: ", GetLang ("CurrentStock"));
printf (" ", $ row ['vcstock'], $ prodId, $ row ['комбинация'], $ prodId, $ row ['комбинация']);
echo "";
echo "";
echo "";
printf ("% s: ", GetLang ("LowStockLevel"));
printf (" ", $ row ['vclowstock'], $ prodId, $ row ['комбинация'], $ prodId, $ row ['комбинация']);
echo "";
echo "";
}
echo "";
printf (" & nbsp;
", GetLang (' Save '), $ prodId, $ prodId);
}
}
}