2010-11-11 43 views
1

我正在为网站构建一个动态(食物)菜单系统。用户将能够添加和删除菜单项,因为他们喜欢和改变价格等。如果菜单是静态的,然后我会以一个静态的形式你将如何解决这个PHP/MySQL

<form id="order_form" action="order.php" method="POST" class="form"> 
<ul> 
<li>cheese burger<input type="text" name="cheese_burger_items" /></li> 
<li>bacon burger<input type="text" name="bacon_burger_items" /></li> 
<li>steak burger<input type="text" name="steak_burger_items" /></li> 
<li>fish burger<input type="text" name="fish_burger_items" /></li> 
<li>lamb burger<input type="text" name="lamb_burger_items" /></li> 
<input type="submit" value="Submit" /> 
</form> 

然后order.php就开始出像

<?php 
$cheese_burger_items = $_POST['cheese_burger_items']; 
$bacon_burger_items = $_POST['bacon_burger_items']; 
$steak_burger_items = $_POST['steak_burger_items']; 
$fish_burger_items = $_POST['fish_burger_items']; 
$lamb_burger_items = $_POST['lamb_burger_items']; 
?> 

这显然是一个非常简单的观点。

项目数量也会有所不同。这样做的动态方法是什么?我想输入'名称'我可以使用数据库中的索引名称,但这并不能真正帮助我在order.php中,因为我需要为每个uniqe项目设置一个POST。

回答

4

我会构建一个post数组数组,并利用输入名称中的php []选项。

<html> 
    <li> 
     Cheese Burgers 
     <input name='itemID[]' type='hidden' value='$itemID' /> 
     <input name='itemCount[]' type='text' value='' /> 
    </li> 
</html> 

然后你在PHP端你可以匹配ITEMID [0] ITEMCOUNT [0]

+0

很酷,我不知道那个PHP功能,你知道手册的哪一部分被解释吗? – 2010-11-11 22:54:01

+1

@Alberto检查http://php.net/manual/en/language.variables.external.php上的示例#3 – 2010-11-11 22:56:26

+0

感谢您的链接! – 2010-11-11 23:02:37

1

如果这能代表你的菜单项(属性会从您的数据库进行设置):

$item->id = 'burger'; 
$item->title = 'Burger'; 
$item->description = 'This is our plain burger. Why would you buy just this?'; 

然后,这些数组可以代表菜单。

echo $menu[0]->id; //'burger'; 
echo $menu[1]->id; //'cheeseburger'; 

在这一点上,订单基本上是:

<?php foreach($menu as $item): ?> 
<li><?php echo $item->title ?> 
    <input type='text' name='order[items][<?php echo $item->id ?>][amount]'> 
    <span><?php echo $item->description ?></span> 
</li> 
<?php endforeach; ?> 

而且你对它有很好的表现为:

echo $_POST['items']['burger']['amount']; //1 

当然,这是一个简单的例子,那当然可以扩展。