2012-07-12 177 views
1

我有2個文件可以幫助我刪除文檔和更新數據庫。 我的第一個文件包含1個表單,一個刪除按鈕和一個名爲remove()的javascript函數。第二個PHP頁面將刪除不返回任何結果的文件。刪除文檔並更新數據庫

代碼Remove.php(在呼喚remove()函數):

$Doc=$_GET['Doc']; //Value get from remove() function 
$ID= intval($_POST['ID']); 
$FirstReport= $_POST['FirstReport']; 
$SecReport = $_POST['SecReport']; 

$FirstReportPath= $_POST['FirstReportPath']; 
$SecReportPath = $_POST['SecReportPath ']; 

$DB = new PDO('sqlite:/database/Student.db'); 
//If i click remove firstreport button, i'll check it to see if it's the same 
if(($Doc) == ($FirstReport)) 
{ 
    $result= $DB->query("Update Student set FirstReport='No' WHERE ID=".$ID);  
//This unlink should remove the document file from the path. 
    unlink($FirstReportPath); 
echo "success"; 
} 
else 
{ 
    //same code repeated as if statement 
} 

JavaScript函數

function RemoveDoc(Doc) 
{ 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("GET","functions/Resubmit.php?Doc="+Doc,true); 
xmlhttp.send(); 
document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText; 
return false; 
} 

我曾嘗試以提醒(DOC)並在文件名不顯示但在第二個remove.php中,它不運行任何編碼。試過「GET」/「POST」也有相同的結果。好心提醒。

+0

請注意,你的PHP代碼,是可以讓別人刪除服務器上的任意文件。不要忘記驗證你的輸入。 – 2012-07-12 16:31:33

+0

我可以將文件移動到該文件夾​​中。但我現在不能解除鏈接。 – JLearner 2012-07-12 16:33:22

+0

是否輸出了firstreport和firstreportpath,並確保它們具有相同的大小寫,相同的長度,包括空格在內的相同字符?使用var_dump並檢查 – 2012-07-12 16:35:13

回答

2

您必須發送廣告帖子的值以便從$ _POST superglobal訪問。剛剛修改的Javascript代碼

function RemoveDoc(Doc,FirstReport,SecReport,FirstReportPath,SecReportPath) 
{ 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST","functions/Resubmit.php",true); 
xmlhttp.onreadystatechange=function(){ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText; 
} 
xmlhttp.send("Doc="+Doc+"&FirstReport="+FirstReport+"&SecReport="+SecReport); 
//do for others also in the same way 
return false; 
} 
+0

在這種情況下,我怎麼叫出不同的按鈕?因爲現在是RemoveDoc(this.name)..它是RemoveDoc(this.doc)。我如何在FirstReport中添加不同的按鈕? – JLearner 2012-07-12 17:14:17

+0

爲每個按鈕使用自定義標籤,然後嘗試RemoveDoc(this.name,this.getAttribute(「FirstReport」),.....等) – leet 2012-07-12 17:31:42

+0

它在HTML中不是php

3

它看起來像您發送一個帖子請求,但發送您的文檔名稱的url,一個$ GET變量。

或者切換到一個GET請求:

function RemoveDoc(Doc) 
{ 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("GET","functions/Resubmit.php?Doc="+Doc,true); 
xmlhttp.send(); 
document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText; 
return false; 
} 

或發送文件名作爲參數後:

function RemoveDoc(Doc) 
{ 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST","functions/Resubmit.php",true); 
xmlhttp.send("Doc="+Doc); 
document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText; 
return false; 
} 

而且,你不等待服務器的響應。

function RemoveDoc(Doc) 
{ 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open("POST","functions/Resubmit.php",true); 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("RemoveMsg").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.send('Doc='+Doc); 
return false; 
} 
+0

我確實嘗試了「GET」,但仍然無效。所以我試過POST haha​​ – JLearner 2012-07-12 16:36:55

+0

你需要等待服務器的響應,然後再嘗試使用它 – Dpolehonski 2012-07-12 16:44:28

+0

嗨,我盡我所有的方式來調出我的JavaScript函數。我確實試圖提醒(Doc)。它確實呼籲我需要正確的Doc。但是對於Resubmit.php,它不會呼叫... – JLearner 2012-07-12 16:45:53

相關問題