你会如何解决这个php / mysql

时间:2010-11-11 21:34:07

标签: php javascript

我正在为网站构建动态(食物)菜单系统。用户可以随意添加和删除菜单项并更改价格等。如果菜单是静态的,那么我会有一个静态表单,例如

<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。

2 个答案:

答案 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

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