Nasıl xml-rpc verileri kullanarak bir veritabanı tablosunu güncelleştirmek mi?

0 Cevap php

Ben hemen hiçbir yanıt için teşekkür etmek istiyorum. Ben gerçekten yardım takdir edecektir.

UPDATE Ben sadece xml veri türleri ve saklanan procs söz bu site birisi okumak. Şimdi XML-RPC ve güncelleme veritabanı için arama düşünce yeterli değildi. Ben bir veritabanını güncellemek için xml verileri kullanmak nasıl arıyorum. Hala aşağıda benim sorular düşünceler varsa Ama, ben onları takdir ediyorum.

Ben Googled ve olasılığı üzerine bu siteyi arama ve verileri kullanarak nasıl bir veritabanı tablosunu güncelleştirmek için XML-RPC üzerinden uzaktaki bir sunucuya çekti ve ben böyle bir şey yapmak nasıl bir şey bulabiliriz ettik. Xml-rpc iyi bilgi ton buldunuz (ben ona yepyeni değilim) ve bir veritabanı tablosunu güncelleştirmek için bir SQL komutu oldukça basittir. Ama yeryüzünde nasıl bir tabloyu güncelleştirmek için XML-RPC kullanarak ben kapmak verileri kullanabilirim?

Ben muhtemelen tamamen XML-RPC anlamıyorum çünkü düşünüyorum. Ben bir alışveriş sepeti var ve ben hemen yapmak isteyen tüm tedarikçi stok seviyelerini çekmek. Kullanıcıların ben gerçek zamanlı stok seviyelerini kapmak ve söz konusu ürün için benim ürün stok tabloya bu stok seviyesi numaraları eklemek için gereken bir ürün için linke tıklayın (yani anında var) zaman.

Ben sepeti komut veritabanından öğenin stok seviyesini kapmak görünüyor php dosyasına bir göz aldı. Ben doğru bu kepçeyi önce iki şey eklemek istiyorum görünüyor. 1.. Sku ve 2 ile stok seviyeleri almak için XML-RPC çağrısı. Bir SQL güncelleme komutu veritabanına bu verileri eklemek için.

Ben XML-RPC çağrısı yapılır yapmak ve stok seviyelerini verir ama bir kez, nerede bu veri nereye gidiyor? Bu verileri doğrudan web tarayıcısı yazdırma veya görüntüleme sonuçları bir çeşit kullanıcıya ortaya gibi, benim okuma, görünüyor. Ama onun yerine ben bir veritabanı tabloya bu verileri taşımak gerektiğini yapıyor.

Herhangi bir düşünce? Bu mümkün mü?

