【问题标题】:Passing Values to a PHP Shopping Cart将值传递给 PHP 购物车
【发布时间】:2015-01-08 02:43:06
【问题描述】:

我目前正在开发一个用于 Web 开发的 PHP 购物车项目。我尚未解决的一个问题是将我从 product_list.php 中选择的产品的值传递给 cart.php - 无论我点击什么产品,在我的产品表中找到的最后一个产品的名称都是保留的出现在 cart.php 页面上。

例如,我会选择 Bamboo Mat,它是 id no。 2,但是会出现在cart.php中的产品名称是Bamboo Fence,它是id no。 8. 另外,quantity栏中出现的数值是所选产品的剩余商品数量。

只有 ProductPrice 列中的值会正常显示。

这是 product_list.php 文件:

<?php 

$err_level = error_reporting(0);  
$conn = mysql_connect('params');  
error_reporting($err_level); 
?>
<?php 

include "storescripts/connect_to_mysql.php"; 


?>

<html>
<head>
    <title>Product List | Bamboo Art</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>

    <div class="container">
        <div class="header">
            Bamboo Art
        </div>
        <div id="nav">
            <ul id="nav">

                <li><a href="index.php">Home</a>
          </li><!--
          --><li><a href="#" class="current">Products</a>
          </li><!--
          --><li><a href="#">Contact Us</a>
          </li>

            </ul>
        </div>



        <div class="content_product-list">


            <form method="POST" action="addtocart.php">
                <?php

                        $sql = "SELECT * FROM products";
                        $query = mysql_query($sql);

                        while ($row = mysql_fetch_assoc($query)) {


                    ?>
                            <div class="products">

                                <input type='hidden'  name='id' value=' <?php echo $row['id'] ?> '>
                                <?php echo "<img src='". $row['image'] ."' width=290 height=220>" ?><br><br>

                                <h3><?php echo $row['name'] . '<input type="hidden"  name="name" value="' . $row['name'] . '">' ?></h3>

                                <h4><?php echo $row['description'] . '<input type="hidden"  name="description" value="' . $row['description'] . '">' ?></h4>

                                Price: Php <?php echo $row['price'] . '<input type="hidden"  name="price" value="' . $row['price'] . '">' ?><br>
                                <?php echo " Availability: "  . $row['qty'] . " <br/>" ?>
                                <?php echo " Quantity: <select name='qty' style='width:40px;'> 
                                                    <option>1</option>
                                                    <option>2</option>
                                                    <option>3</option>
                                                    <option>4</option>
                                                    <option>5</option>
                                                    <option>6</option>
                                                    <option>7</option>
                                                    <option>8</option>
                                                    <option>9</option>
                                                    <option>10</option>
                                                </select> "?>
                                                <br><br>
                                                <input type='submit' value='Add to Cart' name='submit'>   <br/>

                            </div>  



                    <?php

                        }

                    ?>
                </form>
            <br/>



            </div>                        
            </div>                   
            </div>                   
    </div>
</body>
</html>

addtocart.php:

<?php 

include "storescripts/connect_to_mysql.php";

    if (isset($_POST['submit'])) {

    $qty=$_REQUEST['qty'];
    $name=$_REQUEST['name'];
    $price=$_REQUEST['price'];
    $id=$_REQUEST['id'];  



    $rs=mysql_query("SELECT * FROM cart WHERE prod_id='$id'",$con) or die (mysql_error());
    if (mysql_num_rows($rs)>0 )
        {
            mysql_query("UPDATE cart SET qty=(qty+'$qty') WHERE prod_id='$id'",$con) or die (mysql_error());
            mysql_query("UPDATE sales_record SET qty=(qty+'$qty') WHERE product_name='$name'",$con);

        }

    else
        {
            mysql_query("INSERT INTO cart (`cart_id`, `prod_id`, `qty`, `name`, `price`) VALUES (NULL, '$id', '$qty', '$name', '$price');",$con) or die(mysql_error());

            mysql_query("INSERT INTO sales_record (`sales_id`, `customer_id`, `product_name`, `qty`,`price`) VALUES (NULL, '', '$name', '$qty', '$price');",$con);
        }

        mysql_query("UPDATE products SET qty=(qty-'$qty') WHERE id='$id'",$con) or die(mysql_error());

    header("location:cart.php"); 
    exit; 
    } 

?>

cart.php 文件:

<?php
include "storescripts/connect_to_mysql.php";

if(isset($_POST['checkout'])){ 
header("location:orders.php"); 
} 
if(isset($_POST['shop'])){ 
header("location:product_list.php"); 
}

?>
<html>
<head>
    <title>Shopping Cart | Bamboo Art</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
    </head> 
<body>
<div class="container">
    <div class="header">
            Bamboo Art
    </div>
    <div id="nav">
            <ul id="nav">

                <li><a href="index.php">Home</a>
          </li><!--
          --><li><a href="product_list.php">Products</a>
          </li><!--
          --><li><a href="contactus.html">Contact Us</a>
          </li>

            </ul>
        </div>
