PHP.SU

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

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

> Найдено сообщений: 6
vik7878 Отправлено: 21 Декабря, 2017 - 10:53:07 • Тема: чтение xml файла • Форум: Вопросы новичков

Ответов: 5
Просмотров: 387
Просто

PHP:
скопировать код в буфер обмена
  1.  
  2. //чтение строки из xml
  3. $oRussianName=mysqli_real_escape_string($mysqli,"$offer[RUSSIANNAME]");
  4. //запись в бд.
  5. $mysqli->query("INSERT INTO offer_ (RussianName_)VALUES ('$oRussianName')");
  6.                                
  7.  
vik7878 Отправлено: 21 Декабря, 2017 - 10:33:28 • Тема: чтение xml файла • Форум: Вопросы новичков

Ответов: 5
Просмотров: 387
htmlspecialchars() - вообще не пользуюсь
попробовал вот это

Ни каких изменений Хм
vik7878 Отправлено: 21 Декабря, 2017 - 09:11:50 • Тема: чтение xml файла • Форум: Вопросы новичков

Ответов: 5
Просмотров: 387
Доброго дня всем.
Когда загоняю xml в базу MySql иногда обрезаются строки.
Например если есть строка где написано "Петя <Вася> Миша". То в базу записывается только "Миша".
Как я понимаю это происходит из за этих символов ( < > ).
Но как решить эту проблему не знаю.
xml - windows-1251
сайт и MySql - utf-8
vik7878 Отправлено: 12 Декабря, 2017 - 16:54:53 • Тема: Перегнать XML в PHP • Форум: XML и его обработка

Ответов: 4
Просмотров: 3726
спасибо
vik7878 Отправлено: 09 Декабря, 2017 - 17:31:17 • Тема: Перегнать XML в PHP • Форум: XML и его обработка

Ответов: 4
Просмотров: 3726
МелкийОчень прошу покажите как вытащить id. Не могу ни как понять
vik7878 Отправлено: 09 Декабря, 2017 - 15:06:43 • Тема: Перегнать XML в PHP • Форум: XML и его обработка

Ответов: 4
Просмотров: 3726
Доброго дня. Возникла необходимость обновлять БД через XML файл.
Файл обновляется каждые 3 часа. А значит и БД тоже должна так обновляться. XML большой 250 мегабайт.

Нашел в инете такойкод
PHP:
скопировать код в буфер обмена
  1. $filename1 = 'file/price3.xml';
  2.                 ConnectDB();
  3.                 $elements   = null;  // просто имя текущей ноды
  4.                 $offer = null; // собирает один элемент offer
  5.                 $mysqli->query("DELETE FROM offer_");
  6.                 $mysqli->query("ALTER TABLE offer_ AUTO_INCREMENT=0");
  7.                 // Вызывается, когда встречается открывающий тег.
  8.                 // если это offer - создаем массив под него
  9.                 function startElements($parser, $name, $attrs)  
  10.                 {
  11.                         global $offer, $elements;
  12.                         if ($name == 'OFFER') {//category
  13.                         $offer = array();
  14.                         }
  15.                         $elements = $name;
  16.                 }
  17.  
  18.                 // Вызывается, когда тег закрывается
  19.                 // если это тег offer - печатаем содержимое и вычищаем
  20.                 function endElements($parser, $name)
  21.                 {
  22.                         global $offer, $elements;
  23.                         global $mysqli;
  24.                                
  25.                         if(!empty($name)) {
  26.                                 if ($name == 'OFFER') {
  27.                                         $oUid= "$offer[UID]";
  28.                                         $oUrl= "$offer[URL]";                  
  29.                                        
  30.                                                
  31.                                         $mysqli->query("INSERT INTO offer_ (Uid_, Url_) VALUES ($oUid, '$oUrl')");
  32.                                        
  33.                                         $offer = null;
  34.                                 }
  35.                                 $elements = null;
  36.                         }
  37.                 }
  38.  
  39.                 // Вызывается для текста, заполняем массив
  40.                 function characterData($parser, $data)
  41.                 {
  42.                         global $offer, $elements;
  43.                         if(!empty($data)) {
  44.                                 if ($elements == 'UID'   || $elements == 'URL'  ) {
  45.                                         $offer[$elements] = trim($data);
  46.                                 }
  47.                         }
  48.                 }
  49.  
  50.                 // Собственно, подготавливаем парсер
  51.                
  52.                 $parser = xml_parser_create();
  53.  
  54.                 xml_set_element_handler($parser, "startElements", "endElements");
  55.                 xml_set_character_data_handler($parser, "characterData");
  56.  
  57.                 // открываем файл
  58.                 if (!($handle = fopen($filename1, "r"))) {
  59.                         die("could not open XML input");
  60.                 }
  61.  
  62.                 while($data = fread($handle, 4096)) // читаем по кусочкам
  63.                 {
  64.                         xml_parse($parser, $data);  // и стравливаем парсеру
  65.                 }
  66.  
  67.                 xml_parser_free($parser); // почистим за собой.
  68.                 closeDB();
  69.  

Вот пример XML
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <offer id="12">
  3.     <uid>1234</uid>
  4.     <url>jhgjhgjhg</url>
  5. </offer>
  6. <offer id="13">
  7.     <url>hjgujgjg</url>
  8.     <uid>12345</uid>
  9. </offer>
  10.  

Все хорошо работает загрузка БД проходит менее чем за 2 мин.
Но у меня есть 2 вопроса:
1. Почему нужно в PHP писать теги (offer, uid, url) заглавными буквами. Иначе просто не работает.
2. Как вытащить id.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB