2016-11-28 91 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>