Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбор XML, Разбор XML 
V
    Опции темы
Casy
Дата 22.2.2009, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.1.2009

Репутация: нет
Всего: нет



Прошу помощи при разборе XML, ни как не могу понять что делать!

Имеется переменная содержащая:

$result =
Код

<resgos> 
   <result-um fatal="false">0</result-um> 
   <arms-list> 
        <arm id="665" vol="5" gets="13.12" />
        <arm id="666" vol="4" gets="13.05" />
        <Увеличивается в результате результата $result/>
    </arms-list> 
</resgos>


$rel = simplexml_load_string($result);

При вызове var_dump($rel);

Получается

Код

object(SimpleXMLElement)#6 (2) {
  ["result-um"]=>
  string(1) "0"
  ["arms-list"]=>
  object(SimpleXMLElement)#7 (1) {
    ["arm"]=>
    array(2) {
      [0]=>
      object(SimpleXMLElement)#9 (1) {
        ["@attributes"]=>
        array(3) {
          ["id"]=>
          string(3) "665"
          ["vol"]=>
          string(1) "5"
          ["gets"]=>
          string(5) "13.12"
        }
      }
      [1]=>
      object(SimpleXMLElement)#8 (1) {
        ["@attributes"]=>
        array(3) {
          ["id"]=>
          string(3) "666"
          ["vol"]=>
          string(1) "4"
          ["gets"]=>
          string(5) "13.05"
        }
      }
    }
  }
}


Мне нужно забирать значение только у которых ["vol"]=>"4"

666 4 13.05
 

Затем обновить в БД все эти значения!

Не получается ни как, как я только не пробовал. Не пойму одного почему получается ошибка
если сделать так

Код

foreach($rel->resgos->arms-list as $child)
  {
  echo $child->arm['id'];
  }


Parse error: syntax error, unexpected T_AS, expecting '(' in

Ошибка происходит из за arms-list  то что стоит дефис!
Так же ошибка выходит если просто написать 

echo $rel->resgos->arms-list;

или так

echo $rel->arms-list;

Parse error: syntax error, unexpected ';', expecting '(' in 

так же не получается так

Код

if (isset($rel['resgos']['Bills-list']['Bill']))
        {
            if (!isset($rel['resgos']['arms-list']['arm']['vol']))
            {
                foreach ($rel['resgos']['arms-list']['arm'] as $vol)
                {
                    if ($bill['vol'] == 4)
                    {
                        $ret[] = $vol['id'];
                    }
                }
            }
            else
            {
                if ($rel['resgos']['arms-list']['arm']['vol'] == 4)
                {
                    $ret[] = $rel['resgos']['arms-list'']['arm']['id'];
                }
            }
        }


Уже сколько бьюсь ничего не получается! ????

Это сообщение отредактировал(а) Casy - 22.2.2009, 05:16
PM MAIL   Вверх
lemonade
Дата 22.2.2009, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 7.12.2006
Где: Беларусь, Минск

Репутация: нет
Всего: 2



Тк молодой человек уверен, что ошибка из-зи даша в имени тэга и как я поняла тут про PHP, то лечится вроде так
Код

Just a quick addition:

If you need to access a child node which contains a dash, you need to encapsulate it with {""}.

For example:
<?php
foreach ($domain->domain-listing as $product) {
}
?>

The example above doesn't work because of the dash. But instead you need to use:
<?php
foreach ($domain->{"domain-listing"} as $product) {
}
?>

At least for me the second example works perfectly fine.


зы взято с http://php.oregonstate.edu/manual/en/funct...nt-children.php

Это сообщение отредактировал(а) lemonade - 22.2.2009, 05:49
PM MAIL ICQ Skype   Вверх
Casy
Дата 22.2.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.1.2009

Репутация: нет
Всего: нет



Спасибо помогло! Появился еще один вопрос!

Как обновить значение в БД из двойного массива?

Код

Вот результат print_R($ret);

Array
(
    [0] => Array
        (
            [id] => SimpleXMLElement Object
                (
                    [0] => 665
                )

            [gets] => SimpleXMLElement Object
                (
                    [0] => 13.12
                )

        )

    [1] => Array
        (
            [id] => SimpleXMLElement Object
                (
                    [0] => 666
                )

            [gets] => SimpleXMLElement Object
                (
                    [0] => 13.05
                )

        )

)


Если сделать так 

Если сделать так mysql_query("UPDATE gem SET bol='3' WHERE holsID='".$ret['id']."'");
То соот. ничего не обновляется!

Ну а если так mysql_query("UPDATE gem SET bol='3' WHERE holsID='".$ret[0]['id']."'");
То обновляются данные
Код

[0] => Array
        (
            [id] => SimpleXMLElement Object
                (
                    [0] => 665
                )

            [gets] => SimpleXMLElement Object
                (
                    [0] => 13.12
                )

        )



Мне нужно чтоб он обновлял все значения по прохождению цикла!

Код

if (isset($rel->{"result-um"}->arm))
        {
            if (!isset($rel->{"result-um"}->arm->vol))
            {
                foreach ($rel->{"result-um"}->arm as $arm)
                {
                    if ($arm['vol'] == 4)
                    {
                        $ret[] = array('id'=>$arm['id'], 'gets'=>$arm['gets']);        
                        
        mysql_query("UPDATE gem SET bol='3' WHERE holsID='".$ret['id']."'");
                    
            
            
            
                    }
                }
            }
            else
            {
                if ($rel->{"result-um"}->arm['vol'] == 4)
                {
                    $ret[] = array('id'=>$rel->{"result-um"}->arm['id'], 'gets'=>$rel->{"result-um"}->arm['gets']);
                }
            }    
        }


Это сообщение отредактировал(а) Casy - 22.2.2009, 15:31
PM MAIL   Вверх
Casy
Дата 22.2.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.1.2009

Репутация: нет
Всего: нет



Вопрос более не актуален, так как решил его сам! Тема закрыта!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.1136 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.