Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP会话向篮子中添加多个产品_Php_Html - Fatal编程技术网

使用PHP会话向篮子中添加多个产品

使用PHP会话向篮子中添加多个产品,php,html,Php,Html,我为一个电子商务网站建立了一个购物篮/结帐系统,使用会话变量存储产品名称、价格和数量,并可以将它们显示在我的结帐页面上。 我正在努力将不同的产品添加到购物篮中,当用户转到另一个产品并单击“添加到购物篮”按钮时,它会从购物篮中删除第一个产品。有人知道我如何更改代码,以便在不删除变量中当前的任何产品的情况下将不同的产品添加到篮子中吗。以及如何将数量添加到URL中,以便将其添加到篮子中。“数量”是“产品”页面上的一个输入框,用户可以将产品数量输入其中 这是我的产品页面- <?php requir

我为一个电子商务网站建立了一个购物篮/结帐系统,使用会话变量存储产品名称、价格和数量,并可以将它们显示在我的结帐页面上。 我正在努力将不同的产品添加到购物篮中,当用户转到另一个产品并单击“添加到购物篮”按钮时,它会从购物篮中删除第一个产品。有人知道我如何更改代码,以便在不删除变量中当前的任何产品的情况下将不同的产品添加到篮子中吗。以及如何将数量添加到URL中,以便将其添加到篮子中。“数量”是“产品”页面上的一个输入框,用户可以将产品数量输入其中

这是我的产品页面-

<?php
require('includes/application_top.php');
$page_title='Details';
require('includes/site_header.php');
$_GET['prod_ID'];
$product_id = isset($_REQUEST['prod_ID']) ? (int) $_REQUEST['prod_ID'] : 0;
$pound ="&pound;";
?>
<style>
<?php
require('css/prod_details.css');
?>
</style>
<br>
<br>
<br>
<br>
<br>
<?php $product = get_product_details1($freshKickz_conn); ?>

         <?php foreach($product as $productdetails) {
 ?>



<main class="container">

  <!-- Left Column / Headphones Image -->
  <div class="left-column">
    <img data-image="red" class="active" src="<?= htmlspecialchars($productdetails['images']) ?>" style="height: 400px; width: 400px;" alt="">
  </div>
  <!-- Right Column -->
  <div class="right-column">
 
    <!-- Product Description -->
    <div class="product-description">
      <h1><?= htmlspecialchars($productdetails['prod_Name']) ?></h1>
      <p><?= htmlspecialchars($productdetails['prod_Details']) ?></p>
    </div>

    <!-- Product Pricing -->
    <div class="product-price">
      <span><?=$pound?><?= htmlspecialchars($productdetails['prod_Price'])?></span>
      <a href="basket_page.php?quantity=1&action=add_product&name=<?=$productdetails['prod_Name']?>&price=<?=$productdetails['prod_Price']?>" class="cart-btn">Add to Basket</a>
    </div>
    <br>
    <div class="quantity">
        <span>Quantity</span>
        <br>
        <input type="number" min="1" max="9" step="1" value="1">
    </div>
  </div>
</main>
<?php
} ?>
<script src="js/prodJS.js"></script>
<script>
$(document).ready(function () {

    $('.color-choose input').on('click', function () {
        var headphonesColor = $(this).attr('data-image');

        $('.active').removeClass('active');
        $('.left-column img[data-image = ' + headphonesColor + ']').addClass('active');
        $(this).addClass('active');
    });

});
</script>
<?php
require('includes/application_bottom.php');
require('includes/site_footer.php');
?>






“style=”高度:400px;宽度:400px;“alt=”“>



