【问题标题】:POST $_SESSION variable using HTML使用 HTML 发布 $_SESSION 变量
【发布时间】:2018-05-08 02:00:28
【问题描述】:

希望你们一切都好。我不太清楚标题的措辞,所以我很抱歉。

我有这个代码:

<form method="POST" action="checkoutManager.php" name="submitOrder">
<?php

if(isset($_SESSION["cart_item"])) {
$item_total = 0;

$total;

foreach ($_SESSION["cart_item"] as $item) {
    $item_total += (($item["price"]-$item["discount"])*$item["quantity"]);

    $total = $total + $item_total;

?>

<tr>
<td class="product-name">
    <?php echo $item["name"]; ?> <strong class="product-qty"> × <?php echo $item["quantity"]; ?></strong>
</td>

<td class="product-total">
    <span class="amount"><?php echo "$".$item_total; ?></span>
</td>
</tr>

<?php
$item_total = 0;

    }
}
?>


<input type="submit" name="btnSubmitOrder" value="Submit Order">
</form>

我将如何使用表单标签提交所有 $_SESSION 项目。我曾尝试以数组形式提交,但失败了。所有帮助表示赞赏。提前致谢

【问题讨论】:

  • 您的表单没有提交任何购物车项目
  • 在表单中传递您的所有项目,例如 ">
  • 它必须像 name="price[]"

标签: php html arrays session post


【解决方案1】:

你为什么不创建隐藏元素,比如

<input type="hidden" name="total" value="<?php echo $total; ?>">

您需要的任何内容都使用隐藏输入字段,您可以在单击提交按钮后通过在 checkoutManager.php

中使用 $_POST 访问它们

更新

您只需使用会话处理checkoutManager.php 中的所有字段,您不需要提交任何表单。创建一个到 checkoutManager.php 的链接并在那里进行所有计算

【讨论】:

  • 但是我希望能够提交$_SESSION的东西但是有多个。
【解决方案2】:

试试下面的代码。 在这段代码中,我添加了一个隐藏计数字段。 通过使用计数,您可以在提交后使用 for 循环。 我只显示一个名称输入,但您可以在表单循环中添加多个输入。 我还连接了 $i 变量,因此所有输入名称都不同,如 name1、name2、... U 可以在提交后使用它作为 $_POST['name'.$i] 提交。

<form method="POST" action="checkoutManager.php" name="submitOrder">
<?php
<input type="hidden" name="count" value="<?php echo count($_SESSION["cart_item"]); ?>">
$i=0;
foreach ($_SESSION["cart_item"] as $item)
 {
?>
<input type="text" name="input_name<?php echo $i; ?>" value="<?php echo $item['name']; ?>" />
<?php
$i++;
}
?>
<input type="submit" name="btnSubmitOrder" value="Submit Order">
</form>

【讨论】:

    【解决方案3】:

    您需要在foreach 循环中为您在$_SESSION["cart_item"] 中的所有项目添加输入字段。提交后,您需要再次使用foreach 将您的所有项目一一插入到您的临时表中。

    更新您的代码如下:

    <form method="POST" action="checkoutManager.php" name="submitOrder">
    <?php
        if(isset($_SESSION["cart_item"])) {
        $item_total = 0;
        $total = 0;
        foreach ($_SESSION["cart_item"] as $item) {
            $item_total += 
    (($item["price"]-$item["discount"])*$item["quantity"]);
            $total = $total + $item_total;
        ?>
        <input type="hidden" name="price[]" value="<?php echo $item["price"]; ?>">
        <input type="hidden" name="name[]" value="<?php echo $item["name"]; ?>">
        <input type="hidden" name="discount[]" value="<?php echo 
    $item["discount"]; ?>">
        <input type="hidden" name="quantity[]" value="<?php echo 
    $item["quantity"]; ?>">
    <tr>
        <td class="product-name">
            <?php echo $item["name"]; ?> <strong class="product-qty"> × <?php 
    echo $item["quantity"]; ?></strong>
        </td>
        <td class="product-total">
            <span class="amount"><?php echo "$".$item_total; ?></span>
        </td>
    </tr>
    <?php
        $item_total = 0;
            }
        }
        ?>
    <input type="submit" name="btnSubmitOrder" value="Submit Order">
    </form>
    

    您可以通过以下方式在提交后访问所有输入字段。

    foreach($_POST['name'] as $key => $val){
        echo $_POST['name'][$key];
        echo $_POST['price'][$key];
        echo $_POST['discount'][$key];
        echo $_POST['quantity'][$key];
    }
    

    希望对你有帮助!

    【讨论】:

    • 嘿,你能给我一个我在 checkoutManager.php 中需要的 foreach 语句的例子
    • 是的,和你在这里使用的一样; foreach($_POST['name'] as $name){ echo $name; }
    • 但是当您添加到购物车并从购物车中的临时表中获取所有数据时,将所有内容存储在您的临时表中。
    • 每当您从会话中将任何项目添加到购物车页面时,首先将该项目存储在您的临时表中。明白我的意思了吗?
    • 是的。我明白。我现在正在尝试将所有这些都放入数据库中,但这应该很容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2017-12-12
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多