【发布时间】:2018-10-14 01:26:04
【问题描述】:
我一直试图将我的数组变量中的数据发送到 .txt 文件中。这些变量按预期工作,因为 iv 已经设法在用户可以选择的 3 种产品中进行编码,然后使用表单提交数量,它们都单独显示为电影名称和数量。但是当我似乎无法找到一种方法来 fputcsv 分别发送每部电影的电影名称和数量时,我只是重复每一行的最后一部电影和数量,然后当我提交下一部电影和数量时,它会覆盖最后一部电影一个。
我的购物车页面代码(没有显示所有代码,因为大多数是 css,if/else 语句只是我拼命尝试至少得到第二部电影的名称)
<?php
session_start();
?>
<?php
var_dump ($_POST);
if(!isset($_SESSION['cart'])) {
$_SESSION['cart']=[];
}
$cart = &$_SESSION['cart'];
$movieName = $_POST['movie_name'];
$quantity = $_POST['qty'];
if(isset($movieName)) {
$currentQuantity = $cart[$movieName];
$cart[$movieName] = $currentQuantity + $quantity;
} else {
$cart[$movieName] = $quantity;
}
var_dump($_SESSION);
?>
<?php
$list = array
(
"$movieName,$quantity",
"$movieName,$quantity",
"$movieName,$quantity",
);
$file = fopen("orders.txt","w");
foreach ($list as $line)
if ($movieName = 'Game of Thrones: Season 1') {
}
else if ($movieName = 'Friends Season 1') {
}
else if ($movieName = 'Inception') {
}
{
fputcsv($file,explode(',',$line));
}
fclose($file); ?>
提交数据的表单之一:
<form action="cart.php" method="post">
<input type="hidden" name="movie_name" value= "Game of Thrones: Season 1" />
<input type = "hidden" name = "id" value = "M01" />
<br>
<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>
如果您想/需要查看任何其他代码,请告诉我,我会编辑我的帖子以包含它。感谢您花时间阅读。
【问题讨论】:
-
您能解释一下业务流程是什么吗?看起来您正在将商品添加到购物车,但还将购物车保存到文本文件中。在这里而不是在结帐过程中这样做的目的是什么?每次将某些东西添加到购物车时,是否打算将购物车转储到文件中,并且该文件应始终代表购物车的状态?文件是在站点的所有用户之间共享,还是特定于会话的实际文件路径?我无法想象这将如何在现实世界中发挥作用。
-
最上面的代码目前在 cart.php 页面中,但经过考虑后我决定将其移至 checkout.php (它们具有相同的数组代码,所以它不应该有太大变化只需要移动 fputscv 代码)。目的是让它将每个订单写入 txt 文件,如果它将每个用户订单写入该文件会很好,但只要它一次写入 1 个用户,现在就足够了。抱歉,我应该更详细地介绍