我有两个具有相同逻辑的 php 文档。一个文档是“uploader.php”,一旦文件上传就写入 xml。另一个文档是“modifier.php”,一旦文件被删除,它就会写入 xml。我对这个逻辑有两个问题。第一个问题是删除 xml 列表中的最后一项。它不会删除最后一项,并且还会复制倒数第二项。第二个问题是它在我的“uploader.php”上记录了一个错误。
$xml_generator = simplexml_load_file("../file.xml");
if ( $handle = opendir( $path_to_image_dir ) )
{
while (false !== ($file = readdir($handle)))
{
if ( is_file($path.'/'.$file) && $file != "." && $file != ".." && $file != "Thumb.db" && $file != "Thumbs.db" && $file != ".DS_Store" )
{
$fileID = $i++;
list( $width, $height ) = getimagesize($path.'/'.$file);
$oldImage = $xml_generator->xpath('//images/image[id="'.$fileID.'"]')[0];
if (!isset($oldImage))
{
$image = $xml_generator->addChild('image');
$image->addChild('id', $fileID);
$image->addChild('name', $file);
$image->addChild('width', $width);
$image->addChild('height', $height);
$image->addChild('description', '-');
}
else
{
$oldImage->name = $file;
$oldImage->width = $width;
$oldImage->height = $height;
}
}
}
closedir($handle);
}
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml_generator->asXML());
echo $dom->save('../file.xml');
第一个问题的例子
Image2.jpg 是列表中的最后一项。如果我要删除 Image2.jpg,倒数第二个项目会被复制,而 Image2.jpg 仍保留在 XML 文档中。
<image>
<id>9</id>
<name>Image1.jpg</name>
<width>2551</width>
<height>1435</height>
<description>-</description>
</image>
<image>
<id>10</id>
<name>Image1.jpg</name>
<width>2551</width>
<height>1435</height>
<description>-</description>
</image>
<image>
<id>11</id>
<name>Images2.jpg</name>
<width>612</width>
<height>612</height>
<description>-</description>
</image>
第二个问题是错误消息。
Undefined offset: 0 in uploader.php on line $oldImage = $xml_generator->xpath('//images/image[id="'.$fileID.'"]')[0];
我认为这两个问题都与同一个问题有关,请帮我解决这个问题。谢谢!
删除代码- 此代码可以删除列表中除最后一项之外的任何项目。
if(isset($_POST['delete'])){
foreach($_POST['file'] as $file) {
if(isset($file)) {
if (unlink($path."/".$file)) {
echo "Delete the file: $file<br />";
if (!empty($_SERVER['HTTP_REFERER'])){
header("Location: " . $_SERVER['HTTP_REFERER']);
} else {
echo "No referrer.";
}
} else {
echo "Didn't manage to delete the file: $file<br />";
}
}
}
// very top code goes here.
}