Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добраться до нужной строки в XML, Нужно записывать данные в 3 строку 
:(
    Опции темы
Alexblbl
Дата 7.9.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Скажу сразу я новичок в php, а если быть точнее то вчера стала проблема админ части на php. Необходимо что то записывать на сервер. В общем с перезаписью файлов путем fputs и w я разобрался там всё просто. 

Но вот нужно Дописывать новости в определенную строку, постоянно то есть есть xml:
Код

<?xml version="1.0" encoding="utf-8"?>
 <news>
   <item>
     <title>Новые поступления</title>
     <text>
     This program is free software;
     </text>
     <date>13:30 - 12.08.2004</date>
   </item>
   <item>
     <title>ATATA поступления</title>
     <text>
     asdsad sad as dsa asd asdsa as das
     </text>
     <date>11:30 - 12.08.2004</date>
   </item>
   <item>
     <title>ERERER поступления</title>
     <text>
     p pppppppppppppppp p p pp  p pppppppppppppppppp pppppppppppppppppppppp
     </text>
     <date>18:30 - 12.08.2004</date>
   </item>
 </news>


Тут вообще всё очень просто! Нужно всего лишь, после строки <news> дописывать новый <item>...</item> и всё. Как это сделать ?

<item> я генерирую этой функцией:
Код

$file = fopen("news.xml","r+");
    if(!$file)
    {
      echo("Ошибка открытия файла");
    }
    else
    {
        $text1 = "$text";
        $title = "$h1";
        $date = "$dates";

        $all = '<?xml version="1.0" encoding="utf-8"?><news><item><title>'.$title.'</title><text>'.$text1.'</text><date>'.$date.'</date></item>';
        $buff = fputs ($file, $all);
        print $buff;


Помогите пожалуйста!
PM MAIL   Вверх
CruorVult
Дата 7.9.2011, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Выбирайте любой удобный для вас метод парсинга XML
http://www.php.net/manual/en/refs.xml.php
PM MAIL Skype   Вверх
Alexblbl
Дата 7.9.2011, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(CruorVult @ 7.9.2011,  13:24)
Выбирайте любой удобный для вас метод парсинга XML
http://www.php.net/manual/en/refs.xml.php

Я вчера начал "учить" php.

Можно обойтись без парсинга?

Эмм дело в том, что я встречал такую функцию как fseek может быть есть функция, которая работает точно также, только не заменяя символы?
PM MAIL   Вверх
CruorVult
Дата 7.9.2011, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Без парсинга тут никак. Вам нужно вставить item внутри news. Если делать это вручную - то довольно напряжно, лучше использовать готовые методы работы с XML.
PM MAIL Skype   Вверх
Alexblbl
Дата 7.9.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(CruorVult @ 7.9.2011,  14:21)
Без парсинга тут никак. Вам нужно вставить item внутри news. Если делать это вручную - то довольно напряжно, лучше использовать готовые методы работы с XML.

Ок. Тогда можете подкинуть примерчик пожалуйста? Что бы было понятно хоть немного .... пожалуйста
PM MAIL   Вверх
CruorVult
Дата 7.9.2011, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Код

$doc = new DOMDocument();
$doc->load($xml);

$item = $doc->createElement('item');
$news = $doc>getElementsByTagName('news')->item(0);
$news->appendChild($item);
$doc->save($xml);


Это сообщение отредактировал(а) CruorVult - 8.9.2011, 09:42
PM MAIL Skype   Вверх
Alexblbl
Дата 8.9.2011, 10:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(CruorVult @ 7.9.2011,  15:51)
Код

$doc = new DOMDocument();
$doc->load($xml);

$item = $doc->createElement('item');
$news = $doc>getElementsByTagName('news')->item(0);
$news->appendChild($item);
$doc->save($xml);

Спасибо.

Но я нашел решение, как и говорил без парсера. Гораздо удобнее для таких задач.

Вот пример если кому надо:
Код

        $file = fopen("../news.xml","r");
    fseek($file, 47, SEEK_SET);
    $other = fread($file, 900000);
    fseek($file, 0, SEEK_SET);
    $prev = fread($file, 47);
    fclose($file);
    $file = fopen("../news.xml","w");

...

        $text1 = "$text";
    $title = "$h1";
    $date = "$dates";
    echo $other;
    $all = $prev.'<item><title>'.$title.'</title><text>'.$text1.'</text><date>'.$date.'</date></item>'.$other;
    $buff = fputs ($file, $all);
    print $buff;



PM MAIL   Вверх
CruorVult
Дата 8.9.2011, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 868
Регистрация: 24.9.2008
Где: г.Киев, Украина

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



Alexblbl, это не совсем хорошое решение. Вдруг кто-то вручную изменит файл, поставит ентер вначале, тогда ваш код станет не валидным и прийдется переписывать, выставлять другое смещение.
PM MAIL Skype   Вверх
Alexblbl
Дата 8.9.2011, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(CruorVult @ 8.9.2011,  11:46)
Alexblbl, это не совсем хорошое решение. Вдруг кто-то вручную изменит файл, поставит ентер вначале, тогда ваш код станет не валидным и прийдется переписывать, выставлять другое смещение.

Согласен, но:

Это был заказ на админ часть на сайте. 

За рулем будет сидеть блондинко. 

Так, что вероятность изменений XML маловероятны.
PM MAIL   Вверх
MoLeX
Дата 9.9.2011, 05:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



ох зря ты так. зайдет одним темным вечерком сисадмин и подправит что-нибудь в xml'ке и все

Добавлено через 22 секунды



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Alexblbl
Дата 9.9.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(MoLeX @ 9.9.2011,  05:49)
ох зря ты так. зайдет одним темным вечерком сисадмин и подправит что-нибудь в xml'ке и все

Добавлено @ 05:49

Какой то страшный темный Админ ))) И кстати сегодня сдавали проект - блондинка ликовала "Как всё просто только одна кнопочка и всё так удобно!". Так что результат на лицо! 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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