PHP

Обновление таблицы БД из XML файлов

Два примера чтения xml файлов, которые обновляют цены и остатки в базе данных интернет магазина.

1

Чтение стандартного XML файла

Пример файла:

<?xml version="1.0" encoding="utf-8"?>
<stocks date="2018-01-30">
    <item>
        <article>105AG</article>
        <name>105AG "Ангел" Ночник</name>
        <stock>0</stock>
        <price>483.00</price>
    </item>
    <item>
        <article>105BB</article>
        <name>105BB "Медведь" Ночник</name>
        <stock>40</stock>
        <price>39.00</price>
    </item>
    ...
</stocks>

Чтение файла и обновление записей в БД:

Для доступа к БД используется библиотека PDO MySQL.

// Подключение к БД.
$dbh = new PDO('mysql:dbname=НАЗВАНИЕ_БД;host=localhost', 'ЛОГИН', 'ПАРОЛЬ');

$data = simplexml_load_file('http://site.com/file.xml');
foreach ($data->item as $row) {
    $articool = strval($row->article);
    $stock    = intval($row->stock);
    $price    = floatval($row->price);

    // Поиск товара в БД по артикулу.
    $sth = $dbh->prepare("SELECT * FROM `prods` WHERE `articool` = ?");
    $sth->execute(array($articool));
    $prod = $sth->fetch(PDO::FETCH_ASSOC);

    // Обновление товара.
    if (!empty($prod)) {
        $sth = $dbh->prepare("UPDATE `prods` SET `price` = ?, `stock` = ? WHERE `id` = ?");
        $sth->execute(array($price, $stock, $prod['id']));
    }
}
2

XML файл из 1С

1C формирует файлы с использованием кириллицы и значения хранятся в атрибутах элементов:

<Таблица ДатаАкуальности="30.01.2018 9:07:21">
    <element>
        <Артикул Артикул="002040"/>
        <Наименование Наименование="Светильник SOLO CYL MR16 ХРОМ/ПРОЗРАЧНЫЙ"/>
        <Цены Розничная="1436" Оптовая="870"/>
        <Остаток Остаток="10"/>
    </element>
    <element>
        <Артикул Артикул="002041"/>
        <Наименование Наименование="Светильник ROSA CYL MR16 ХРОМ/ПРОЗРАЧНЫЙ"/>
        <Цены Розничная="876" Оптовая="438"/>
        <Остаток Остаток="15"/>
    </element>
    ...
</Таблица>
// Подключение к БД.
$dbh = new PDO('mysql:dbname=НАЗВАНИЕ_БД;host=localhost', 'ЛОГИН', 'ПАРОЛЬ');

$data = simplexml_load_file('http://site.com/file_1c.xml');
foreach ($data->item as $row) {
    $articool = strval($row->Артикул['Артикул']);
    $stock    = intval($row->Остаток['Остаток']);
    $price    = floatval($row->Цены['Розничная']);

    // Поиск товара в БД по артикулу.
    $sth = $dbh->prepare("SELECT * FROM `prods` WHERE `articool` = ?");
    $sth->execute(array($articool));
    $prod = $sth->fetch(PDO::FETCH_ASSOC);

    // Обновление товара.
    if (!empty($prod)) {
        $sth = $dbh->prepare("UPDATE `prods` SET `price` = ?, `stock` = ? WHERE `id` = ?");
        $sth->execute(array($price, $stock, $prod['id']));
    }
}
21 июня 2018
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают или совсем не...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...