2015-04-15 47 views
-2

我已經很快做出了一個顯示數據庫中當前項目的頁面。我創建了調整庫存水平的函數,但我現在試圖添加刪除項目的函數。出於某種原因,它所做的只是將庫存水平降低到0,但不會從數據庫中刪除該項目。爲什麼PHP腳本不刪除表?

也可以/更好地把代碼生成表到另一個文件並加載它在這裏?因爲我需要它在運行股票更新或刪除功能時自動更新。

AJAX/HTML代碼

<!DOCTYPE html> 
<html> 
<head> 
<script  src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"> </script> 
<script> 

$(document).ready(function(){ 
$('#dataSubmit').on('submit',function(e){ 
    $.ajax({ 
     url:'files/update.php', 
     data:$(dataSubmit).serialize(), 
     type:'POST', 
     success:function(data){ 
      console.log(data); 
      if(data != "Error") { 
       $("#data").html(data).show().fadeOut(9000); 
      } 
      else { 
       $("#data").html(data).show().fadeOut(9000); 
      } 
     }, 
     error:function(data){ 
      $("#error").show().fadeOut(5000); 
     } 
    }); 
    e.preventDefault(); 
    document.getElementById("dataSubmit").reset(); 
}); 
}); 
$(document).ready(function(){ 
$('#deleteItem').on('dsubmit',function(e){ 
    $.ajax({ 
     url:'files/delete.php', 
     data:$(deleteItem).serialize(), 
     type:'POST', 
     success:function(data){ 
      console.log(data); 
      if(data != "Error") { 
        $("#datad").html(data).show().fadeOut(9000); 
       } 
       else { 
        $("#datad").html(data).show().fadeOut(9000); 
       } 
     }, 
     error:function(data){ 
      $("#error").show().fadeOut(5000); 
     } 
    }); 
    e.preventDefault(); 
    document.getElementById("deleteItem").reset(); 
}); 
}); 
</script> 

</head> 
<body> 
<h2> Update Stock Levels </h2> 
<form name="dataSubmit" id="dataSubmit" action=""> 
Product ID: <input type="number" name="Product_ID" value=""><br> 
New Stock Amount: <input type="text" name="Product_Stock" value=""><br> 
<input type="submit" name="submit" > 
<div id="data"></div> 

<h2> Delete Items </h2> 
<form name="deleteItem" id="deleteItem" action=""> 
Product ID: <input type="number" name="Product_ID" value=""><br> 
<input type="submit" name="dsubmit" > 
<div id="datad"></div> 





<?php 
echo "<table style='border: solid 1px black;'>"; 
echo "<tr><th>Id</th><th>Product Name</th><th>Product Description</th> <th>Product Price</th><th>Product Stock Amount</th></tr>"; 

class TableRows extends RecursiveIteratorIterator { 
function __construct($it) { 
    parent::__construct($it, self::LEAVES_ONLY); 
    } 

function current() { 
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; 
} 

function beginChildren() { 
    echo "<tr>"; 
} 

function endChildren() { 
    echo "</tr>" . "\n"; 
} 
} 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "cms"; 

try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,   $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt = $conn->prepare("SELECT Product_ID, Product_Name, Product_Desc, Product_Price, Product_Stock FROM Products"); 
$stmt->execute(); 

// set the resulting array to associative 
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as  $k=>$v) { 
    echo $v; 
} 
} 
catch(PDOException $e) { 
echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
echo "</table>"; 
?> 
</body> 
</html> 

PHP代碼

<?php 

$dsn = 'mysql:host=localhost;dbname=cms'; 
$user = 'root'; 
$password = ''; 
try { 
$pdo = new PDO($dsn, $user, $password); 
$pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch (PDOException $e) { 
echo 'Connection failed: ' . $e->getMessage(); 
} 

$sql = "DELETE FROM Products WHERE Product_ID = :Product_ID"; 
$stmt = $pdo->prepare($sql); 
$stmt->bindParam(':Product_ID', $_POST['Product_ID'], PDO::PARAM_INT); 
$stmt->execute(); 



?> 
+0

代碼太多。您需要進行更多的故障排除並將其縮小到至少php或javascript代碼。 YUou已經發布了這麼多的代碼,這意味着你沒有試圖自己調試它。 –

+0

我試圖調試它。我知道問題來自哪裏。當我刪除刪除表單它的工作原理,但我不明白爲什麼當所有的變量是分開的。 –

+0

聲明變量'dataSubmit'和'dataSubmit'在哪裏? 'data:$(dataSubmit).serialize(),'和'data:$(deleteItem).serialize(),什麼是'dsubmit'事件? ''('#deleteItem')。on('dsubmit',function(e){' – epascarello

回答

0

你是不是在刪除操作綁定到submit事件,你有一個錯字

$('#deleteItem').on('dsubmit',function(e){ 
        ^

形式只是提交而已。

+0

我很困惑,因爲它爲我所有的其他功能工作,只是不是one。我需要改變什麼? –

+0

dsubmit!==提交 – epascarello

+0

謝謝,現在就開始工作 –