SQL + AJAX + PHP POST请求

时间:2014-01-11 22:40:30

标签: php html ajax mysqli

我试图用PHP删除SQL数据库中的一行。 该行由用户键入的产品名称决定。

我创建了一个简单的表单来删除已经输入的产品:

<article>
    <section>

        <fieldset><legend><span>Would you like to add a Product?</span>    </legend>

        <form method="POST" id = "myForm" name="myForm" onsubmit="return     false;">

        <br> &nbsp;

        <p>Enter a name of product <input type='text' id='name' name =     'name'/></p>

        <br> &nbsp;

    <input name="submit" id ="submit" type="button" value="Find Product"/>

        </form>
        </fieldset>

        <div id="fetchProduct">
        </div>

    </section>
</article>

假设我已经在另一个表单上输入了数据并且它进入了数据库,但是当我尝试删除它时,我收到未定义的索引:当我尝试删除时,名称出错。

以下是我用来删除产品的脚本:

<?php

include("database/connect_database.php");


     $name = $_POST['name'];


 $query = "DELETE FROM products WHERE product_name = '$name' ";

 $result = $database->query($query) OR die ("Failed query $query");
echo $database->error."<p>";

if($result){

    echo "Record deleted";
}
else {

    echo "Product not found!";
}

?>

我也使用AJAX来传递名称:

  fetch = function () {

// declare the two variables that will be used
var xhr, target, changeListener;

// find the element that should be updated
target = document.getElementById("fetchProduct");

var name = document.getElementById("name").value;

var variable = "name="+name;

// create a request object
xhr = new XMLHttpRequest();

changeListener = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {

        target.innerHTML = xhr.responseText;
    } else {
        target.innerHTML = "<p>Something went wrong.</p>";
    }
};

xhr.open("POST", "deleteProductSQL.php", true);
xhr.onreadystatechange = changeListener;
xhr.send(variable);

 };


 pageLoaded = function () {
var fetchButton = document.getElementById("submit");
if (fetchButton) {
    fetchButton.addEventListener("click", fetch);
}
 };

window.onload = pageLoaded;

有人能指出我在这里发生了可怕的错误,因为我无法确定为什么它不允许我删除该行以及为什么我会收到未定义的错误。

谢谢你的时间

1 个答案:

答案 0 :(得分:0)

将您的PHP代码放在isset()

if (isset($_POST['name']){
//code here
}

另外

<p>Enter a name of product <input type='text' id='name' name = 'name'/></p>

在这一行中,<p>不是自动关闭标记,所以

<p>Enter a name of product <input type='text' id='name' name = 'name'></p>