<div class="content">

    <div class="table_content">


                        <h2>Your Cart</h2>
                    <form method="post">
                    <table id="table" align="center" border="0" width="100%">
                        <th>Qty</th>
                        <th>Product</th>
                        <th>Price</th>
                        <th>Total</th>
                        <tr>
                            <?php
                            //extract all items from the temporary cart
                            $q="SELECT * FROM cart, products WHERE cart.prod_id=products.id";

                            $rs=mysql_query($q) or die (mysql_error());
                            $total=0;
                            while($row=mysql_fetch_array($rs)){
                                echo '<td>'. $row['qty'] .'<input type="hidden" name="qty" value="' . $row['qty'] . '"></td>';
                                echo '<td>'. $row['name'] .'<input type="hidden" name="name" value="' . $row['name'] . '"></td>';
                                echo '<td>'. number_format($row['price'],'2','.',',') .'<input type="hidden" name="price" value="' . number_format($row['price'],'2','.',',') . '"></td>';
                                echo '<td><b>' . number_format(($row['qty']*$row['price']),'2','.',',') . '</b><input type="hidden" name="total" value="' . number_format(($row['qty']*$row['price']),'2','.',',') . '"></td>';
                                $total+=($row['qty']*$row['price']);
                                echo '</tr>';
                                echo '<tr>';
                            }
                            ?>

                            <tr></tr>
                            <tr></tr>
                            <tr><td colspan="3"><strong>GRAND TOTAL</strong></td>
                            <td><?php echo number_format($total,'2','.',',');?><input type="hidden" name="gtotal" value="<?php echo number_format($total,'2','.',',');?>"></td>

                            </tr>
                            <tr height="40px"></tr>
                            <tr>
                                <td></td><td><input type="submit" name="checkout" value="Check Out" /></td> 
                                <td><input type="submit" name="shop" value="Back to Shopping" /></td> 
                            </tr>
                    </table>

                    </form>
    </div>                                                            

    </div>

</div>
</body>
</html>

我查看了一些购物车示例代码,试图看看是否有解决方案,但这让我很困惑。

我确实找到了this question,这听起来与我遇到的问题相似,但我不能使用 Javascript 来构建这个购物车——只能使用 HTML、CSS 和 PHP。

我目前使用的是 PHP 版本 4.2.7.1。

【问题讨论】:

    标签: php mysql cart


    【解决方案1】:

    好的,我的 product_list.php 现在可以将客户选择的产品 ID 和名称的值传递给 cart.php:

    <?php
    
                            $sql = "SELECT * FROM products";
                            $query = mysql_query($sql);
    
                            while ($row = mysql_fetch_assoc($query)) {
    
    
    
    
    
                                    echo "<div class='products'>";
                                    echo "<form method='POST' action='addtocart.php'>";
                                    echo "<img src='". $row['image'] ."' width=290 height=220><br><br>";
    
                                    echo "<h3>". $row['name'] . '<input type="hidden"  name="name" value="' . $row['name'] . '">' . "</h3>";
    
                                    echo "<h4>" . $row['description'] . '<input type="hidden"  name="description" value="' . $row['description'] . '">' . "</h4>";
    
                                    echo "Price: Php" . $row['price'] . '<input type="hidden"  name="price" value="' . $row['price'] . '">' . "<br>";
                                    echo " Availability: "  . $row['qty'] . " <br/>";
                                    echo " <select name='qty' style='width:40px;'> 
                                                        <option>1</option>
                                                        <option>2</option>
                                                        <option>3</option>
                                                        <option>4</option>
                                                        <option>5</option>
                                                        <option>6</option>
                                                        <option>7</option>
                                                        <option>8</option>
                                                        <option>9</option>
                                                        <option>10</option>
                                                    </select>
                                                    <input type='hidden'  name='id' value='" . $row['id'] ." '> 
                                                    <br><br>
                                                    <input type='submit' value='Add to Cart' name='submit'>   <br/>";
                                    echo '</form>';
                                    echo " </div>";
    
    
                        }
    
    
                        ?>
    

    但是,数量显示不正确 - 它没有显示客户选择的数量,而是从销售商品总数中扣除该数量。比如有9个竹灯笼在售,客户订购了3个,但是cart.php中显示的数量是6个。

    我还把 cart 和 sales_record 表中的 qty 字段分别改成了 cart_qtysr_qty,以为是冲突造成的,但没有任何区别。

    【讨论】:

      【解决方案2】:

      问题是您只有一个表单和多个具有相同名称的输入字段。每次你设置一个新的隐藏输入时,你给它同样的名字,基本上“覆盖”你将在提交时发送的 $_POST 数据。你可以选择类似的东西:

      input type="hidden" name="name[]"
      

      然后在你的 addtocart 中像这样访问那个:

      $_POST['name'][2]
      

      您必须将索引基于按下的提交按钮。

      其他选项是为每个产品创建一个表单或使用 $_GET 传递产品 ID 和数量。

      【讨论】:

        猜你喜欢
        • 2012-08-30
        • 2022-08-23
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 2012-03-28
        • 2011-05-04
        • 1970-01-01
        • 2015-06-09
        相关资源
        最近更新 更多