我正在为网站构建动态(食物)菜单系统。用户可以随意添加和删除菜单项并更改价格等。如果菜单是静态的,那么我会有一个静态表单,例如
<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'];
?>
这显然是一种非常简单的观点。
项目数量也会有所不同。这样做的动态方法是什么?我猜输入'name'我可以在数据库中使用索引名称,但这对order.php并没有帮助,因为我需要为每个uniqe项目设置一个POST。
答案 0 :(得分: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]
相匹配答案 1 :(得分: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
当然这是一个简单的例子,当然可以扩展。