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

Тема в разделе "Базы данных", создана пользователем funest, 28 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. funest

    funest Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    145
    Симпатии:
    38
    делаю простой парсер их 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 вообще не работает.
    Я нуб, так что, не ругайтесь сильно :)
     
  2. uNknownMark

    uNknownMark

    Регистр.:
    22 сен 2007
    Сообщения:
    393
    Симпатии:
    169
    Покажи пример XML что бы можно было посмотреть и точнее сказать что не так!
     
  3. BDSG

    BDSG

    Регистр.:
    28 фев 2009
    Сообщения:
    203
    Симпатии:
    109
  4. funest

    funest Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    145
    Симпатии:
    38
    PHP:
    <movie_list>
        <
    movie>
            <
    id>19620</id>
            <
    title>ТакутЛица страха</title>
            <
    title_orig><![CDATA[TakutFaces 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
     
  5. funest

    funest Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    145
    Симпатии:
    38
    разобрался, в запросе в строковых значениях не поставил кавычки )
     
Статус темы:
Закрыта.