Подскажите где ошибка?

Тема в разделе "PHP", создана пользователем Kewl, 17 сен 2009.

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

    Kewl

    Регистр.:
    9 сен 2007
    Сообщения:
    249
    Симпатии:
    107
    Php код

    <?php
    $yml_catalog = simplexml_load_file('catalog.xml');

    foreach ($yml_catalog->offers[0]->offer as $offer) {
    $id = $offer['id'];
    $categoryId = $offer->categoryId;
    $picture = $offer->picture;
    $model = $offer->model;

    $catalog .= $id . "<br />"
    . $categoryId . "<br />"
    . $picture . "<br />"
    . $model . "<br />"
    }
    ?>


    Сам Xml (catalog.xml)

    <?xml version="1.0" encoding="windows-1251"?>
    <!DOCTYPE yml_catalog SYSTEM "shops.dtd">
    <yml_catalog date="2009-09-17 18:12">

    <shop>
    <typePrefix>сайт</typePrefix>
    <company>сайт</company>
    <url>http://www.сайт.ru/</url>

    <currencies>
    <currency id="RUR" rate="1"/>
    </currencies>

    <categories>
    <category id="79">категория</category>
    </categories>

    <offers>
    <offer id="130" type="vendor.model">
    <url>http://www.сайт.ru/категория/товар.html</url>
    <price>50</price>
    <currencyId>RUR</currencyId>
    <categoryId>79</categoryId>
    <picture>http://www.сайт.ru/images/m.jpg</picture>
    <vendor>производитель</vendor>
    <model>модель</model>
    <description>
    описание товара
    </description>
    </offer>
    </shop></yml_catalog>

    Parse error: syntax error, unexpected '}' in /usr/home/h1095/data/www/site/xml.php on line 15

    Идея какя просто вывести по 10 товаров рандомно из этого xml / Спасибо за помощь
     
  2. pori

    pori Постоялец

    Регистр.:
    30 авг 2009
    Сообщения:
    114
    Симпатии:
    18
    точку с запятой перед скобкой } забыл...
     
  3. Kewl

    Kewl

    Регистр.:
    9 сен 2007
    Сообщения:
    249
    Симпатии:
    107
    <?php
    $yml_catalog = simplexml_load_file('catalog.xml');

    foreach ($yml_catalog->offers[0]->offer as $offer) {
    $id = $offer['id'];
    $categoryId = $offer->categoryId;
    $picture = $offer->picture;
    $model = $offer->model;

    $catalog .= $id . "<br />"
    . $categoryId . "<br />"
    . $picture . "<br />"
    . $model . "<br />"
    ;}
    ?>

    Warning: Invalid argument supplied for foreach() in /usr/home/h1095/data/www/site/xml.php on line 5
     
  4. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    переменная $yml_catalog->offers[0]->offer не существует. перед циклом желательно ее проверить
    PHP:
    if(isset($yml_catalog->offers[0]->offer))
    {
        foreach (
    $yml_catalog->offers[0]->offer as $offer)
        {
            ....
        }
    }
     
    Kewl нравится это.
  5. pori

    pori Постоялец

    Регистр.:
    30 авг 2009
    Сообщения:
    114
    Симпатии:
    18
    Там вообще ошибка в самом xml - не закрывается тег <offers>.

    По коду - сделал бы так, сразу все понял бы:

    PHP:
    print_r($yml_catalog);
    Соблюдай иерархию...

    Попробуй так:

    PHP:
    <?php
    $yml_catalog 
    simplexml_load_file('catalog.xml');

    foreach (
    $yml_catalog->shop->offers[0]->offer as $offer) {
    $id $offer['id'];
    $categoryId $offer->categoryId;
    $picture $offer->picture;
    $model $offer->model;

    $catalog .= $id "<br />"
    $categoryId "<br />"
    $picture "<br />"
    $model "<br />";
    }
    ?>
    файл XML:

    Код:
    ?xml version="1.0" encoding="windows-1251"?>
    <!DOCTYPE yml_catalog SYSTEM "shops.dtd">
    <yml_catalog date="2009-09-17 18:12">
    
    <shop>
    <typePrefix>сайт</typePrefix>
    <company>сайт</company>
    <url>http://www.сайт.ru/</url>
    
    <currencies>
    <currency id="RUR" rate="1"/>
    </currencies>
    
    <categories>
    <category id="79">категория</category>
    </categories>
    
    <offers>
    <offer id="130" type="vendor.model">
    <url>http://www.сайт.ru/категория/товар.html</url>
    <price>50</price>
    <currencyId>RUR</currencyId>
    <categoryId>79</categoryId>
    <picture>http://www.сайт.ru/images/m.jpg</picture>
    <vendor>производитель</vendor>
    <model>модель</model>
    <description>
    описание товара
    </description>
    </offer>
    </offers>
    </shop></yml_catalog>
     
    Kewl нравится это.
  6. Kewl

    Kewl

    Регистр.:
    9 сен 2007
    Сообщения:
    249
    Симпатии:
    107
    Большое тебе человеческое спасибо!!!!!!!
     
Статус темы:
Закрыта.