2017-12-19 20 views
0

Ich habe dies, um den PrestaShop Preis für ein Produkt mit dem WebService zu aktualisieren.PrestaShop WebService - Preis Update für verschiedene Produkte

<html><head><title>CRUD Data Transfer - Update example</title></head><body> 
<?php 
// Here we define constants /!\ You need to replace this parameters 
define('DEBUG', true); 
define('PS_SHOP_PATH', 'https://my.domain.com'); 
define('ID_PRODUCT', 1); 
define('PS_WS_AUTH_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'); 
require_once('./PSWebServiceLibrary.php'); 
@ini_set('display_errors', 'on'); 
try 
{ 
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); 
$opt = array('resource' => 'products'); 
$opt['id']=ID_PRODUCT; 
$xml = $webService->get($opt); 
echo "Successfully recived data."; 
    /* List of nodes that can't modify 
    * 
    * - "manufacturer_name" 
    * - "position_in_category" 
    * - "quantity" 
    * - "type" 
    */ 
    unset($xml->children()->children()->manufacturer_name); 
    unset($xml->children()->children()->position_in_category); 
    unset($xml->children()->children()->quantity); 
    unset($xml->children()->children()->type); 
    $xml->children()->children()->price = 111.0; // <-- new price! 
//Load new data to query generator 
$opt['putXml']=$xml->asXML(); 
$xml = $webService->edit($opt); 
// if WebService don't throw an exception the action worked well and we don't show the following message 
echo "Successfully updated."; 
} 
catch (PrestaShopWebserviceException $ex) 
{ 
// Here we are dealing with errors 
$trace = $ex->getTrace(); 
if ($trace[0]['args'][0] == 404) echo 'Bad ID'; 
else if ($trace[0]['args'][0] == 401) echo 'Bad auth key'; 
else echo 'Other error<br />'.$ex->getMessage(); 
} 

?> 
</body></html> 

Wie kann ich das gleiche tun, sondern auch für alle Produkte in einer MySQL-Tabelle?

Ich habe alle Produkte in einer MySQL-Tabelle mit dem ID-Schlüssel als Source_ID.

Schätzen Sie jede Hilfe!

Grüße

+0

nichts ?? :(Ich brauche das bitte! –

Antwort

0

Sie werden die Produktdaten für jedes Produkt abrufen müssen, aktualisieren Sie es den Preis ist, und speichern Sie es dann. Probieren Sie etwas wie folgt aus:

<html><head><title>CRUD Data Transfer - Update example</title></head><body> 
<?php 
// Here we define constants /!\ You need to replace this parameters 
define('DEBUG', true); 
define('PS_SHOP_PATH', 'http://my.domain.com'); 
define('PS_WS_AUTH_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXX'); 
require_once('PSWebServiceLibrary.php'); 
@ini_set('display_errors', 'on'); 

try { 
    $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); 

    // Get products from your database via a query 
    $products = array(array('id' => 1, 'price' => 1.5,), array('id' => 2, 'price' => 2.95)); 

    // Loop through products 
    foreach ($products as $product) { 

     $opt = array('resource' => 'products', 'id' => $product['id']); 

     // Call webservice to get product data 
     $xml = $webService->get($opt); 

     // Remove nodes that can't be modified 
     unset($xml->children()->children()->manufacturer_name); 
     unset($xml->children()->children()->position_in_category); 
     unset($xml->children()->children()->quantity); 
     unset($xml->children()->children()->type); 

     // Update product data 
     $xml->children()->children()->price = $product['price']; // <-- new price! 

     // Load new data to query generator   
     $opt['putXml'] = $xml->asXML(); 

     // Save product 
     $xml = $webService->edit($opt); 
     // if WebService don't throw an exception the action worked well and we don't show the following message 
    } 
} catch (PrestaShopWebserviceException $ex) { 
    // Here we are dealing with errors 
    $trace = $ex->getTrace(); 
    if ($trace[0]['args'][0] == 404) 
     echo 'Bad ID'; 
    else if ($trace[0]['args'][0] == 401) 
     echo 'Bad auth key'; 
    else 
     echo 'Other error<br />' . $ex->getMessage(); 
} 
?> 
</body></html> 

hoffe, das hilft!

+0

Vielen Dank für Ihre Hilfe! Für den Moment habe ich versucht, mit Ihnen, aber es nur das erste Produkt zu aktualisieren: 'ID' => 1, 'Preis' => 1.5 Der andere ist nicht aktualisiert. :( –

+0

Oh, das ist traurig :-(Erhalten Sie einen Fehler beim Update? Gibt es ein Produkt mit ID 2 tatsächlich in Ihrem Geschäft? – ArisS

+0

Hallo @ArisS Nein, ich habe dies bei der Ende: Anderer Fehler Dieser Aufruf von PrestaShop Web Services ist fehlgeschlagen und hat einen HTTP-Status von 500 zurückgegeben. Das bedeutet: Interner Serverfehler für Ihre andere Frage, ja, ich habe tatsächlich 3 Produkte in meinem Shop mit ID 1,2 und 3. –

Verwandte Themen