Bu benim stok seviyelerini kapmak ve tablosunu güncelleştirmek için denemek için düzenlenmiş ettik işlevi: Ben mevcut işlevine bu iki bölümden ekledik - // Grab inventory level by sku from supplier, // Update inventory table by sku

  /**
   * 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 '</pre>';
      }
      } else {
      print '<div style="color:red;">Sorry, you don\'t seem to have the xmlrpc module compiled in.</div>';
      }
      print '<hr/>';
      require_once 'XML/RPC2/Client.php';
      // since we're using a 'catalog' function, we need to make sure it prefixes the function
      // name when it's called on the server. (The XML_RPC2 docs suggest that you could use
      // 'catalog.getStockQuantity(sku)' as the class function name, but that's not correct.
      $options = array(
      'prefix' => "catalog."
      );
      $client = XML_RPC2_Client::create($server_url, $options);
      $result = $client->getStockQuantity(sku)($prodcurrentinv);
      print '<pre>';
      print_r($result);
      print '</pre>';
      print '<hr/>';
     **// Update inventory table by sku**
     $query = sprintf("update prodcurrentinv from [|PREFIX|]products where productcode='%d'",)
     // Simply query the products table for current and low stock levels
     $query = sprintf("select prodcurrentinv, prodlowinv from [|PREFIX|]products where productid='%d'", $GLOBALS['ISC_CLASS_DB']->Quote($prodId));
     $result = $GLOBALS['ISC_CLASS_DB']->Query($query);

     if($row = $GLOBALS['ISC_CLASS_DB']->Fetch($result)) {
      printf("<b style='font-size:13px; padding-bottom:5px'>%s</strong>", GetLang("UpdateInventoryLevels"));
      echo "<table border='0'>";
      echo "<tr>";
      echo "<td valign='top'><img src='images/nodejoin.gif' style='padding-top:5px' /></td>";
      printf("<td>%s:</td>", GetLang("CurrentStock"));
      printf("<td><input type='text' size='3' value='%d' name='stock_level_%d' id='stock_level_%d' /></td>", $row['prodcurrentinv'], $prodId, $prodId);
      echo "</tr>";
      echo "<tr>";
      echo "<td>";
      printf("<td>%s:</td>", GetLang("LowStockLevel"));
      printf("<td><input type='text' size='3' value='%d' name='stock_level_notify_%d' id='stock_level_notify_%d' /></td>", $row['prodlowinv'], $prodId, $prodId);
      echo "</tr>";
      echo "</table>";
      printf("<input class='StockButton' type='button' value='%s' onclick='UpdateStockLevel(%d, 0)' style='margin-left:110px' />&nbsp; <img src='images/ajax-blank.gif' id='loading%d' />", GetLang("Save"), $prodId, $prodId);
     }
    } else {
     $optionIds = array();

     // Fetch out the variation combinations for this product
     $query = "SELECT * FROM [|PREFIX|]product_variation_combinations WHERE vcproductid='".$prodId."'";
     $result = $GLOBALS['ISC_CLASS_DB']->Query($query);
     while($combination = $GLOBALS['ISC_CLASS_DB']->Fetch($result)) {
      $combinations[] = $combination;
      $optionIds = array_merge($optionIds, explode(",", $combination['vcoptionids']));
     }

     $optionIds = array_unique($optionIds);

     // Now fetch out the options we need to get
     if(!empty($optionIds)) {
      $optionIds = implode(",", $optionIds);
      // Get the combination options
      $variations = array();
      $query = "SELECT * FROM [|PREFIX|]product_variation_options WHERE voptionid IN (".$optionIds.")";
      $result = $GLOBALS['ISC_CLASS_DB']->Query($query);
      while($variation = $GLOBALS['ISC_CLASS_DB']->Fetch($result)) {
       $variations[$variation['voptionid']] = array($variation['voname'], $variation['vovalue']);
      }
     }

     printf("<b style='font-size:13px'>%s</strong><div style='padding:20px 20px 0px 20px'>", GetLang("UpdateInventoryLevels"));

     foreach($combinations as $row) {
      $output = "";
      $options = explode(",", $row['vcoptionids']);

      foreach($options as $option) {
       $output .= isc_html_escape($variations[$option][0]) . ": " . isc_html_escape($variations[$option][1]) . ", ";
      }

      $output = trim($output, ', ');
      echo "<strong><em>" . $output . "</em></strong>";
      echo "<br />";
      echo "<table border='0' style='padding-bottom:10px'>";
      echo "<tr>";
      echo "<td valign='top'><img src='images/nodejoin.gif' style='padding-top:5px' /></td>";
      printf("<td>%s:</td>", GetLang("CurrentStock"));
      printf("<td><input type='text' size='3' value='%d' name='stock_level_%d_%d' id='stock_level_%d_%d' /></td>", $row['vcstock'], $prodId, $row['combinationid'], $prodId, $row['combinationid']);
      echo "</tr>";
      echo "<tr>";
      echo "<td>";
      printf("<td>%s:</td>", GetLang("LowStockLevel"));
      printf("<td><input type='text' size='3' value='%d' name='stock_level_%d_%d' id='stock_level_notify_%d_%d' /></td>", $row['vclowstock'], $prodId, $row['combinationid'], $prodId, $row['combinationid']);
      echo "</tr>";
      echo "</table>";
     }

     echo "</div>";
     printf("<input class='StockButton' type='button' value='%s' onclick='UpdateStockLevel(%d, 1)' style='margin-left:130px' />&nbsp; <img src='images/ajax-blank.gif' id='loading%d' />", GetLang('Save'), $prodId, $prodId);
    }
   }
  }

0 Cevap