2016-11-28 39 views
-1

點擊按鈕時,它假設在php文件中執行一個查詢,根據點擊的按鈕更新或刪除。但我認爲沒有價值傳遞給變量$狀態內部的PHP文件時,單擊按鈕,因此不執行SQL查詢。

PHP

<?php 

$status = $_GET["status"]; 

if ($status == "update") { 

$conn = mysqli_connect('localhost', 'root','root', 'realestate'); 
$id=$_GET["id"]; 
$first=$_GET["firstname"]; 
$mid=$_GET["middlename"]; 
$last=$_GET["lastname"]; 
$add=$_GET["address"]; 
$gend=$_GET["gender"]; 
$cont=$_GET["contact"]; 

$first=trim($first); 
$mid=trim($mid); 
$last=trim($last); 
$add=trim($add); 
$gend=trim($gend); 
$cont=trim($cont); 

$result=mysqli_query($conn, "UPDATE agents SET firstname='$first', middlename='$mid', lastname='$last', address='$add', gender='$gend', contact='$cont' WHERE id=$id"); 
} 



if ($status == "delete") { 

$conn = mysqli_connect('localhost', 'root','root', 'realestate'); 

$id=$_GET["id"]; 
    $result=mysqli_query($conn, "DELETE FROM agents WHERE id=$id"); 
} 
?> 

的JavaScript

<script type="text/javascript"> 
data(); 
    function data() { 
     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.open("GET","update.php?status=disp", false); 
     xmlhttp.send(null); 
     document.getElementById("data").innerHTML = xmlhttp.responseText; 
    } 


function bb(b) { 

var firstid="txtfirst"+b; 
var firstname = document.getElementById(firstid).value; 


var midid="txtmid"+b; 
var middlename = document.getElementById(midid).value; 

var lastid="txtlast"+b; 
var lastname = document.getElementById(lastid).value; 

var addid="txtadd"+b; 
var address = document.getElementById(addid).value; 

var gendid="txtgend"+b; 
var gender = document.getElementById(gendid).value; 

var contid="txtcont"+b; 
var contact = document.getElementById(contid).value; 


update_value(b,firstname,middlename,lastname,address,gender,contact); 


document.getElementById(b).style.visibility="visible"; 
document.getElementById("update"+b).style.visibility="hidden"; 

document.getElementById("firstname"+b).innerHTML=firstname; 
document.getElementById("middlename"+b).innerHTML=middlename; 
document.getElementById("lastname"+b).innerHTML=lastname; 
document.getElementById("address"+b).innerHTML=address; 
document.getElementById("gender"+b).innerHTML=gender; 
document.getElementById("contact"+b).innerHTML=contact; 
} 

function update_value(id,firstname,middlename,lastname,address,gender,contact) { 
var xmlhttp = new XMLHttpRequest(); 

xmlhttp.open("GET","update.php?id="+id+"&firstname="+firstname+"&middlename="+middlename+"&lastname="+lastname+"&address="+address+"&gender="+gender+"&contact="+contact+"&status=update",false); 
xmlhttp.send(null); 

} 

function delete1(id) { 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET","update.php?id="+id+"&status=delete", false); 
xmlhttp.send(null); 
data(); 
} 
</script> 

回答

0

你這裏有幾個問題。首先,我建議您查看DRY原理,以幫助您避免容易發生問題,例如在請求中不包含狀態變量。

如果你看看你的JavaScript,你會注意到你正在向同一頁面發出幾個請求,並使用複製粘貼代碼來做到這一點。這是進一步提取代碼的好地方。我可能會使用類似於以下內容的東西。其次,您的PHP腳本容易受到SQL注入的攻擊。如何解決這個問題很好解釋here。我不能說肯定這是你的問題,但是如果你使用的是像O'Reilly這樣的名字,它會阻止你的腳本工作。我沒有看到任何其他明顯的地方,你的腳本會出錯。如果在PHP錯誤日誌中出現任何內容,我可能會提供更多幫助。

<script> 
//Type isn't needed, browsers assume javascript 
function httpRequest(method, url, parameters) { 
    // Build a query string, this could be improved but it works for your current use case. 
    // It assumes that parameters is an object and does not work for arrays 
    var query = ""; 
    Object.keys(parameters).forEach(function(key) { 
     query += encodeURIComponent(key) + '=' + encodeURIComponent(parameters[key]) + "&"; 
    }); 

    var xmlhttp = new XMLHttpRequest(); 
    //If possible you should switch to async requests as well. 
    xmlhttp.open(method, url + "?" + query, false); 
    xmlhttp.send(); //No need to pass null 
    return xmlhttp.responseText; 
} 
function updateRequest(parameters) { 
    return httpRequest("GET", "update.php", parameters); 
} 

function data() { 
    document.getElementById("data").innerHTML = updateRequest({status: "disp"}); 
} 

//bb function removed as it isn't relevant to my point here 

function update_value(id,firstname,middlename,lastname,address,gender,contact) { 
    updateRequest({ 
     status: "update", 
     id: id, //If you are using a recent browser this can be changed to just id, firstname, ... 
     firstname: firstname, 
     middlename: middlename, 
     lastname: lastname, 
     address: address, 
     gender: gender, 
     contact: contact, 
    }); 
} 

function delete1(id) { 
    updateRequest({ 
     status: "delete", 
     id: id, 
    }); 
    data(); 
} 
</script>