【问题标题】:How to create a variable with a value of its self + another variable如何创建具有自身值的变量+另一个变量
【发布时间】:2019-03-16 10:12:16
【问题描述】:

我需要我的购物车页面能够记住商品的总价格,我有3 items,它们都是相同的价格(让我自己更简单)。用户可以使用另一个页面上的表单提交数量。我需要代码来记住item 1 的数量,然后当item 2 通过表单提交时,它会将先前的数量与新项目提交的数量相加。到目前为止,我让它通过表单将数量发送到数组中,然后可以在需要时调用它,但我不知道我应该如何让它添加以前的数量和新的数量给我一个总价。

我认为不需要所有代码来帮助解决这个问题,所以我只发布我认为需要的代码。如果您想查看所有内容,尽管提出要求,我会编辑我的帖子以包含它。

我的代码:

<link id='stylecss' type="text/css" rel="stylesheet" href="css/cartstyle.css">
<link id='stylecss' type="text/css" rel="stylesheet" href="css/style.css">
<!DOCTYPE html>
<html lang="en">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<?php
session_start();
?>
<?php
require_once("head.php");
?>
<?php
require_once("nav.php");
?>

<?php
var_dump ($_POST);
if(!isset($_SESSION['cart'])) {
$_SESSION['cart']=[];
}
$cart = &$_SESSION['cart'];
$movieName = $_POST['movie_name'];
$quantity = $_POST['qty'];

if(isset($moveName)) {
$currentQuantity = $cart[$movieName];
$cart[$movieName] = $currentQuantity + $quantity;
} else {
$cart[$movieName] = $quantity;

}
var_dump($_SESSION);
?>

<div class="shopping-cart">
<!-- Title -->
<div class="title">
  Shopping Bag
</div>

<!-- Product #1 -->
<div class="item">
  <div class="image">
    <?php
    foreach ($cart as $movieName=> $quantity) {
    if ($movieName == 'Inception') {
      echo '<img src="incepcart.jpg" alt="got"/>';
    }
  }
?>
  </div>

  <div class="description">
<?php
foreach ($cart as $movieName=> $quantity) {
if ($movieName == 'Inception') {
  echo "<p>" . $movieName . "x" . $quantity;
  }
}
?>
  </div>
</div>

<!-- Product #2 -->
<div class="item">
  <div class="image">
    <?php
    foreach ($cart as $movieName => $quantity) {
    if ($movieName == 'Game of Thrones: Season 1') {
      echo '<img src="gotcart.jpg" alt="got"/>';
  }
}
    ?>
  </div>
 <div class="description">
<?php
foreach ($cart as $movieName => $quantity) {
if ($movieName == 'Game of Thrones: Season 1') {
  echo "<p>" . $movieName . "x" . $quantity;
  }
}
?>
  </div>
</div>

<!-- Product #3 -->
<div class="item">
  <div class="image">
    <?php
    foreach ($cart as $movieName=> $quantity) {
    if ($movieName == 'Friends Season 1') {
      echo '<img src="friendscart.jpg" alt="got"/>';
  }
}
    ?>
  </div>

  <div class="description">
<?php
foreach ($cart as $movieName=> $quantity) {
if ($movieName == 'Friends Season 1') {
  echo "<p>" . $movieName . "x" . $quantity;
  }
}
?>
        </div>
      </div>

<div class="rhsidee">
 <?php
    if ($movieName == 'Game of Thrones: Season 1') {

}
$total = $_POST['qty'] * 19.99;

    echo "<p>Total <span class\"price\" style=\"color:black\"><b>$total</b></span>"
    ?>

</div>
      <?php 
      echo $currentQuantity * 20
      ?>
    </div>

  </div>
</div>



<form action="product.php">
<button class="prod" type="submit">Continue Shopping </button>
</form>



<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br>
<?php
require_once("footer.php");
?>

以及我将数据提交到 cart.php 的表单之一的代码:

<form action="carttest.php" method="post">
<input type="hidden" name="movie_name" value= "Game of Thrones: Season 1" />
   <input type = "hidden" name = "id" value = "M01" />
   <br>
</select>
<div class="widthc">
   <button class="prod" id="minus">−</button>
<input type="number" name="qty" value="0" id="qty" min="0" max="15"/>
<button class="prod" id="plus">+</button>
<br><br>
<button class="prod" type="submit">  Submit</button>
   </form>

【问题讨论】:

  • 你的 isset($moveName) 有一个拼写错误的变量,它不会帮助你的代码
  • 您在哪里将$currentQuantity 设置为其原始值?
  • 嗯,我认为 $currentQuantity + $quantity 会给 $currentQuantity 它的价值。我需要有一个它,所以 $currentQuantity 有一个值或 0 开头吗?

标签: php html arrays variables


【解决方案1】:

保存那些购物车价值。您可以通过三种方式做到这一点。

  • 会话
  • 饼干
  • 数据库

如果您想跟踪用户的购物车。您可以创建购物车表。并将数量的值和商品 ID 放在购物车页面中。如果您需要特定会话的值,只需将其存储在会话中。如果您想将其存储在用户的浏览器中。只需将其存储在 cookie 中即可。

【讨论】:

  • 我确实有一个会话处于活动状态,我只发布了我认为回答问题所需的代码。如果你喜欢我可以发布其余的
【解决方案2】:

正如@sudhansu 所提到的,Session 是这里的最佳选择,您可以在这里做的是为每个项目创建一个会话的键值对。

例如在提交 item_CNT 的数量时,您只需设置一个包含以下键的会话值。

$_SESSION[itemCNT][quantity] = 100;
$_SESSION[itemCNT][name] = 'name';
$_SESSION[itemCNT][id] = 71273928739;

当用户为特定项目添加数量时,您可以增加 CNT。

您可以在需要时循环访问 SESSION 数组。您可以从任何页面访问此会话。

【讨论】:

  • 嘿,感谢您抽出宝贵时间回复,我的所有页面上都有一个活动会话,即使我点击购物车页面,它也能记住数据。我只是希望它能够将项目 1 的数量添加到项目 2、3、4 等等。当然,它需要记住添加的数量,并可能将它们放入一个数组中,这样它就可以记住所有项目的“当前数量”。我还会添加我的代码,以便你们更好地理解。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-23
  • 1970-01-01
  • 2019-07-31
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多