誰か助けてくれませんか。
ユーザーがアップロードした画像のギャラリーを表示できるこのページをまとめました。
最初のアップロード時に、物理イメージは次のファイル構造に保存されます。
UploadedFiles/userid/locationid/image
イメージの詳細、つまり説明などはfiles.xml
、物理イメージと同じディレクトリにある xml ファイルに保存されます。
現在、ユーザーがこれらの画像を削除できるように取り組んでいます。
各画像の下にある削除アイコンを使用して、確かに助けを借りて、物理的な画像を正常に削除する以下をまとめました。
「削除アイコン Onclick イベント」
<script type="text/javascript">
Galleria.ready(function() {
this.$('thumblink').click();
$(".galleria-image").append(
"<span class='btn-delete ui-icon ui-icon-trash'></span>");
$(".btn-delete").live("click", function(){
var img = $(this).closest(".galleria-image").find("img");
// send the AJAX request
$.ajax({
url : 'delete.php',
type : 'post',
data : { image : img.attr('src') },
success : function(){
alert('Deleting image... ');
img.parent().fadeOut('slow');
}
});
return false;
});
});
</script>
元の「delete.php」
<?php
if (!empty($_POST)) {
$image = $_POST['image'];
if (file_exists($image)) {
unlink($image);
}
}
?>
「delete.php」を更新しました
<?php
if (!empty($_POST)) {
$image = $_POST['image'];
if (file_exists($image)) {
unlink($image);
}
}
$doc = new DOMDocument;
$doc->load('files.xml');
$thedocument = $doc->documentElement;
$list = $thedocument->getElementsByTagName('files');
$nodeToRemove = null;
foreach ($list as $domElement){
$attrValue = $domElement->getAttribute('file_name');
if ($attrValue == 'image') {
$nodeToRemove = $domElement;
}
}
if ($nodeToRemove != null)
$thedocument->removeChild($nodeToRemove);
echo $doc->saveXML();
?>
私が抱えている問題は、xmlファイルからxmlノードを削除することです。以下に XML ファイルの抜粋を示します。
<?xml version="1.0" encoding="utf-8" ?>
- <files>
<file name="stag.jpg" source="stag.jpg" size="21341" originalname="stag.jpg" description="No description provided" userid="1" locationid="1" />
</files>
私はこれをどのように行うかについてかなりの調査を行い、jQueryには独自のコマンドがあることがわかりました。つまりjQuery.remove
、ノードを削除できると思いました。簡単なチュートリアルに従って、「Onclick Event」スクリプトの最後に以下を追加しました。
var doc = $(files.xml);
doc.find('file_name:src').remove();
残念ながら、特定のエラーは表示されませんが、ノードはファイルから削除されません。私は XML に関してはまったくの初心者なので、単純化しすぎているのかもしれません。
誰かがこれを見て、どこが間違っているのか教えてください。
多くの感謝と敬意