Парсер XML в MySQL - не добавляются таблицы

Статус
В этой теме нельзя размещать новые ответы.

funest

Постоялец
Регистрация
2 Июл 2007
Сообщения
146
Реакции
39
делаю простой парсер их XML в MySQl, и у меня ошибка в запросе видимо, но не знаю какая
PHP:
$db = readDatabase("db.xml");
for ($i=0; $i < count($db); $i++ ) {
$id = $db[$i]->id;
$title = $db[$i]->title;
$title_orig = $db[$i]->title_orig;
$movie_img = $db[$i]->movie_img;
$link_partner = $db[$i]->link_partner;
$year = $db[$i]->year;
$actors = $db[$i]->actors;
$director = $db[$i]->director;
$type = $db[$i]->type;
mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, 0, $id)", $msconnect); 
mysql_query("INSERT INTO jos_zoo_core_item VALUES ($id, $id, $title, $title_orig, NULL, NULL, 62, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, 62, NULL, NULL, NULL)", $msconnect); 
mysql_query("INSERT INTO jos_zoo_type_films VALUES ($id, $movie_img, null, $title_orig, $year, $type, $director, NULL, $link_partner, NULL, NULL, $actors)", $msconnect); 
}
Первый запрос проходит и делает все правильно. На втором добавляется только 2 таблицы, 3 вообще не работает.
Я нуб, так что, не ругайтесь сильно :)
 
Покажи пример XML что бы можно было посмотреть и точнее сказать что не так!
 
какие именно ошибки выдает?..

зы.. вообще про экранирование содержимого переменных забывать нельзя..
 
Покажи пример XML что бы можно было посмотреть и точнее сказать что не так!
PHP:
<movie_list>
	<movie>
		<id>19620</id>
		<title>Такут: Лица страха</title>
		<title_orig><![CDATA[Takut: Faces of Fear]]></title_orig>
		<movie_img>http://bla.com/uploads/small/19620.jpg</movie_img>
		<link_partner>http://bla.su/1111/download/19620/Takut_Litca_straha.html</link_partner>
		<year>2008</year>
		<actors>Фози Баадила, Майк Мульадро, Динна Оливия, Лукмар Сарди, Шанти. Марселла Зальянти</actors>
		<director>Робби Эртанто, Рэй Найоан, Рако Приянто, Рири Рица, Радитья Ситхарта, Кимо Стамбоэл, Тимоти Тйахьянто</director>
		<type>Ужасы</type>
	</movie>
</movie_list>
Добавлено через 6 минут
какие именно ошибки выдает?..
зы.. вообще про экранирование содержимого переменных забывать нельзя..
*** скрытое содержание ***
хз, что за ошибки, я смотрю по базе и как уже писал, первый запрос проходит, второй 2 таблицы заносит, 3 - не работает... вот полностью код:
PHP:
$mshost = "localhost"; // Хост
$msuser = "a"; // Имя пользователя
$mspassword = "b"; // Пароль
$msname = "c"; // Имя базы данных
$msconnect = mysql_connect($mshost, $msuser, $mspassword);
mysql_select_db($msname, $msconnect);
class DirM {
    var $id;   // id фильма
    var $title; // русскле название
    var $title_orig;  // оригинальное название
    var $movie_img;  // ссылка на картинку
	var $link_partner; // партнерская ссылка
	var $year; // год выхода
	var $actors; // актеры
	var $director; // режиссёр
	var $type; // жанр
    function DirM ($aa) {
        foreach ($aa as $k=>$v)
            $this->$k = $aa[$k];
    }
}
function readDatabase($filename) {
    // читать xml БД 
    $data = implode("",file($filename));
    $parser = xml_parser_create();
    xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
    xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
    xml_parse_into_struct($parser,$data,$values,$tags);
    xml_parser_free($parser);
    // цикл по этим структурам
    foreach ($tags as $key=>$val) {
        if ($key == "movie") {
            $movranges = $val;
            // каждая пара вхождений массива это нижняя и верхняя
            // границы диапазона для определения каждого фильма
            for ($i=0; $i < count($movranges); $i+=2) {
                    $offset = $movranges[$i] + 1;
                $len = $movranges[$i + 1] - $offset;
                $tdb[] = parseMol(array_slice($values, $offset, $len));
            }
        } else {
            continue;
        }
    }
    return $tdb;
}
function parseMol($mvalues) {
    for ($i=0; $i < count($mvalues); $i++)
        $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
    return new DirM($mol);
}
$db = readDatabase("db.xml");
for ($i=0; $i < count($db); $i++ ) {
$id = $db[$i]->id;
$title = $db[$i]->title;
$title_orig = $db[$i]->title_orig;
$movie_img = $db[$i]->movie_img;
$link_partner = $db[$i]->link_partner;
$year = $db[$i]->year;
$actors = $db[$i]->actors;
$director = $db[$i]->director;
$type = $db[$i]->type;
mysql_query("INSERT INTO jos_zoo_core_item (id, type_id, name, alias) VALUES ($id, $id, $title, $title_orig)", $msconnect); 
echo "Insert ".$i." ok <br />";
}
mysql_close($msconnect);
в erorr log:
HTML:
mod_fcgid: stderr: PHP Notice:  Undefined index:  value in /var/www/bla bla/data/www/bla.ru/parser/index.php on line 67
 
разобрался, в запросе в строковых значениях не поставил кавычки )
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху