Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Загрузка товаров из xml, помогите написать функцию получения данных из xml
apdate  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




Привет все!
друзья я новичок в php перерыл интернет не нашел похожего примера а из тех что есть не очень понимаю как произвести выборку данных из xml

вот моя xml -ка с данными

приведу маленький кусочек от с начало до нескольких товаров (ато товаров больше 2000)


<yml_catalog date="2016-08-30 17:01">
<
shop>
<
name>Интернет магазин</name>//наименование сайта
<company>ЧТУП "Рога и копыта"</company>// наименование компании
<url>http://адрес сайта</url>
<currencies>
<
currency id="BYN" rate="1"/>//валюта
</currencies>
<
offers>
<
offer id="78" available="true">//идентификатор товара по нему необходимо искать в бд
<url>http://адрес сайта/products/chempionchampion</url>
<price>50</price>//цена
<compare_price>1.97</compare_price>//цена со скидкой
<name>Чемпион/Champion/25*2</name>//наименование товара
</offer>
//следующий товар
<offer id="187" available="true">
<
url>
http://адрес магазина/products/chempionchampion?variant=187
</url>
<
price>12</price>
<
compare_price>0.5</compare_price>
<
name>Чемпион/Champion/25*2</name>
</
offer>

необходима все это дело поместить в базу данных при этом если ид товара уже присутствует в бд необходимо перезаписать только цены и все

но с базой данных я думаю сам разберусь помогите только вытащить данные из xml циклом каждую переменную

PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
apdate  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




пробовал этот пимером но не получилось выводит только наименование организации

<?php
header('Content-type: text/html; charset=utf-8');
$path = 'http://адрес сайта/генератор_xml.php';
if (!$xml = simplexml_load_file($path)){
//$path может быть локальный или удаленный (с html://)
die('Ошибка!!! Не удалось получить XML файл');
}

$attributes = $xml->attributes();//получаем массив атрибутов корневого узла
$res = array(
'date' => (string)$attributes['date'],//все узлы и данные
// хранятся как объекты класса SimpleXMLElement,
//принудительно преобразуем в строку (string)

'name' => (string)$xml->shop->company,
'offers' => array(),
);

foreach ($xml->shop->offers->offer as $xmlOffer){
$attributes = $xmlOffer->attributes();//аналогично получаем
// массив атрибутов предложений

if ((string)$attributes['available']=='true'){
$res['offers'][] = array(
'id' => (string)$attributes['id'],
'price' => (string)$xmlOffer->price,
'name' => (string)$xmlOffer->name,
);

}
}

unset($xml);//Переменная $xml больше не нужна, освободим память

echo "<table>".implode(PHP_EOL, $res)."</table>";

PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
apdate  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




если можно подробно распишите коменты что бы я понял как все это работает спасибо!
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
apdate  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




хм...
получилось вывести данные

друзья скажите правильно ли таким образом получать данные не бует ли проблем?
вот код


$xml = simplexml_load_file($path );
foreach($xml->shop as $item)
{
echo $item->url, ";";
echo $item->name, "\n";
}

foreach($xml->shop->offers->offer as $item)
{
echo $item->url, ";";
echo $item->name, "\n";
echo $item->price, "\n";
echo $item->compare_price, "\n";
}

PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
jetistyum  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 2605
Пользователь №: 5568
На форуме: 8 лет, 5 месяцев, 2 дня
Карма: 30




1. если работает - правильно, если не работает - не правильно smile.gif
2. Проблемы ? см п.1
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
apdate  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




работает

вывожу в таблицу вроде все ок

а какого рода проблемы в п.1 ?


<?php
header('Content-type: text/html; charset=utf-8');
$path = 'http://адрес магазина/xml.php';
if (!$xml = simplexml_load_file($path)){
//$path может быть локальный или удаленный (с html://)
die('Ошибка!!! Не удалось получить XML файл');
}

//$attributes = $xml->attributes();//получаем массив атрибутов корневого узла
//$res = array(
// 'date' => (string)$attributes['date'],//все узлы и данные
// // хранятся как объекты класса SimpleXMLElement,
// //принудительно преобразуем в строку (string)
// 'name' => (string)$xml->shop->company,
// 'offers' => array(),
//);
//foreach ($xml->shop->offers->offer as $xmlOffer){
// $attributes = $xmlOffer->attributes();//аналогично получаем
// // массив атрибутов предложений
// if ((string)$attributes['available']=='true'){
// $res['offers'][] = array(
// 'id' => (string)$attributes['id'],
// 'price' => (string)$xmlOffer->price,
// 'name' => (string)$xmlOffer->name,
// );
// }
//}

unset($xml);//Переменная $xml больше не нужна, освободим память

$xml = simplexml_load_file($path );
foreach($xml->shop as $item)
{
echo $item->url, ";";
echo $item->name, "\n\r";
}
echo "<table align='center' border='1'>
<tr><th>Наименование товара</th>
<th>Цена товара </th>
<th>Цена товара старя </th>
<th>урл</th>
</tr>"
;
foreach($xml->shop->offers->offer as $item)
{
//echo $item->url, ";";
//echo $item->name, "\n\r";
//echo $item->price, "\n\r";
//echo $item->compare_price, "\n\r";



echo "<tr><td>".$item->name."</td>
<td>"
.$item->price."</td>
<td>"
.$item->compare_price."</td>
<td>"
.$item->url."</td>";


}
echo "</tr></table>
"
;
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
apdate  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




возник один вопрос )

<offers>
<
offer id="78" available="true">//как получить это значение используя код что выше?
<url>http://ag.apdate.ru/products/chempionchampion</url>
<price>50</price>
<
compare_price>1.97</compare_price>
<
name>Чемпион/Champion/25*2</name>
</
offer>
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
apdate  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 299
Пользователь №: 40396
На форуме: 2 года, 1 месяц, 26 дней
Карма: -2




уже не надо сам справился!
здесь вообще кто то бывает?
такое чувство что форум вообще пустой (
на мисте как не задашь вопрос так куча собеседников а здесь день прошел а толку как не было так и нет ( печальный форум (
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
AllesKlar  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3378
Пользователь №: 38635
На форуме: 2 года, 11 месяцев, 14 дней
Карма: 170




apdate
Прости, что мы были на работе и вместо работы не читали форум.


--------------------
[продано копирайтерам]
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса