Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод на сайте каталога из xml документа
 
 автор: Dizels   (05.03.2010 в 14:56)   письмо автору
 
 

Здравствуйте.
1) Есть сайт и на нем нужно выводить каталог продукции (все довольно стандартно - цена, описание, фотография и т.д.).
2) Есть xml-файл в котором содержится вся эта информация. Сам файл находится на другом сервере, все пароли и логины, которые необходимы - есть.

Собственно вопрос:
Что именно нужно делать, чтобы выводить данный каталог?

Как я понял - нужно задать частоту парсинга (к примеру парсить новые данные раз в неделю), сделать таблицу где хранить эти данные и уже из таблицы их выводить. Я правильно все понял?

P.S. прошу отнестись с пониманием - такая задача передо мной впервые.

И собственно - если саму суть я понял правильно, то прошу накидать сюда линков с материалом по теме - как все это реализовать.
Если еще практическими примерами поможете - то вообще будет супер.

  Ответить  
 
 автор: Dizels   (05.03.2010 в 19:06)   письмо автору
 
   для: Dizels   (05.03.2010 в 14:56)
 

Прошу помочь с моим вопросом.

  Ответить  
 
 автор: Dizels   (05.03.2010 в 19:29)   письмо автору
 
   для: Dizels   (05.03.2010 в 19:06)
 

Пока, единственное что нашел - это вот такой код:
<?php
function startElement($parser$name$attrs// $parser - уникальный идентификатор парсера
//     (т.к. мы можем использовать несколько парсеров)
// $name - имя обнаруженного элемента
// $attrs - массив атрибутов обнаруженного элемента
{
    global 
$depth;

    echo 
str_repeat("&nbsp;"$depth 3); // отступы
    
echo "<b>Element: $name</b><br>"// имя элемента

    
$depth++; // увеличиваем глубину, чтобы браузер показал отступы

    
foreach ($attrs as $attr => $value)
    {
        echo 
str_repeat("&nbsp;"$depth 3); // отступы
        // выводим имя атрибута и его значение
        
echo 'Attribute: ' $attr ' = ' $value '<br>';
    }
}

function 
endElement($parser$name)// $parser - уникальный идентификатор парсера
// $name - имя обнаруженного элемента
{
    global 
$depth;

    
$depth--; // уменьшаем глубину
}
function 
stringElement($parser$str) {
    if (
strlen(trim($str)) > 0) {
        global 
$depth;
           
        echo 
str_repeat("&nbsp;"$depth 3); // отступ
        
echo 'String: '.$str.'<br>'// выводим строку
    
}
}

$depth 0;
$file "name.xml"

$xml_parser xml_parser_create();

xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser'stringElement');

if (!(
$fp fopen($file"r")))
{
    die(
"could not open XML input");
}

while (
$data fgets($fp))
{
    if (!
xml_parse($xml_parser$datafeof($fp)))
    {
        echo 
"<br>XML Error: ";
        echo 
xml_error_string(xml_get_error_code($xml_parser));
        echo 
" at line " xml_get_current_line_number($xml_parser);
        break;
    }
}

xml_parser_free($xml_parser);
?>

Файл считывается. Но вот что дальше делать - никак не пойму. (Я саму теорию решения поставленной задачи (см. первое сообщение) понять не могу - что к чему и какова последовательность)/

  Ответить  
 
 автор: vadimka   (05.03.2010 в 22:49)   письмо автору
 
   для: Dizels   (05.03.2010 в 19:29)
 

А зачем хранить в базе? Вы можете выводить прямо из xml-файла, Соответственно информация будет изменяться вместе с данными из файла.

  Ответить  
 
 автор: buldovsky   (06.03.2010 в 14:56)   письмо автору
 
   для: vadimka   (05.03.2010 в 22:49)
 

Зачем постоянно перезапрашивать чужой сервер? А если он временно недоступен? Читать из XML это лишние телодвижения. Каталог продукции меняется не так часто, чтобы поддерживать его актуальность такой ценой.

для: Dizels (05.03.2010 в 14:56)

Вы рассуждаете правильно. Создавайте таблицу и перезаписывайте ее каждый раз новой информацией из файла XML. Частоту обновления таблицы выбирайте в зависимости от частоты изменения самого каталога. И сохраняйте дату последнего обновления таблицы (при выводе можно указывать от какой даты этот каталог).

  Ответить  
 
 автор: Лена   (06.03.2010 в 00:47)   письмо автору
 
   для: Dizels   (05.03.2010 в 14:56)
 

Вот это посмотрите - http://softtime.ru/forum/read.php?id_forum=6&id_theme=67587. Там разные способы, может, Вам хотя бы принцип подойдет.

>Как я понял - нужно задать частоту парсинга
Скрипт повесить на крон.

Вам надо или парсить и сразу же внутри функции startElement складывать в базу, или то, что напарсили, складывать в массив, а потом уже после парсинга складывать все в базу.

>P.S. прошу отнестись с пониманием - такая задача передо мной впервые.
Ну все когда-нибудь тянут что-то чужое... Все равно воровать - некрасиво.

  Ответить  
 
 автор: Trianon   (06.03.2010 в 00:55)   письмо автору
 
   для: Лена   (06.03.2010 в 00:47)
 

>Ну все когда-нибудь тянут что-то чужое... Все равно воровать - некрасиво.

Автор утверждает, что права доступа у него наличествуют.

  Ответить  
 
 автор: Trianon   (06.03.2010 в 00:53)   письмо автору
 
   для: Dizels   (05.03.2010 в 14:56)
 

>Как я понял - нужно задать частоту парсинга (к примеру парсить новые данные раз в неделю),

Было бы неплохо, чтобы вещи назывались своими именами.
В частности, парсинг - это синтаксический анализ. И не более того.

  Ответить  
 
 автор: buldovsky   (06.03.2010 в 14:45)   письмо автору
 
   для: Trianon   (06.03.2010 в 00:53)
 

Было бы еще лучше, если бы на этом форуме суть ответов соответствовала сути вопроса, а не его формулировке.

  Ответить  
 
 автор: Dizels   (09.03.2010 в 09:22)   письмо автору
 
   для: buldovsky   (06.03.2010 в 14:45)
 

По поводу "парсинга" - извините, Trianon - прав, я не сильно пока владею всеми этими определениями и формулировками, поэтому могу что-то напутать.

По поводу воровства - полная чушь - я написал, что имеется доступ. Поэтому я НИЧЕГО НЕ ВОРУЮ.

За ссылки и подсказки большое спасибо, сегодня буду разбираться.

  Ответить  
 
 автор: Dizels   (09.03.2010 в 13:36)   письмо автору
 
   для: Dizels   (09.03.2010 в 09:22)
 

В приведенном выше коде - проблема с кодировкой - отображаются кракозяблики, как это поправить?
сам xml документ в кодировке windows-1251

  Ответить  
 
 автор: Dizels   (09.03.2010 в 14:15)   письмо автору
 
   для: Dizels   (09.03.2010 в 13:36)
 

Все еще не решена проблема с кодировкой.
Попробовал вот так:
echo '<h3>' , iconv("windows-1251", "UTF-8", $tov_name) , '</h3>';

Но почему-то не переводит :(

  Ответить  
 
 автор: Dizels   (09.03.2010 в 14:19)   письмо автору
 
   для: Dizels   (09.03.2010 в 14:15)
 

Проблема решена, на всякий случай для тех у кого возникла такая жеп роблема, нужно писать не:
iconv("windows-1251", "UTF-8", $tov_name)

a
iconv("UTF-8", "windows-1251", $tov_name) 

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования