【发布时间】:2023-03-23 11:46:01
【问题描述】:
我有一个 HTML 表单,它在提交时调用 PHP 文档post_remove.php。 post_remove.php 检查隐藏的输入值 value="pst_09-12-2014_07:20:11pm"> 以找到与data.xml 匹配的id 属性 以被删除。 id="pst_01-01-2014_05:00:00pm"
我正在使用表单值进行比较。 $check = $_POST["validate"] ;
我尝试了许多替代方法,例如没有运气的循环,并且还觉得它们是不必要的,因为我只想删除 一个 元素。我似乎无法删除任何元素。
我的 HTML 表单blog_home.html:
<div class="blog_wrap">
<p>01-01-2014</p>
<p>05:00:00pm</p>
<h1>My first Blog</h1>
<p>Welcome to my Blog!</p>
<form method="post" action="post_remove.html">
<input type="hidden" name="validate" value="pst_01-01-2014_05:00:00pm">
<input type="submit" name="closer">
</form>
</div>
我的XML文档data.xml:
<?xml version="1.0" encoding="UTF-8"?>
<blog>
<posting id="pst_01-01-2014_05:00:00pm">
<date>01-01-2014</date>
<time>05:00:00pm</time>
<title>My first Blog</title>
<content>Welcome to my Blog!</content>
</posting>
<posting id="pst_02-02-2014_06:00:00pm">
<date>02-02-2014</date>
<time>06:00:00pm</time>
<title>My Second Blog</title>
<content>Welcome to my Blog!</content>
</posting>
</blog>
我的PHP文档post_remove.php:
<?php
if ( isset( $_POST["closer"] ) )
{
$check = $_POST["validate"] ;
$doc = new DOMDocument() ;
$doc -> load( "data.xml" ) ;
$posting = $doc -> getElementById( $check ) ;// Suspected fault.
$doc -> removeChild( $posting ) ;
$doc -> save( "data.xml" ) ;
header( "Location: blog_home.html" ) ;
}
?>
【问题讨论】:
-
旁注:您的操作显示
action="post_remove.html",但您的文件是post_remove.php- 它应该是action="post_remove.php" -
@Fred -ii-oops 转移错误。
-
为什么在删除节点的上方有一个标头重定向?您删除节点,然后在完成后重定向
-
@Ghost 我想知道这一点。谢谢你的提示。我真的觉得它应该放在第一位。
-
@Xavier 实际上我试图回答你的问题,但也失败了,但我发现你不能在 XMLs 上使用
getElementById,这里有一个 reading 关于它,如果它是,唯一提出的解决方案是通过 XPath