用一个按钮更新数量php

时间:2014-04-15 03:30:39

标签: php

您好我正在做一个项目来建立一个销售游戏的网站,但我现在的一个问题是用一个按钮更新数量。我已经让它使用了我想要更新的项目旁边的多个更新按钮,但为了使它更加真实,我想只有一个按钮,它将更新我数据库中的篮子表中的所有项目数量。< / p>

这是我的购物车档案,我已经注释了多个更新按钮的工作位置。

<?php
     $count = 0;
     while ($count < $numrow)
     {
     $row = $results -> fetch_assoc();
     extract($row);
     echo"<div>";
     echo"<div class='recommended_games'>";
     echo "<img src='images/".$gameIMG."' />";
     echo "</div>";


     echo '<div class="price_tag">';
     echo '<div class="price_tag">£'.$gamePrice. '</div>';
     echo'</div>';

     echo '<div id="update_form"><form action="updatebasket.php" method="POST" name="updateform" id="update_all">';
     echo '<select name="quantity" id="quantity" />';
     echo      '<option value="1">1</option>';
     echo      '<option value="2">2</option>';
     echo      '<option value="3">3</option>';
     echo      '<option value="4">4</option>';
     echo      '<option value="5">5</option>';
     echo      '</select>';
     //echo '<input type="hidden" value="'.$gameID.'" name="gameid" id="gameid" />';
     //echo '<input type="submit" value="update" />';
     echo '</form>';
     echo '</div>';             
     echo '</form>';

     echo"<img class='box1' src='Images/Grey-Banners.png' />";
     echo"</div>";
     $count = $count + 1;   

     }     
     echo '<input type="hidden" value="'.$gameID.'" name="gameid" id="gameid" form="update_all"/>';
     echo '<input type="submit" value="update" form="update_all"/>';

 ?>

这是我的updatebasket文件,用于更新数据库中的数量

<?php
session_start();
require "dbconnect.php";

$memberID = $_SESSION['id']; 

$quantity = $_POST['quantity'];
$gameID = $_POST['gameid'];
$connect->query($query);


$query = "UPDATE basket SET quantity = ".$quantity." WHERE gameid = ".$gameID." AND id = ".$memberID."";

$results = $connect->query($query);


mysqli_commit($con);
header('Location: cart.php');
?>

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要使用数组来实现此目的,通过更改表单,您可以使用foreach来组合查询以更新购物车中的每个条目。因此,一个按钮将使用相应的数量更新购物车中的每个项目。我没有测试这段代码,这就是我接近它的方式。

HTML表单更改的示例:

echo '<div id="update_form"><form action="updatebasket.php" method="POST" name="updateform" id="update_all">';
     echo '<select name="quantity[]" id="quantity" />';
     echo      '<option value="1">1</option>';
     echo      '<option value="2">2</option>';
     echo      '<option value="3">3</option>';
     echo      '<option value="4">4</option>';
     echo      '<option value="5">5</option>';
     echo      '</select>';
     //echo '<input type="hidden" value="'.$gameID.'" name="gameid[]" id="gameid" />';
     //echo '<input type="submit" value="update" />';
     echo '</form>';
     echo '</div>';             
     echo '</form>';
echo"<img class='box1' src='Images/Grey-Banners.png' />";
     echo"</div>";
     $count = $count + 1;   

     }     
     echo '<input type="hidden" value="'.$gameID.'" name="gameid[]" id="gameid" form="update_all"/>';
     echo '<input type="submit" value="update" form="update_all"/>';

 ?>

查询示例:

foreach ($_POST['gameid'] as $row=>$id) {
     $gameid = $id;
     $newquantity = ($_POST['quantity'][$row]);
         $query = "UPDATE basket SET quantity = ".$newquantity." WHERE gameid = ".$gameID." AND id = ".$memberID."";
     $connect->query($query);
}

答案 1 :(得分:0)

一种解决方案是为您的数量<select>输入唯一名称,并将游戏ID附加到末尾(例如“quantity_32”)。这样可以很容易地知道购物车中每个游戏的数量。

// POST Example
$_POST['quantity_32'] = 1;
$_POST['quantity_31'] = 3;
$_POST['quantity_37'] = 2;

前端表单更改

echo '<select name="quantity_<?=$gameID?>" id="quantity" />';

后端处理

然后在处理页面循环遍历$ _POST变量并找到数量字段并获取他们的游戏ID。

foreach ($_POST as $key => $quantity) {
    // Ignore non-quantity fields
    if (preg_match('/quantity_([0-9]+)/i', $key, $result) !== 1) continue;
    $quantity = (int)$quantity;
    $game_id = (int)$result[1];

    // Update Cart Quantity in DB
    // ...
}

重要!

请确保您SQL-Escape保存到数据库中的所有值。如果你不这样做,黑客可以做一些讨厌的事情。

此示例显示了如何使用MySQLi Prepared Statements保持安全。 http://mattbango.com/notebook/code/prepared-statements-in-php-and-mysqli/