2010-11-11 130 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 

當然,這是一個簡單的例子,那當然可以擴展。