是否有一种简单的方法可以修改以下php脚本以包含删除按钮 - 因此对于循环中的每个项目,当前有一个按钮来提交更改,我想添加一个按钮,只需删除元素及其孩子。
我是PHP新手,所以只是想了解如何将它与XML结合使用 - 非常感谢任何帮助。
这是php
<?php
if(isset($_GET['e'])){ //If a date is submitted, edit it
//var_dump($_GET);die;
//Load the scores XML file
$scores = new DOMDocument();
$scores -> load('content.xml');
//Get the <Games> tag
$games = $scores -> getElementsByTagName('brand');
//Loop through each found game
foreach ($games as $game) {
$child = $game->getElementsByTagName("id")->item(0);
$oldTitle = $game->getElementsByTagName("title")->item(0);
$oldScore = $game->getElementsByTagName("schedule_date")->item(0);
$oldRow = $game->getElementsByTagName("image")->item(0);
$id = $child->nodeValue;
if($id==$_GET['e']){ //The date is the date asked for.
$game -> replaceChild($scores -> createElement("title", $_GET['title']),$oldTitle);
$game -> replaceChild($scores -> createElement("schedule_date", $_GET['schedule_date']),$oldScore);
$game -> replaceChild($scores -> createElement("image", $_GET['image']),$oldRow);
}
}
//Save again
$scores -> save('content.xml');
}
?>
<hr>
<?php
//Load the scores XML file
$scores = new DOMDocument();
$scores -> load('content.xml');
//Get the <Games> tag
$games = $scores -> getElementsByTagName('brand');
//Loop through each game
foreach ($games as $game) {
//Print each with an edit link.
$id = $game->getElementsByTagName("id")->item(0)->nodeValue;
$title = $game->getElementsByTagName("title")->item(0)->nodeValue;
$score = $game->getElementsByTagName("schedule_date")->item(0)->nodeValue;
$row = $game->getElementsByTagName("image")->item(0)->nodeValue;
echo '<h3>'.$id . '</h3>
<form method="get" action="">
<input type="hidden" name="e" value="'.$id.'">
Title: <input type="text" value="'.$title.'" name="title"><br>
Score: <input type="text" value="'.$score.'" name="schedule_date"><br>
Row: <input type="text" value="'.$row.'" name="image"><br>
<input type="submit" value="edit">
</form>
<hr>';
}
?>
这是示例xml
<brand>
<title></title>
<schedule_date></schedule_date>
<image></image>
</brand>
答案 0 :(得分:0)
制作表格:
<form method="get" action="">
<input type="hidden" name="e" value="'.$id.'">
Title: <input type="text" value="'.$title.'" name="title"><br>
Score: <input type="text" value="'.$score.'" name="schedule_date"><br>
Row: <input type="text" value="'.$row.'" name="image"><br>
<input type="submit" value="edit">
</form>
<form method="post" action="">
<input type="hidden" name="deleteid" value="'.$id.'">
<input type="submit" name="action" value="delete">
</form>
使用表格:
if(isset($_POST['action']) && $_POST['action']=='delete'){
$scores = new DOMDocument();
$scores -> load('content.xml');
$xpath = new DOMXPath($scores);
//you might want to clean up the $_POST['deleteid'], i don't know what's valid:
$id = preg_replace('/[^a-z0-9]/i','',$_POST['deleteid']);
//Searching nodes in DOM is best handled in xpath (unless getElementById() works)
$search = $xpath->query('//id[.="'.$id.'"]/ancestor::game'); //use '/../' if direct child
if($search->length = 1){ //0 is not found, > 1 is multiple nodes!
$deleteNode = $search->item(0);
//this is the DOM way of deleting an item.
$deleteNode->parentNode->removeChild($deleteNode);
}
$scores->save('content.xml');
}