2017-10-16 127 views
2

你好我正在一家商店用PHP来填充商店的一个while循环,以便显示我数据库中的所有商店商品。这工作正常,但我有一个问题,当我尝试更新该帐户上剩余的股票数量和钱时,我按购买按钮。PHP问题在按钮上更新数据库单击

$ ItemCost变量只保存上次填充的项目成本,我不确定如何保存每个项目的成本以将其插入到数据库中。 另外$ StockCount变量将库存计数设置为1.

我该如何解决这个问题。

<?php 

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

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 

$GatherItems = "SELECT * FROM shopitems WHERE StockCount > 0 ORDER BY`shopitems`.`Cost` DESC"; 
$result = $conn->query($GatherItems); 

if ($result->num_rows > 0) { 
// output data of each row 

while($row = $result->fetch_assoc()) { 
    $ItemName = $row['ItemName']; 
    $ItemCost = $row['Cost']; 
    $ID = $row['ID']; 
    $StockCount = $row['StockCount']; 
    $Money = $row['Money']; 

echo "<div class='test'>$ItemName</div>"; 
echo "<div class='test1'>$ItemCost </div>"; 
echo "<input type='submit' class='btn btn-primary' name='Buy' value='Buy Now'/>"; 
} 

$NewTotal = $Money - $ItemCost; 
$Inventory = "UPDATE shopitems SET StockCount = $StockCount-1, Money = $NewTotal WHERE ID = $ID"; 

if(isset($_POST['Buy'])){ 
if ($conn->query($Inventory) === TRUE) { 
    echo "New record created successfully"; 
} else { 
echo "Error: " . $Inventory . "<br>" . $conn->error; 
    } 
} 
} 
$conn->close(); 
?> 
+1

你需要通过与按钮点击该行的'ID',并检查该'ID'。此外,您还需要在您的'SELECT'脚本之前移动'UPDATE'脚本,因为您在选择后删除了脚本,因此您的总计将始终关闭。 – Sean

回答

0

正如@Sean说,你能做到这一点,如:

<?php 

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

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 

if(isset($_POST['Buy'])){ 
// update stock and money 

$ID = $_POST['ID']; 
$Money = $_POST['Money']; 
$ItemCost = $_POST['ItemCost']; 
$NewTotal = $Money - $ItemCost; 
$Inventory = "UPDATE shopitems SET StockCount = $StockCount-1, Money = 
$NewTotal WHERE ID = $ID"; 

if ($conn->query($Inventory) === TRUE) { 
    echo "New record created successfully"; 
} else { 
echo "Error: " . $Inventory . "<br>" . $conn->error; 
    } 
} 

// display items 

$GatherItems = "SELECT * FROM shopitems WHERE StockCount > 0 ORDER 
BY`shopitems`.`Cost` DESC"; 
$result = $conn->query($GatherItems); 

if ($result->num_rows > 0) { 
// output data of each row 

while($row = $result->fetch_assoc()) { 
    $ItemName = $row['ItemName']; 
    $ItemCost = $row['Cost']; 
    $ID = $row['ID']; 
    $StockCount = $row['StockCount']; 
    $Money = $row['Money']; 
    echo "<form method='post' action=''>"; 
    echo "<div class='test'>$ItemName</div>"; 
    echo "<div class='test1'>$ItemCost </div>"; 
    echo "<input type='hidden' name='Id' value='".$ID."'/>"; 
    echo "<input type='hidden' name='Money' value='".$Money."'/>"; 
    echo "<input type='hidden' name='ItemCost' value='".$ItemCost."'/>"; 
    echo "<input type='submit' class='btn btn-primary' name='Buy' value='Buy Now'/>"; 
    echo "</form>"; 

} 
} 

$conn->close(); 
0

假设你不想Ajax和你不想JS,但只有在每个“买入”按钮项目将重新打开整个页面,然后你想要这样的东西。这是代码:

//FIRST we need to process the form: 
<?php 
if(isset($_POST['submit'])){ 
    $itemId = $_POST['id']; 
    //do the stuff. Remember about escaping $itemId, or using prepared statements 
    //select... from where id = $itemId 
} 
?> 

//now get the items: 
<?php 
    $GatherItems = ... 
?> 

//now the html: 

<?php 
while($row = $result->fetch_assoc()) { 

?> 
<form method = 'post'> 
    <div class='test'><?=$ItemName?></div> 
    ... 
    <input type = 'hidden' name = 'itemId' value = '<?=$ID?>'> 
    <input type = 'submit' name = 'submit' value = 'Buy'> 
</form> 

} 

?>