Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с парсингом xml

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Skbeloff
Отправлено: 12 Июля, 2016 - 06:26:22
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Добрый день! Только начинаю учиться работать с php и Mysql. Поэтому прошу помощи.

Задача.
1. Обрабатывать по крону скриптом файл xml который заливается один раз в день.
2. Проверять изменения по уникальному артикулу, цену если изменилась менять.
3. Если такого артикула нет, записывать в определенную таблицу, при этом назначать id/

Скрипт обработки xml:

<?php
$host="localhost";
$user="parsertest";
$pass="parsertest"; //установленный вами пароль
$db_name="parsertest";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
?>




<?php

$elements = null; // просто имя текущей ноды
$offer = null; // собирает один элемент offer

// Вызывается, когда встречается открывающий тег.
// если это offer - создаем массив под него
function startElements($parser, $name, $attrs)
{
global $offer, $elements;
if ($name == 'OFFER') {
$offer = array();
}
$elements = $name;
}

// Вызывается, когда тег закрывается
// если это тег offer - печатаем содержимое и вычищаем
function endElements($parser, $name)
{
global $offer, $elements;
if(!empty($name)) {
if ($name == 'OFFER') {
echo "<br>Name: $offer[NAME]\n";
echo "<br>Article: $offer[SKU]<br>\n";
echo "Price: $offer[PRICE]<hr>\n";

$result = mysql_query ("UPDATE oc_product SET price='$offer[PRICE]' WHERE sku='$offer[SKU]'"); // Сравниваем и меняем





$offer = null;
}
$elements = null;
}
}

// Вызывается для текста, заполняем массив
function characterData($parser, $data)
{
global $offer, $elements;
if(!empty($data)) {
if ($elements == 'NAME' || $elements == 'PRICE' || $elements == 'SKU') {
$offer[$elements] = trim($data);
}
}
}

// Собственно, подготавливаем парсер
$parser = xml_parser_create();

xml_set_element_handler($parser, "startElements", "endElements");
xml_set_character_data_handler($parser, "characterData");

// открываем файл
if (!($handle = fopen('price.xml', "r"))) {
die("could not open XML input");
}

while($data = fread($handle, 4096)) // читаем по кусочкам
{
xml_parse($parser, $data); // и стравливаем парсеру
}

xml_parser_free($parser); // почистим за собой.

?>


Сам xml файл:

<offers>

<offer>
<url>http://www.site.ru/katalog/item.html?</url>
<price>300</price>
<name>Svetilnik</name>
<sku>8001</sku>
</offer>


<offer>
<url>http://www.site.ru/katalog/item.html?</url>
<price>245</price>
<name>Svetilnik</name>
<sku>8002</sku>
</offer>

<offer>
<url>http://www.site.ru/katalog/item.html?</url>
<price>488</price>
<name>Svetilnik</name>
<sku>8003</sku>
</offer>

</offers>


Теперь не могу понять как прописать условие, если sku не найден записать в определеную таблицу присвоить id.

(Отредактировано автором: 12 Июля, 2016 - 06:26:57)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB