Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удалить запись...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
android
Отправлено: 16 Ноября, 2011 - 18:03:04
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Привет, есть файл test.xml в нем есть данные:
PHP:
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <testimonials>
  3.         <test id="1">
  4.                 <name>test1</name>
  5.                 <content>1</content>
  6.                 <tid>1</tid>
  7.         </test>
  8.         <test id="2">
  9.                 <name>test2</name>
  10.                 <content>2</content>
  11.                 <tid>2</tid>
  12.         </test>
  13. </testimonials>


Нужно удалить запись с ID 1 (число может быть разное в зависимости сколько материала в файле) Результат должен быть таким:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <testimonials>
  4.         <test id="2">
  5.                 <name>test2</name>
  6.                 <content>2</content>
  7.                 <tid>2</tid>
  8.         </test>
  9. </testimonials>
  10.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 16 Ноября, 2011 - 18:49:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




android и что, совсем никаких собственных мыслей?
(Добавление)
Нашкодил шутки ради вот такой кувалдОметр:
PHP:
скопировать код в буфер обмена
  1. $rem = "\t<test id=\"1\">\n";
  2. $rem .= "\t\t<name>test1</name>\n";
  3. $rem .= "\t\t<content>1</content>\n";
  4. $rem .= "\t\t<tid>1</tid>\n";
  5. $rem .= "\t</test>\n";
  6. $xml = file_get_contents("path/do/file.xml");
  7. $xml = str_replace($rem,"",$xml);
  8. file_put_contents("path/do/file.xml",$xml);

Только ради бога не говорите что это решение вам подошло..
В противном случае я обижусь на весь окружающий мир...
 
 Top
android
Отправлено: 16 Ноября, 2011 - 21:29:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Вы меня полностью правильно поняли.

Но понимаете у меня сделаны коментарии считайте стена коментов в файле xml.

И для админа нужно сделать удаление.

Коментарии у меня вот так выводятся:

PHP:
скопировать код в буфер обмена
  1.         $xml = simplexml_load_file($file);
  2.         foreach($xml->user as $a) {
  3.                 $i++;
  4.                 echo '
  5.                 <tr>
  6.                 <td>'.$i.'</td>
  7.                 <td>'.$a->dat.'</td>
  8.                 <td>'.$a->name.'</td>
  9.                 <td>'.$a->content.'</td>
  10.                 </tr>
  11.                 ';
  12.         }
  13.  

и получается когда я делаю скрипт внутри цикла то сносе материалы пользователя.
(Добавление)
Можете сделать удаление по ID и имени?

Цитата:
<?xml version="1.0" encoding="UTF-8"?>
<testimonials>
<test id="1">
<name>test1</name>
<content>1</content>
<tid>1</tid>
</test>
<test id="2">
<name>test2</name>
<content>2</content>
<tid>2</tid>
</test>
</testimonials>
 
 Top
android
Отправлено: 19 Ноября, 2011 - 13:02:09
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




ап
 
 Top
Bio man
Отправлено: 19 Ноября, 2011 - 15:03:17
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




android пишет:
Можете сделать удаление по ID и имени?

Цитата:
PHP:
скопировать код в буфер обмена
  1.     $rem = "\t<test id=\"$id\">\n";
  2.     $rem .= "\t\t<name>$name</name>\n";
  3.     $rem .= "\t\t<content>$id</content>\n";
  4.     $rem .= "\t\t<tid>$id</tid>\n";
  5.     $rem .= "\t</test>\n";
  6.     $xml = file_get_contents("path/do/file.xml");
  7.     $xml = str_replace($rem,"",$xml);
  8.     file_put_contents("path/do/file.xml",$xml);
 
 Top
android
Отправлено: 19 Ноября, 2011 - 19:04:43
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




боже я же не такой глупый что бы не подставить $id

Прочитайте 3 пост
 
 Top
snikers987
Отправлено: 19 Ноября, 2011 - 19:09:50
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




android пишет:
и получается когда я делаю скрипт внутри цикла то сносе материалы пользователя.


Зачем цикл, если удаляется одна запись? Или я чего не догоняю?

может имеет смыл добавить что-то типа <comment id="1"> ?

(Отредактировано автором: 19 Ноября, 2011 - 19:11:12)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Bio man
Отправлено: 19 Ноября, 2011 - 19:15:37
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




android, и не такой глупый, что бы правильно задать вопрос? так задайте его понятней
android пишет:
Можете сделать удаление по ID и имени?
на последний вопрос вам ответили и на первый тоже, что же вам еще надо?
 
 Top
android
Отправлено: 19 Ноября, 2011 - 21:05:29
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Bio man

PHP:
скопировать код в буфер обмена
  1.  $rem = "\t<test id=\"$id\">\n";
  2.     $rem .= "\t\t<name>$name</name>\n";
  3.     $rem .= "\t\t<content>$id</content>\n";
  4.     $rem .= "\t\t<tid>$id</tid>\n";
  5.     $rem .= "\t</test>\n";
  6.     $xml = file_get_contents("path/do/file.xml");
  7.     $xml = str_replace($rem,"",$xml);
  8.     file_put_contents("path/do/file.xml",$xml);


НЕ РАБОТАЕТ
Так понятнее?

snikers987

PHP:
скопировать код в буфер обмена
  1.  $xml = simplexml_load_file($file);
  2.         foreach($xml->user as $a) {
  3.                 $i++;
  4.                 echo '
  5.                <tr>
  6.                <td>'.$i.'</td>
  7.                <td>'.$a->dat.'</td>
  8.                <td>'.$a->name.'</td>
  9.                <td>'.$a->content.'</td>
  10.                </tr>
  11.                ';
  12.         }

Это вывод на страницу комментариев. Я это дал для информации что бы было видно состав файла xml и скрипт вывода.
 
 Top
snikers987
Отправлено: 19 Ноября, 2011 - 21:59:33
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




android пишет:
Это вывод на страницу комментариев.


android пишет:
и получается когда я делаю скрипт внутри цикла то сносе материалы пользователя.


Тогда я вообще нифига не понимаю..зачем удаление делать в цикле?


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
android
Отправлено: 19 Ноября, 2011 - 22:33:47
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




блин, тогда скажите как вы будете удалять? т.е выносить инфу с цикла!?!?!
 
 Top
snikers987
Отправлено: 20 Ноября, 2011 - 00:57:14
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. function removePost($id){
  3.         $doc = new DOMDocument;
  4.         $doc->load('test.xml');
  5.         $thedocument = $doc->documentElement;
  6.         $list = $thedocument->getElementsByTagName('test');
  7.         $nodeToRemove = null;
  8.         foreach ($list as $domElement){
  9.                 $attrValue = $domElement->getAttribute('id');
  10.                 if ($attrValue == $id) {
  11.                         $nodeToRemove = $domElement;
  12.                 }
  13.         }
  14.         if ($nodeToRemove != null){
  15.                 $thedocument->removeChild($nodeToRemove);
  16.         }
  17.         $doc->save("test.xml");
  18. }
  19.  
  20.  
  21.  

как-то так, передаеш в функцию аргумент $id == id удаляемой записи

(Отредактировано автором: 20 Ноября, 2011 - 00:57:37)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Panoptik
Отправлено: 20 Ноября, 2011 - 01:09:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




основной принцип удаления таких данных это перебирать все записи и складывать ТЕ, КОТОРЫЕ НУЖНЫ в одну кучку (переменную), а ТЕ, КОТОРЫЕ НУЖНО УДАЛИТЬ - ИГНОРИМ. После создаем файл на основании ПЕРВОЙ кучки. Чего вам еще не понятно?


-----
Just do it
 
 Top
android
Отправлено: 20 Ноября, 2011 - 12:04:42
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




snikers987, спасибо все работает!

Если не сложно можешь переделать функцию на редактирование поля name в файле?

Т.е мы не удаляем а редактируем поле name у того ид который введем
 
 Top
snikers987
Отправлено: 20 Ноября, 2011 - 14:06:04
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




android пишет:
И для админа нужно сделать удаление.


Сделали, нужно больше скайп в профиле, за отдельную плату разумеется.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB