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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Проблема при чтении xml файла, выделить строку из xml и заменить ее 
:(
    Опции темы
wolfness
Дата 24.9.2009, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задача стоит такая: Прочитать xml файл типа 
Код

<abouts>
<item id="jeans" text="jeans">Строка 1</item>
<item id="tshirt" text="tshirt">Строка 2</item>
</abouts> 

Затем считать данные находящиеся на месте Строка 1 и строка 2 и вывести их в текстовое поле input type=text или textarea затем изменить данные и записать вместо старых.
Делают так :
Код

/*$f = fopen ("../copyright.xml", "r+");

    while (!feof($f))

    {

      //$st = fgets($f);

      //$res = substr($st, strpos($st, ">")+1, -7);

      //echo $st."<br />";

      //echo $res;

      global $per;   

      $per = $st;

    }

    fclose($f);   

   */
if ($_POST['edit_copyright_1'])

{

   echo $per;

}

.....
echo "<form name='copyright' action='' method='POST'>";

echo "<INPUT type='text' name='text_copyright_1' value='".$per."'>";

echo "<INPUT type='submit' name='edit_copyright_1' value='Редактировать'>";

echo "</form>"; 

Но постоянно забивается память. Чушь какая то получается. Если делать все через пост, то вывести значение из строки в форму не получается т.к. это значение не видно.
Как это можно сделать? Может вообще есть ф-ции работы с xml файлами?
PM MAIL   Вверх
Ипатьев
Дата 24.9.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



Что значит "забивается память"?
Что значит "чушь какая-то получается"?
Что значит "это значение не видно"? где не видно? какое значение? При чем здесь POST?

На каком этапе происходит проблема? Не получается считать данные?
Не получается вывести в форму?
Не получается отредактировать?
Не получается принять форму?
Не получается записать XML обратно?

PM MAIL   Вверх
wolfness
Дата 25.9.2009, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пробовал делать так:
Код

    $f = fopen ("../copyright.xml", "r+");

    fseek($f, 10, SEEK_SET);

    $st1 = fgets($f);

    $res1 = substr($st1, stripos($st1, ">")+1, -9); //получаю строку начинающуюся после символа '>' длиной от этого символа до -7 символов до конца строки

    //echo $res1."<br />";

    $st2 = fgets($f);

    $res2 = substr($st2, stripos($st2, ">")+1, -9);

    //echo $res2;

    fclose($f);

if ($_POST['edit_copyright_1'])

{

    $f = fopen ("../copyright.xml", "r+");

    fseek($f, 10, SEEK_SET);

    $stroka = fgets($f);

    $repl = substr($stroka, stripos($stroka, ">")+1, -9);

    $st1 = $_POST['text_copyright_1'];

    $result_1 = str_replace($repl, $st1, $stroka);

    fputs($f, $result_1);

    //fseek($f, 10, SEEK_SET);

    //$stroka = fgets($f);

    //fseek($f, 10, SEEK_SET);

    fclose($f);

}
if ($_POST['edit_copyright_2'])

{

    //$_POST['text_copyright_2'] = $res2; //в текстовое поле записывается значение найденной строки

}
echo "<form name='copyright' action='' method='POST'>";

echo "<INPUT type='text' name='text_copyright_1' value='".$result_1."'>";

echo "<INPUT type='submit' name='edit_copyright_1' value='Редактировать'><br />";

echo "<INPUT type='text' name='text_copyright_2' value='".$res2."'>";

echo "<INPUT type='submit' name='edit_copyright_2' value='Редактировать'>";

echo "</form>";

Записываю в файл во вторую строку "Hellouin town". Она записывается в третью и в итоге получается такое
Код

<abouts>

<item id="firstline" text="">Item 1</item>

<item id="firstline" text="">Hellouin town</item>

ts>

еще и съедается часть символов. А по идее по клику первой кнопки изменяется информация Item 1, по клику второй Item 2 
PM MAIL   Вверх
NewDima
Дата 25.9.2009, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



wolfness, тебе задали конкретные вопросы, ты на них не ответил.
Хочешь, чтобы на твой абсолютно неконкретный вопрос ответили?
PM ICQ   Вверх
wolfness
Дата 25.9.2009, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



отвечаю:
1) Вопрос снял. С памятью решил вопрос.
2) Насчет чуши я выше показал что записывается не в ту строку и еще съедается лишние символы.
3) Со значениями и постом вопрос пока снял. Сделал немного по другому.
4) Как я понимаю проблема возникает на этапе записи замененной подстроки в файл. Замена происходит корректно, а вот запись нет. увы.
5) ,6), 7), 8) не добрался до этих вопросов. хочу сначала понять почему происходит некорректная запись
9) да. xml обратно не записывается как надо.
PM MAIL   Вверх
Ипатьев
Дата 25.9.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



как можно не добраться до этих вопросов, если они решаются ДО записи?

записывать через fseek нельзя. как бы, можно сообразить, что вставленная строка не раздвигает данные, а затирает.
надо заново формировать весь XML
и таки да, лучше воспользоваться встроенными функциями для работы с XML, в РНР их море.

А лучше всего - не работать, по возможности, с этим кривым форматом вообще.
Если есть возможность записывать не обратно в этот же файл, а в базу данных, то так и следует поступить.

PM MAIL   Вверх
NewDima
Дата 25.9.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 922
Регистрация: 20.2.2006
Где: <?here?>

Репутация: -1
Всего: 12



Ипатьев, не работать с xml?
PM ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




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


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

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