$(文档).ready(函数(){ $('.color-choose-input')。在('click',函数(){ var头戴式耳机颜色=$(this.attr('data-image'); $('.active').removeClass('active'); $('.left-column img[data-image='+heephonedscolor+']')。addClass('active'); $(this.addClass('active'); }); });
这是我的购物篮/结账页面-

<?php

require('includes/application_top.php');
$page_title='Your Basket';
require('includes/site_header.php');

if ( ! isset($_SESSION['basket'])) {
  $_SESSION['basket'] = array();
}
$pound ="&pound;";
$action = $_REQUEST['action'] ?? '';
$err = '';

if($_REQUEST['action']=='add_product'){
  $_SESSION['basket'][$_REQUEST['name']]=$_REQUEST['quantity']=$_REQUEST['quantity'];
}

?>
<style>
<?php
require('css/basket.css');
?>
</style>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<div class="row">
  <div class="col-75">
    <div class="container">
      <form action="successful_order.php">

        <div class="row">
          <div class="col-50">
            <h3>Billing Address</h3>
            <label for="fname"><i class="fa fa-user"></i> Full Name</label>
            <input type="text" id="fname" name="firstname" placeholder="John M. Doe">
            <label for="email"><i class="fa fa-envelope"></i> Email</label>
            <input type="text" id="email" name="email" placeholder="john@example.com">
            <label for="adr"><i class="fa fa-address-card-o"></i> Address</label>
            <input type="text" id="adr" name="address" placeholder="542 W. 15th Street">
            <label for="city"><i class="fa fa-institution"></i> City</label>
            <input type="text" id="city" name="city" placeholder="New York">

            <div class="row">
              <div class="col-50">
                <label for="state">County</label>
                <input type="text" id="county" name="county" placeholder="Cheshire">
              </div>
              <div class="col-50">
                <label for="zip">PostCode</label>
                <input type="text" id="postcode" name="postcode" placeholder="SK11 6TF">
              </div>
            </div>
          </div>

          <div class="col-50">
            <h3>Payment</h3>
            <label for="fname">Accepted Cards</label>
            <div class="icon-container">
              <i class="fa fa-cc-visa" style="color:navy;"></i>
              <i class="fa fa-cc-amex" style="color:blue;"></i>
              <i class="fa fa-cc-mastercard" style="color:red;"></i>
              <i class="fa fa-cc-discover" style="color:orange;"></i>
            </div>
            <label for="cname">Name on Card</label>
            <input type="text" id="cname" name="cardname" placeholder="John More Doe">
            <label for="ccnum">Credit card number</label>
            <input type="text" id="ccnum" name="cardnumber" placeholder="1111-2222-3333-4444">
            <label for="expmonth">Exp Month</label>
            <input type="text" id="expmonth" name="expmonth" placeholder="September">

            <div class="row">
              <div class="col-50">
                <label for="expyear">Exp Year</label>
                <input type="text" id="expyear" name="expyear" placeholder="2018">
              </div>
              <div class="col-50">
                <label for="cvv">CVV</label>
                <input type="text" id="cvv" name="cvv" placeholder="352">
              </div>
            </div>
          </div>

        </div>
        <label>
          <input type="checkbox" checked="checked" name="sameadr"> Shipping address same as billing
        </label>
        <input type="submit" value="Checkout" class="btn">
      </form>
    </div>
  </div>

  <div class="col-25">
    <div class="container">
      <h4>Cart
        <span class="price" style="color:black">
          <i class="fa fa-shopping-cart"></i>
        </span>
      </h4>
      <br>
      <br>
      <p><span class="name"><?= $_REQUEST['name'] ?></span> <span class="price"><span class="name"><?= $_REQUEST['quantity'] ?><br></span><?= $pound ?><?= $_REQUEST['price'] ?></span></p>
      <hr>
      <p>Total <span class="price" style="color:black"><b>$30</b></span></p>
    </div>
  </div>
</div>
<?php
require('includes/application_bottom.php');
require('includes/site_footer.php');
?>











帐单地址 全名 电子邮件 地址 城市 县 邮政编码 付款 接受卡 卡片上的名字 信用卡号码 试验月 实验年 CVV 发货地址与账单相同 运货马车



总共30美元


首先,您应该避免使用GET请求执行操作。 接下来尝试使用产品id,因为不同产品的名称可以相同

因此,我的产品页报价:

<?php
require('includes/application_top.php');
$page_title='Details';
require('includes/site_header.php');
$product_id = isset($_REQUEST['prod_ID']) ? (int) $_REQUEST['prod_ID'] : 0;
$pound ="&pound;";
?>
<style>
<?php
require('css/prod_details.css');
?>
</style>
<br>
<br>
<br>
<br>
<br>
<?php $product = get_product_details1($freshKickz_conn); ?>
<?php foreach($product as $productdetails): ?>
    <main class="container">
        <!-- Left Column / Headphones Image -->
        <div class="left-column">
            <img data-image="red" class="active" src="<?= htmlspecialchars($productdetails['images']) ?>" style="height: 400px; width: 400px;" alt="">
        </div>
        <!-- Right Column -->
        <div class="right-column">
            <!-- Product Description -->
            <div class="product-description">
                <h1><?= htmlspecialchars($productdetails['prod_Name']) ?></h1>
                <p><?= htmlspecialchars($productdetails['prod_Details']) ?></p>
            </div>
            <!-- Product Pricing -->
            <form action="basket_page.php" method="POST">
                <div class="product-price">
                    <span><?=$pound?><?= htmlspecialchars($productdetails['prod_Price'])?></span>
                    <input type="hidden" name="action" value="add_product" />
                    <!-- i'm not sure what index did you use for id so -->
                    <input type="hidden" name="id" value="<?php echo htmlspecialchars($productdetails['prod_Name']); ?>" />
                    <input type="hidden" name="price" value="<?php echo htmlspecialchars($productdetails['prod_Price']); ?>" />
                    <input type="hidden" name="name" value="<?php echo htmlspecialchars($productdetails['prod_Name']); ?>" />
                    <button type="submit" class="cart-btn">Add to Basket</button>
                </div>
                <br>
                <div class="quantity">
                    <span>Quantity</span>
                    <br>
                    <input type="number" min="1" max="9" step="1" value="1">
                </div>
           </form>
        </div>
    </main>
<?php endforeach; ?>
<script src="js/prodJS.js"></script>
<script>
$(document).ready(function () {
    $('.color-choose input').on('click', function () {
        var headphonesColor = $(this).attr('data-image');
        $('.active').removeClass('active');
        $('.left-column img[data-image = ' + headphonesColor + ']').addClass('active');
        $(this).addClass('active');
    });
});
</script>
<?php
require('includes/application_bottom.php');
require('includes/site_footer.php');
?>






“style=”高度:400px;宽度:400px;“alt=”“>


我建议你读一读。这里有大量代码需要处理,其中大部分可能与问题无关。缩小你的问题范围,分离出不符合预期的代码,然后用MRE编辑你的问题。这听起来很苛刻——但看看这段代码,我想说你还没有准备好处理电子商务解决方案,尤其是一个似乎需要卡详细信息的解决方案(因此,至少需要通过PCI 1级合规性);如果你只是在学习,我建议“更安全”project.Hi我在我的代码中添加了您所说的内容,它给了我以下错误
警告:C:\MAMP\htdocs\basket\u page.php第122行的非法字符串偏移量'price',以及其他类似错误,说明会话中有旧项。请尝试通过清除浏览器cookie来清除会话。我已经这样做了,但是现在没有向会话添加任何内容篮子?忘记将
操作
参数添加到表单。已修复。请重试。
<?php
require('includes/application_top.php');
$page_title = 'Your Basket';
require('includes/site_header.php');

if (!isset($_SESSION['basket'])) {
    $_SESSION['basket'] = [];
}
$pound = "&pound;";
$action = $_REQUEST['action'] ?? '';
$err = '';

if ($action === 'add_product') {
    $id = isset($_POST['id']) ? (int) $_POST['id'] : null;
    $price = isset($_POST['price']) ? (float) $_POST['price'] : null;
    $number = isset($_POST['number']) ? (int) $_POST['number'] : null;
    $name = isset($_POST['name']) ? trim($_POST['name']) : null;
    if ($id && $price && $number) {
        $_SESSION['basket'][$id] = [
            'id' => $id,
            'price' => $price,
            'number' => $number,
            'name' => $name,
        ];
    }
}
?>
<div class="col-25">
    <div class="container">
        <h4>
            Cart
            <span class="price" style="color:black">
                <i class="fa fa-shopping-cart"></i>
            </span>
        </h4>
        <br>
        <br>
        <?php 
            $total = 0;
            foreach ($_SESSION['basket'] as $item): 
                $total += $item['price'] * $item['number'];
        ?>
            <p>
                <span class="name"><?php echo htmlspecialchars($item['name']) ?></span> 
                <span class="price">
                    <span class="name"><?= $item['number'] ?><br></span>
                    <?= $pound ?><?= $item['price'] ?>
                </span>
            </p>
          <hr>
        <?php endforeach; ?>
        <p>
            Total <span class="price" style="color:black"><b>$<?= total ?></b></span>
        </p>
    </div>
</div>