php - 想将foreach循环中的变量传递给另一个php文件
问题描述
if (!empty($_SESSION["shopping_cart"])) {
$total = 0;
foreach ($_SESSION["shopping_cart"] as $keys => $values) {
?>
<tr>
<td><?php echo $values["item_name"]; //$GLOBALS['x']= $values["item_name"] $_COOKIE["iname"] = $values["item_name"] ?></td>
<td><?php echo $values["item_quantity"];//$GLOBALS['y']= $values["item_quantity"]//$_SESSION["iquantity"] = $values["item_quantity"]?></td>
<td>₹ <?php echo $values["item_price"]; //$GLOBALS['z']= $values["item_price"]//$_SESSION["iprice"] = $values["item_price"]?></td>
<td>₹ <?php echo number_format($values["item_quantity"] * $values["item_price"], 2); ?></td>
<?php
$menus = array("name"=>$values["item_name"],
"quan"=>$values["item_quantity"],
"price"=>$values["item_price"],
"id"=>$values["item_id"]);
?>
<td><a href="index.php?action=delete&id=<?php echo $values["item_id"]; ?>"><span class="text-danger">Remove</span></a></td>
</tr>
<?php
$total = $total + ($values["item_quantity"] * $values["item_price"]);
}
?>
<tr>
<td colspan="3" align="right">Total</td>
<td align="right">₹ <?php echo number_format($total, 2); ?></td>
<td></td>
</tr>
<tr>
<td colspan="5" align="right"> <input type="submit" value="Confirm" class="btn btn-primary">
</td>
</tr>
</form>
<?php
}
基本上我正在尝试使用 sql、html 和 php 创建一个自助餐厅管理系统。所以我想将用户订购的项目插入到一个表中,因为我应该将变量从一个 php 文件的 foreach 传递到另一个 php 文件。我想将 $values["item_name"], $values["item_quantity"], $values["item_price"] 传递给另一个 php 文件,以将它们的值插入到下面的 sql 表中:
<?php
include_once('index.php');
$i_name = ("item_name");
$i_quantity =("item_quantity");
$i_price =("item_price");
$i_id = ("item_id");
/*$i_name = $_SESSION[$menus["name"]];;
$i_quantity =$_SESSION[$menus["quan"]];
$i_price = $_SESSION[$menus["price"]];
$i_id = $_SESSION[$menus["id"]];
*/
session_start();
$un = $_SESSION['username'];
$host = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "cart";
$conn = new mysqli($host, $dbusername, $dbpassword, $dbname);
if (mysqli_connect_error()) {
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
} else {
$sql = "INSERT INTO tbl_order (itemname, itemquantity, itemprice, itemid, username) values ('$i_name','$i_quantity','$i_price','$i_id','$un')";
if ($conn->query($sql)) {
header("location: lastpageFINAL.php");
} else {
echo "Error: " . $sql . "" . $conn->error;
}
$conn->close();
}
echo '<br /><a href="orderstatus1.php">';
//echo '<br /><a href="index.php">';
?>
我尝试使用全局变量,但无法成功。
解决方案
回到我还是大学生的时候,我的一位老师告诉我们,你反复需要执行的代码叫做“函数”。在我看来她是对的。但是,您也可以不使用函数,即使这不是特别可取的。你可以使用include
/require
来达到这个目的:
foo.php
$something = 0;
for ($i = 1; $i < 100; $i++) {
$something += $i;
require "bar.php";
}
酒吧.php
echo $something."<br>";
如您所见,$something
在 bar.php 中可见,因为它是在需要文件之前初始化的。这就是您可以将变量“传递”到文件的方式。但是,同样,建议定义函数,只需要它们一次,并在需要时调用它们。更好的是实现类,但首先要学习函数编程。
作为旁注,我应该提到:注意SQL 注入并使用参数化查询而不是字符串插值。
推荐阅读
- javascript - 如何验证从文件类型的输入元素中选择的文件类型
- azure-active-directory - 尝试通过 API 访问 SFB
- oracle10g - Oracle 10g 上的浏览器兼容性问题
- asp.net-core - 获取 HTTP POST 并将其转换为 ASP.NET Core 标识的最直接方法是什么?
- bash - sh:2:./ci.sh:语法错误:单词意外
- c# - 使用缓冲区将 byte[] 转换为 Base64 字符串(以避免 OOM)
- c# - vbs到C#的转换,无法获取ScriptingEngine
- android - 如何在数据绑定中使用泛型类的变量?
- python-3.x - 使用 Matplotlib 和 FuncAnimation 为具有不同 FPS 的对象设置动画
- javascript - 根据选择下拉显示或隐藏多个字段 - jquery