PHP link 添加到购物车图标和数量
PHP link add-to-cart icon and quantity
大家好,我有一个问题,不知道如何解决...
this is how the table looks
我在每个餐厅页面上都有这个菜单。问题是:我不知道如何 link 这个带有数量的添加到购物车图标...(我希望 php 中有 getElementById 函数,但没有)
当我点击图标时,我使用 GET 方法从数据库中获取食物 ID...有什么建议吗?
这是代码:
<?php
session_start();
include('header.php');
?>
<!-- +++++ Projects Section +++++ -->
<div class="container pt">
<div class="row mt">
<div class="col-lg-6 col-lg-offset-3 centered">
<h3>BAGGER DAVE'S</h3>
<hr>
<p>Bagger Dave's is an American Tavern restaurant chain that was founded in Michigan in 2008.
The restaurant specializes in Craft Burgers, beer and also sells macaroni and cheese,
chili, beer, wine, and bourbon.</p>
</div>
</div>
<div class="row mt centered">
<div class="col-lg-8 col-lg-offset-2">
<p><img class="" src="assets/img/portfolio/5.jpg" alt="" style="position: centered"></p>
<br>
<h3 id="menu">MENU</h3>
<br>
<br>
<table border="2">
<tr>
<td style="font-size: 20px"><b>food name</b></td>
<td style="font-size: 20px"><b>ingradients</b></td>
<td style="font-size: 20px"><b>price €</b></td>
<?php
if (isset($_SESSION["login_user"])) {
echo "<td style='font-size: 20px'><b>quantity</b></td>";
}
?>
</tr>
<?php
$conn = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
$sql = "select * from meals where restaurant_id='5'";
$result = $conn->query($sql);
$n = $result->num_rows;
if ($result->num_rows > 0) {
// output data of each row
$i = 0;
while($row = $result->fetch_assoc()) {
//echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"] . "<br>";
echo "<tr>";
echo "<td>".$row["meal_name"]."</td>";
echo "<td>".$row["ingradients"]."</td>";
echo "<td>".$row["price"]."</td>";
if (isset($_SESSION["login_user"])) {
echo "<td><input type='number' id='".$row['id']."' size='2' min='1' max='20' value='1'></td>";
echo "<td><a href='restaurant05.php?food_id=".$row["id"]."'><img src='assets\img\shopping_cart.png'></a></td>";
}
echo "</tr>";
}
}
if (isset($_GET["food_id"])) {
if (!isset($_SESSION["sum"])) {
$_SESSION["sum"] = 0;
}
if (!isset($_SESSION["counter"])) {
$_SESSION["counter"] = 0;
}
$fid = $_GET["food_id"];
$sql2 = "select price from meals where id='".$fid."'";
$result = $conn->query($sql2);
$row = $result->fetch_assoc();
//echo $row["price"];
$_SESSION["sum"] += $row["price"];
$_SESSION["counter"]++;
//echo "TOTAL: " . $_SESSION["sum"];
echo '<script>document.location.replace("restaurant05.php#menu");</script>';
}
?>
</table>
</div>
</div><!-- /row -->
</div><!-- /container -->
<?php
include('footer.php');
?>
您需要为 table
的每一行生成表格
<form action="" method="get">
<input name="quantity" type="number" min="1" max="20" value="1" />
<input name="food_id" type="hidden" value="{$row["id"] // it's a variable, not a current code}" />
<input name="addToBasket" type="submit" />
</form>
根据需要将此表单解析为 tr、td(s),并使用购物车图标设置提交按钮的样式,然后您应该检查类似
的内容
<?php
if(isset($_GET['addToBasket'])){
$quantity = $_GET['quantity'];
$foodId = $_GET['food_id'];
}
?>
还有很多其他方法,这一种对您来说应该足够高效和简单。
首先,让我们摆脱红鲱鱼。生成相关 HTML 的代码是这样的:
echo "<td><input type='number' id='".$row['id']."' size='2' min='1' max='20' value='1'></td>";
echo "<td><a href='restaurant05.php?food_id=".$row["id"]."'><img src='assets\img\shopping_cart.png'></a></td>";
其他一切与问题完全无关。我无法访问实际输出,但它应该看起来像这样(我特别觉得它更具可读性):
<td><input type='number' id='31416' size='2' min='1' max='20' value='1'></td>
<td><a href='restaurant05.php?food_id=31416'><img src='assets\img\shopping_cart.png'></a></td>
您的 添加到购物车 脚本需要 GET 参数,因此可以在表单或 link 之间进行选择。但是,这些参数无法固定——它们需要由用户配置。考虑到这一点,您可以选择两种技术:
- 静态HTML:
- 将您的 table 包裹在适当的
<form></form>
标签集中
- 把你当前的link变成一个提交按钮来发送对应的
food_id
- JavaScript:
- 将
onchange
事件处理程序分配给 数量 字段
- 重写行 link 以反映新的金额
由于您的应用已经在使用 JavaScript 选择哪一个主要是个人喜好问题。
我建议您也尝试清理混合了 PHP、SQL、HTML 和 JavaScript 的设计意大利面条代码的传统。最后但同样重要的是,请注意您的食物以任意顺序显示,您有编码问题并且您的网站对 SQL 注入和 XSS 开放。
大家好,我有一个问题,不知道如何解决... this is how the table looks
我在每个餐厅页面上都有这个菜单。问题是:我不知道如何 link 这个带有数量的添加到购物车图标...(我希望 php 中有 getElementById 函数,但没有) 当我点击图标时,我使用 GET 方法从数据库中获取食物 ID...有什么建议吗?
这是代码:
<?php
session_start();
include('header.php');
?>
<!-- +++++ Projects Section +++++ -->
<div class="container pt">
<div class="row mt">
<div class="col-lg-6 col-lg-offset-3 centered">
<h3>BAGGER DAVE'S</h3>
<hr>
<p>Bagger Dave's is an American Tavern restaurant chain that was founded in Michigan in 2008.
The restaurant specializes in Craft Burgers, beer and also sells macaroni and cheese,
chili, beer, wine, and bourbon.</p>
</div>
</div>
<div class="row mt centered">
<div class="col-lg-8 col-lg-offset-2">
<p><img class="" src="assets/img/portfolio/5.jpg" alt="" style="position: centered"></p>
<br>
<h3 id="menu">MENU</h3>
<br>
<br>
<table border="2">
<tr>
<td style="font-size: 20px"><b>food name</b></td>
<td style="font-size: 20px"><b>ingradients</b></td>
<td style="font-size: 20px"><b>price €</b></td>
<?php
if (isset($_SESSION["login_user"])) {
echo "<td style='font-size: 20px'><b>quantity</b></td>";
}
?>
</tr>
<?php
$conn = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
$sql = "select * from meals where restaurant_id='5'";
$result = $conn->query($sql);
$n = $result->num_rows;
if ($result->num_rows > 0) {
// output data of each row
$i = 0;
while($row = $result->fetch_assoc()) {
//echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"] . "<br>";
echo "<tr>";
echo "<td>".$row["meal_name"]."</td>";
echo "<td>".$row["ingradients"]."</td>";
echo "<td>".$row["price"]."</td>";
if (isset($_SESSION["login_user"])) {
echo "<td><input type='number' id='".$row['id']."' size='2' min='1' max='20' value='1'></td>";
echo "<td><a href='restaurant05.php?food_id=".$row["id"]."'><img src='assets\img\shopping_cart.png'></a></td>";
}
echo "</tr>";
}
}
if (isset($_GET["food_id"])) {
if (!isset($_SESSION["sum"])) {
$_SESSION["sum"] = 0;
}
if (!isset($_SESSION["counter"])) {
$_SESSION["counter"] = 0;
}
$fid = $_GET["food_id"];
$sql2 = "select price from meals where id='".$fid."'";
$result = $conn->query($sql2);
$row = $result->fetch_assoc();
//echo $row["price"];
$_SESSION["sum"] += $row["price"];
$_SESSION["counter"]++;
//echo "TOTAL: " . $_SESSION["sum"];
echo '<script>document.location.replace("restaurant05.php#menu");</script>';
}
?>
</table>
</div>
</div><!-- /row -->
</div><!-- /container -->
<?php
include('footer.php');
?>
您需要为 table
的每一行生成表格 <form action="" method="get">
<input name="quantity" type="number" min="1" max="20" value="1" />
<input name="food_id" type="hidden" value="{$row["id"] // it's a variable, not a current code}" />
<input name="addToBasket" type="submit" />
</form>
根据需要将此表单解析为 tr、td(s),并使用购物车图标设置提交按钮的样式,然后您应该检查类似
的内容<?php
if(isset($_GET['addToBasket'])){
$quantity = $_GET['quantity'];
$foodId = $_GET['food_id'];
}
?>
还有很多其他方法,这一种对您来说应该足够高效和简单。
首先,让我们摆脱红鲱鱼。生成相关 HTML 的代码是这样的:
echo "<td><input type='number' id='".$row['id']."' size='2' min='1' max='20' value='1'></td>";
echo "<td><a href='restaurant05.php?food_id=".$row["id"]."'><img src='assets\img\shopping_cart.png'></a></td>";
其他一切与问题完全无关。我无法访问实际输出,但它应该看起来像这样(我特别觉得它更具可读性):
<td><input type='number' id='31416' size='2' min='1' max='20' value='1'></td>
<td><a href='restaurant05.php?food_id=31416'><img src='assets\img\shopping_cart.png'></a></td>
您的 添加到购物车 脚本需要 GET 参数,因此可以在表单或 link 之间进行选择。但是,这些参数无法固定——它们需要由用户配置。考虑到这一点,您可以选择两种技术:
- 静态HTML:
- 将您的 table 包裹在适当的
<form></form>
标签集中 - 把你当前的link变成一个提交按钮来发送对应的
food_id
- 将您的 table 包裹在适当的
- JavaScript:
- 将
onchange
事件处理程序分配给 数量 字段 - 重写行 link 以反映新的金额
- 将
由于您的应用已经在使用 JavaScript 选择哪一个主要是个人喜好问题。
我建议您也尝试清理混合了 PHP、SQL、HTML 和 JavaScript 的设计意大利面条代码的传统。最后但同样重要的是,请注意您的食物以任意顺序显示,您有编码问题并且您的网站对 SQL 注入和 XSS 开放。