Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML -> MySQL / 5 сообщений из 5, страница 1 из 1
15.06.2020, 21:19
    #39969526
15061997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> MySQL
Доброго времени суток.


Как загрузить
ONIX XML

в

базу данных MySQL

при этом наименование колонок в базе данных не соответствуют тегам в xml.

Только выборочные теги должны быть внесены в базу данных.
Возможность обновлять имеющиеся данные в базе (onix_xml обновления) а также удалять данные (onix_xml удалить).
Должно работать на сервере (Апачи)(ПХП 7.2 и выше).

пытался решить вот так

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
<?php
//import.php
sleep(3);
$output = '';

if(isset($_FILES['file']['name']) &&  $_FILES['file']['name'] != '')
{
 $valid_extension = array('xml');
 $file_data = explode('.', $_FILES['file']['name']);
 $file_extension = end($file_data);
 if(in_array($file_extension, $valid_extension))
 {
  $data = simplexml_load_file($_FILES['file']['tmp_name']);
  $connect = new PDO('mysql:host=localhost;);
  $query = "
INSERT INTO oxarticles 
   (OXID, OXSHOPID, OXPARENTID, OXACTIVE, OXHIDDEN, OXARTNUM, OXACTIVEFROM) 
   VALUES(:OXID, :OXSHOPID, :OXPARENTID, :OXACTIVE,:OXHIDDEN, :OXARTNUM, :OXACTIVEFROM);
  ";
  $statement = $connect->prepare($query);
  for($i = 0; $i < count($data); $i++)
  {
   $statement->execute(
    array(
     ':OXID'   => $data->product datestamp="20190106"->a001,
	 ':OXSHOPID' => $data->product datestamp="20190106"->a002,
	 ':OXPARENTID' => $data->product datestamp="20190106"->productidentifier->b221,
	 ':OXACTIVE' => '1',
	 ':OXHIDDEN' => "1",
	 ':OXARTNUM' => '1',
	 ':OXACTIVEFROM' => '1'	 
	 
	 
       )
   );

  }
  $result = $statement->fetchAll();
  if(isset($result))
  {
   $output = '<div class="alert alert-success">Всё прошло удачно!!!</div>';
  }
 }
 else
 {
  $output = '<div class="alert alert-warning">Файлы безпонтовые. В топку их!</div>';
 }
}
else
{
 $output = '<div class="alert alert-warning">Выбери XML файлы</div>';
}

echo $output;

?>



не вносит то что надо, не получается...
...
Рейтинг: 0 / 0
16.06.2020, 16:50
    #39969838
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> MySQL
15061997
Код: php
1.
$data->product datestamp="20190106"->productidentifier->b221,

Что хотелось сказать этой строчкой? Оно вообще компилироваться не должно
...
Рейтинг: 0 / 0
16.06.2020, 17:13
    #39969845
15061997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> MySQL
_Vasilisk_,


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<product datestamp="20190106">
    <a001>051d3d1f81cd44d7972c9aaaefa81ce7</a001>
    <a002>03</a002>
    <productidentifier>
        <b221>02</b221>
        <b244>3863522702</b244>
    </productidentifier>
    <productidentifier>
        <b221>03</b221>
        <b244>9783863522704</b244>
    </productidentifier>
    <productidentifier>
         что бы  вот если это -----><b221>15</b221>  ровно 15 то перенимается вот это --.
  <b244>9783863522704</b244> <--------------------------------------------------------' 
    </productidentifier>



но не перенимается/ передаётся даже значение тега B221
...
Рейтинг: 0 / 0
16.06.2020, 17:33
    #39969855
15061997
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> MySQL
хотела указать путь где вот это :OXPARENTID' должно перенять значение
...
Рейтинг: 0 / 0
16.06.2020, 17:46
    #39969864
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML -> MySQL
Может вы так хотели?
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
  $statement = $connect->prepare($query);
  for($data->children() as $product)
  {
   $statement->execute(
    array(
     ':OXID'   => $product->a001,
	 ':OXSHOPID' => $product->a002,
	 ':OXPARENTID' => $product->productidentifier->b221,
	 ':OXACTIVE' => '1',
	 ':OXHIDDEN' => "1",
	 ':OXARTNUM' => '1',
	 ':OXACTIVEFROM' => '1'	 
       )
   );


И вот это
15061997
Код: php
1.
$result = $statement->fetchAll();

полный бред. Какой fetch для INSERT?
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML -> MySQL / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]