Перейти к содержимому



Парсер XML + запись полученного в базу MySQL, вносит лишь первую запись

#1 serg2012

serg2012
  • Пользователь
  • 1 сообщений
  • Репутация: 0
0

Отправлено 08 Июнь 2012 - 15:21

Добрый день!

Толи пятница влияет, толи что-то еще...

есть xml файл с данными, парсером SimpleXML вытаскиваю нужные данные в переменные через цикл, mysql запросом отправляю это в базу - первая запись уходит нормально, а остальные нарываются на ошибку.

Посмотрите свежим взглядом, в чем дело?

XML - example.xml :

<?php
$xmlstr = <<<XML
<?xml version="1.0" encoding="utf-8" ?>
<yml_catalog date="2010-02-11 00:04">
<shop>
<categories>
<category id="399"><![CDATA[Подарок]]></category>
<category id="400" parentId="399"><![CDATA[Масштабные модели автомобилей]]></category>
<category id="403" parentId="399"><![CDATA[Радиоуправляемые катера и яхты]]></category>
<category id="405" parentId="399"><![CDATA[Радиоуправляемые машины для офиса и дома]]></category>
<category id="402" parentId="399"><![CDATA[Радиоуправляемые машины для улицы]]></category>
<category id="401" parentId="399"><![CDATA[Радиоуправляемые самолеты]]></category>
<category id="554" parentId="399"><![CDATA[Радиоуправляемые вертолеты]]></category>
<category id="765"><![CDATA[Уцененные товары]]></category>
<category id="836"><![CDATA[Распродажа]]></category>
<category id="780"><![CDATA[Детские электромобили]]></category>
<category id="432"><![CDATA[Электрические скейты и самокаты]]></category>
<category id="497"><![CDATA[Сняты с производства]]></category>
<category id="813"><![CDATA[Конструкторы]]></category>
<category id="374"><![CDATA[Масштабные модели]]></category>
<category id="375" parentId="374"><![CDATA[Масштаб 1:12]]></category>
</categories>
</shop>
</yml_catalog>
XML;
?>

PHP parse.php :

<?php
$db = mysql_connect ("localhost","user","123456");
$connect = mysql_select_db("base",$db) or die (mysql_error());

if ($connect == 'true') {
  echo "<p>CONNECT!</p>";
}
else {
  echo "<h2>PIZDEC!</h2>";
}
include 'example.php';

$yml_catalog = new SimpleXMLElement($xmlstr);

$count = count($yml_catalog->shop->categories[0]->category);

echo "Kolichestvo: ".$count."<br /><br />";

for($i = 0; $i < 5; $i++){

foreach ($yml_catalog->shop->categories[0]->category as $category) {

  $id = iconv("UTF-8", "windows-1251", $category['id']);
  $category = iconv("UTF-8", "windows-1251", $category);
  echo "<hr />";

  $query = "
  INSERT INTO
   table_name
	( pole_1, pole_2, pole_3, pole_4, pole_5, pole_6, pole_7 )
  VALUES (
	 '$id',
	 '$category',
	 '',
	 '',
	 '',
	 '',
	 ''
	)";

  $result = mysql_query($query);

  if ($result == 'true')
   {
	echo "<h2 style='color:green'>Данные внесены!</h2>";
   }
  else
   {
	 echo "<h2 style='color:red'>Данные не добавлены. Проверте вводимые данные.</h2>";
   }
}
}
?>

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Июнь 2012 - 17:07

Количество count проверьте сколько показывает.
Что у вас в итоге выводит скрипт? Ошибка в SQL запросе или данные не добавляются по каким-то другим причинам?

А так же не понятно, зачем у вас внешний цикл, пять раз хотите одну и туже запись занести?
for($i = 0; $i < 5; $i++){
...
}

  • 1


Оформление форума – IPBSkins.ru