2016-07-28 98 views
1

所以我在我的页面上有这段代码menu.php。它显示我数据库内的所有产品,用户可以选择订购哪一种产品。使用foreach循环,如果有更多的项目添加

$prod_query=mysqli_query($con,"SELECT * FROM tblproducts"); 
$num_rows_prod=mysqli_num_rows($prod_query); 

echo "<div class='row'>"; 

while($fetch=mysqli_fetch_assoc($prod_query)) 
    { 
    $ppid=$fetch['p_pid']; 
    $pname=$fetch['p_name']; 
    $pprice=$fetch['p_price']; 
    $pimg='<img src="data:image/jpeg;base64,'. base64_encode($fetch['p_image']). '" width="100%" height="280">'; 
echo " 
<form method='post' action='order.php'> 
<div class='col-lg-4'> 
<div class='panel panel-primary'> 
<div class='panel-heading'> 
<h3 class='panel-title'>$pname | ₱$pprice</h3> 
</div> 
<div class='panel-body'> 
$pimg<hr /> 
<input type='hidden' name='id' value='$ppid'> 
<button class='btn btn-primary' name='btnaddcart' type='submit'>Order Now!</button> 
</div> 
</div> 
</div> 
</form> "; 
    } 

echo "</div>"; 

当用户选择订购哪一个,他现在可以点击订购按钮现在,现在会重定向到order.php页。

而在我的order.php页面中,它显示了他通过使用$ _POST来确定它所选择的产品的表格,其ID为menu.php。

$p=$_POST['id']; 
$order_query=mysqli_query($con, "SELECT * FROM tblproducts WHERE p_pid=$p"); 
$num_rows_order=mysqli_num_rows($order_query); 

while($fetch=mysqli_fetch_assoc($order_query)) 
{ 
    $ppid=$fetch['p_pid']; 
    $pname=$fetch['p_name']; 
    $pprice=$fetch['p_price']; 
} 

foreach ($order_query as $p) { 
echo "<form class='form-horizontal' action='' method='POST'> 
<fieldset> 
<legend>Place Order</legend> 
<table class='table table-striped table-hover'> 
<thead> 
<tr class='success'> 
    <th>Name</th> 
    <th>Price</th> 
    <th>Quantity</th> 
</tr> 
</thead> 
<tbody> 
<tr class='active'> 
    <td>$pname</td> 
    <td>₱$pprice /each</td> 
    <td><div class='form-group'> 
    <div class='col-lg-4'> 
    <input class='form-control' name='inputquant' value='1' type='number'> 
</div> 
</div></td> 
</tr> 
</tbody> 
</table>"; 
} 
    ?> 

<div class="form-group"> 
    <div class="col-lg-10 col-lg-offset-2"> 
    <button type="submit" name="btnaddorder" class="btn btn-primary">Add More Order</button> 
    </div> 
     </div> 

,你可以在的foreach和PHP看到外面有一个添加更多的命令按钮,在那里,如果他/她想要添加更多的产品,用户可以选择。我想要做的是当他点击按钮时,它会再次被重定向到菜单,如果他选择另一个产品添加到他的购物车上,它将被列在页面上。但是当我这样做的时候,它所做的只是通过单击添加更多产品来替换旧值。就像是; '首先我点了一份披萨,然后决定添加一颗玉米片。订单页面显示玉米片和覆盖披萨,而不是显示他们两个。我一直在困扰这个问题一段时间,并决定现在就问这里。如果有人能帮助我,这将是非常好的。提前致谢!

+0

你的问题有许多解决方案。将用户选择的产品存储在数据库中,存储在'$ _SESSION'中。这取决于你自己决定。 –

+0

@u_mulder您认为最简单或首选的解决方案最好吗?因为当我使用会话时,它只保存一个产品。在数据库上时,我不知道如何去做。 – Sync

+0

没有最佳解决方案。如果你不能在会话中存储某些内容 - 你显然会这样做__wrong__,并可以提出另一个问题。 –

回答

1

order.php

//make sure session is started 
$p = $_POST['id']; 

//store id's as an array 
$_SESSION['id'][] = $p; 

//use ',' to combine id's 
$p = implode(',', $_SESSION['id']); 

//MySQL IN Clause 
$order_query=mysqli_query($con, "SELECT * FROM tblproducts WHERE p_pid IN ($p)"); 
$num_rows_order=mysqli_num_rows($order_query); 
+0

你以为你可以一步一步地引导我,非常感谢你! – Sync