2013-08-22 50 views
1

所以,我真的很喜歡用PHP編碼,而我目前正在對數據庫進行操作。onclick刪除文件和MySQL

我想我可能還需要學習一些AJAX,但在跳到另一種語言之前我會問你們。

好吧,我目前正在編寫一個「edit.php」頁面來編輯項目的細節。該項目可以附加幾個圖像文件,並且它們都鏈接在一起並工作。

在這些文件中的每一個上,我都有一個刪除按鈕,以便用戶能夠刪除已上傳的文件(並從數據庫中刪除條目)。

現在,我的代碼只能讀取並顯示數據庫中的內容,但如果用戶單擊刪除圖標,則沒有反饋給實際刪除圖像。

以下是圖像代碼:

<p> 
    <a href="#" onclick="this.parentNode.parentNode.removeChild(this.parentNode)"><img src="assets/ux/delete_12px.png" width="12px" height="12px" style="margin:0px 5px -2px 0px" /></a> 
    <span style="font-weight:bold">[<span style="color:#36F">Picture</span>]</span>&nbsp; 
    <span style="color:#666"><?=$rowImgFile['fileURL']?></span> 
</p> 

所以,當你打到現在刪除圖標,圖像將被視覺上消失了。我也需要在服務器上刪除它。

我知道如何使用php和mysqli來做到這一點,但我該如何在函數內部做到這一點?什麼是最好的方法來做到這一點?

我在另一個頁面看到,刪除圖標的onclick函數正在觸發頁面刷新,將?deletepicture =「picture」添加到URL中。這是做這件事的最好方法嗎? (我不希望頁面刷新刪除圖像時,我只是想執行我的PHP代碼和mysqli代碼,並將其拿走=)

在此先感謝!

回答

2

我想我可能還需要學習一些AJAX,但在跳到另一種語言之前,我會問你們 。

AJAX是協議,而不是語言(yep)。該語言被稱爲「JavaScript」,並且您已經在使用它:這只是幾行代碼的問題。


(我不希望頁面刪除圖像時刷新 。我只是想執行我的PHP代碼和mysqli的 代碼,並把它掉=)

如果你想爲了防止頁面重新加載,您可以在新窗口中打開刪除請求(這太可怕了),或者學習編寫AJAX請求。在你的情況下,它會是類似的東西。

更換

onclick="this.parentNode.parentNode.removeChild(this.parentNode)" 

onclick="deleteImage(this)" 

,並把這個JS在你的頁面的任何地方(我假設你有jQuery的在內)。

<script> 
function deleteImage(domEl){ 
domEl.parentNode.parentNode.removeChild(domEl.parentNode); 
var imageNumber = "-- retrieve here the image identifier you'll need in the PHP page"; 
$.post("/yourServer/deleteImage.php", imageNumber); 
} 
</script> 

使用此腳本,您可以調用對PHP文件的操作,而無需重新加載整個HTML頁面。請注意,爲了從mysqli數據庫中刪除圖像,您可能需要此圖像的唯一標識符。既然你沒有問過,我想你已經知道如何在javascript中獲得它。我還假設您已經知道如何編碼文件deleteImage.php以從$_POST$_GET中檢索圖像標識符後從數據庫中刪除數據。

我該如何使用POST函數發送2個變量?專案編號和 IMAGEURL

$.post("url", {projectID : "123", imageURL: "234"}); 

{}是標準的js對象的文字符號。所以這個語法也是有效的。

var args = {}; 
args.projectID = "123"; 
args.imageURL = "234"; 
$.post("url", args); 
+0

謝謝。我知道如何做delete.php文件的一部分,所以這一切都很好。 =)我看到你使用.POST();.這與之間的區別是什麼,並且做了整個xmlhttp = new XMLHttpRequest(); xmlhttp.open( 「POST」, 「?deleteContent.php項目= '+專案編號+' &文件= '+的contentURL +'」,真);碼? –

+0

這是一個普通的js:它將需要大約15/20行的代碼,它會看起來很醜,並且會遭遇兼容性問題。我發佈的代碼使用jQuery:只是一個簡單的代碼行,沒有跨瀏覽器問題。隨意選擇:在這兩種情況下你都會發現大量的例子。 – Saturnix

+0

不錯。謝謝:) 我將如何發送2個變量與該POST功能? projectID和imageURL –