@WebforSelf

Как собрать несколько цен с xml?

Хочу получить несколько цен с xml файла через PHP. сейчас отправляется одна.
Было так в xml
<Цены>
					<Цена>
						<Представление>73,95 руб. за шт</Представление>
						<ИдТипаЦены>4dbf47c6-1bf2-11e1-87a5-14dae9941777</ИдТипаЦены>
						<ЦенаЗаЕдиницу>73.95</ЦенаЗаЕдиницу>
						<Валюта>руб</Валюта>
						<Единица>шт</Единица>
						<Коэффициент>1</Коэффициент>
					</Цена>
				</Цены>


А стало

<Цены>
					<Цена>
						<Представление>73,95 руб. за шт</Представление>
						<ИдТипаЦены>4dbf47c6-1bf2-11e1-87a5-14dae9941777</ИдТипаЦены>
						<ЦенаЗаЕдиницу>73.95</ЦенаЗаЕдиницу>
						<Валюта>руб</Валюта>
						<Единица>шт</Единица>
						<Коэффициент>1</Коэффициент>
					</Цена>
					<Цена>
						<Представление>51,19 руб. за шт</Представление>
						<ИдТипаЦены>4dbf47c8-1bf2-11e1-87a5-14dae9941777</ИдТипаЦены>
						<ЦенаЗаЕдиницу>51.19</ЦенаЗаЕдиницу>
						<Валюта>руб</Валюта>
						<Единица>шт</Единица>
						<Коэффициент>1</Коэффициент>
					</Цена>
					<Цена>
						<Представление>73,99 руб. за шт</Представление>
						<ИдТипаЦены>674491d1-1c25-11e1-8c47-f46d04ed5207</ИдТипаЦены>
						<ЦенаЗаЕдиницу>73.99</ЦенаЗаЕдиницу>
						<Валюта>руб</Валюта>
						<Единица>шт</Единица>
						<Коэффициент>1</Коэффициент>
					</Цена>
				</Цены>


Соответственно нужно пройтись в форече, но что то не могу понять как. Вот пример кода как добавляется цена когда она одна.

function import_variant($xml_variant)
{
	global $simpla;
	global $dir;
	$variant = new stdClass;
	//  Id товара и варианта (если есть) по 1С
	@list($product_1c_id, $variant_1c_id) = explode('#', $xml_variant->Ид);
	if(empty($variant_1c_id))
		$variant_1c_id = '';
	if(empty($product_1c_id))
		return false;

	$simpla->db->query('SELECT v.id FROM __variants v WHERE v.external_id=? AND product_id=(SELECT p.id FROM __products p WHERE p.external_id=? LIMIT 1)', $variant_1c_id, $product_1c_id);
	$variant_id = $simpla->db->result('id');
	
	$simpla->db->query('SELECT p.id FROM __products p WHERE p.external_id=?', $product_1c_id);
	$variant->external_id = $variant_1c_id;
	$variant->product_id = $simpla->db->result('id');
	if(empty($variant->product_id))
		return false;

$variant->price = $xml_variant->Цены->Цена->ЦенаЗаЕдиницу;	
	
	if(isset($xml_variant->ХарактеристикиТовара->ХарактеристикаТовара))
	foreach($xml_variant->ХарактеристикиТовара->ХарактеристикаТовара as $xml_property)
		$values[] = $xml_property->Значение;
	if(!empty($values))
		$variant->name = implode(', ', $values);
	$sku = (string)$xml_variant->Артикул;
	if(!empty($sku))
		$variant->sku = $sku;
	
	
	$variant->stock = $xml_variant->Количество;

	if(empty($variant_id))
		$simpla->variants->add_variant($variant);
	else	
		$simpla->variants->update_variant($variant_id, $variant);
}


Где

$variant->price = $xml_variant->Цены->Цена->ЦенаЗаЕдиницу;


Добавление цены варианту товара, вот тут у варианта будет

$variant->price2 и $variant->price3 , куда записаться должны будут другие две цены.

Пробовал аналогично характеристикам, но записывает значения

foreach($xml_variant->ХарактеристикиТовара->ХарактеристикаТовара as $xml_property)
		$values[] = $xml_property->Значение;
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
PavelUstyugov
@PavelUstyugov
proger support
$xml = simplexml_load_file(SELF::$import);
foreach ($xml->Цены->Цена as $price ) {
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы