作者 主題: 請問如何把在陣列裡面的訂'  (閱讀 2809 次)

0 會員 與 1 訪客 正在閱讀本文。

mike17280

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
請問如何把在陣列裡面的訂'
« 於: 2011-01-13 19:38 »
小弟最近在寫訂餐系統以下是參考php課本寫出來的訂餐系統

訂餐表單:
代碼: [選擇]
<p></p>
<!--1.和風鮮蔬咖哩飯-->

<p>
1.和風鮮蔬咖哩飯
</p>
<p>
<img src="images/10.jpg"border="1">
</p>
<p>
和風鮮蔬咖哩飯數量:<select name ="Quantity[和風鮮蔬咖哩飯]">
</p>
<p>
<?php
for($i=0;$i<=10;$i++)
$optionStr .="<option>$i</option>\n";
echo 
$optionStr
?>

</select>
<!--2.Q嫩雞米花-->
<p>
2.Q嫩雞米花
</p>
<p>
<img src="images/11.jpg"border="1">
</p>
<p>
Q嫩雞米花數量:<select name ="Quantity[Q嫩雞米花]">
</p>
<p>
<?php echo $optionStr ?>
</select>
</p>
<!--3.脆嫩肥腸-->
<p>
3.脆嫩肥腸
</p>
<p>
<img src="images/12.jpg"border="1">
</p>
<p>
脆嫩肥腸數量:<select name ="Quantity[脆嫩肥腸]">
</p>
<p>
<?php echo $optionStr ?>
</select>
</p>
<!--4.鮭香茶泡飯-->
<p>
4.鮭香茶泡飯
</p>
<p>
<img src="images/13.jpg"border="1">
</p>
<p>
鮭香茶泡飯數量:<select name ="Quantity[鮭香茶泡飯]">
</p>
<p>
<?php echo $optionStr ?>
</select>
</p>
<!--5.味付海苔飯-->
<p>
5.味付海苔飯
</p>
<p>
<img src="images/14.jpg"border="1">
</p>
<p>
味付海苔飯數量:<select name ="Quantity[味付海苔飯]">
</p>
<p>
<?php echo $optionStr ?>
</select>
</p>
<!--按鈕 "確認訂餐" And "取消訂餐" -->
<p align=center>
<input value="確認訂餐" type="submit">
<input value="取消訂餐" type="reset">
</p>
==============================================================================================
處理訂單到appsever的表單:

代碼: [選擇]
<?php session_start(); ?>
<?php
header
(&#39;content-type: text/html; charset=utf-8&#39;);
$username $_POST[&#39;username&#39;];
$telephone $_POST[&#39;telephone&#39;];
// $arr 陣列以產品名稱為索引, 價格為元素值
$arr = array(&#39;和風鮮蔬咖哩飯&#39;=>99,
&#39;Q嫩雞米花&#39;=>69,
&#39;脆嫩肥腸&#39;=>129,
&#39;鮭香茶泡飯&#39;=>99,
&#39;味付海苔飯&#39;=>99 );

// 檢查 $_POST[&#39;Quantity&#39;] 是否為 null, 若是, 表示使用者不是由飲料訂
// 購網頁 (Ch04-17.php) 進入此網頁的, 此時即顯示飲料訂購網頁的連結,
// 並用 exit() 結束程式 (詳見 5-8 節), 不做後續的表單處理
if($_POST[&#39;Quantity&#39;] === null) {
echo "請先進入<a href=&#39;index2.php&#39;>點餐網頁</a>。";
exit(); 
// 結束程式
}

// 使用 foreach 迴圈處理 $_POST[&#39;Quantity&#39;] 中的每一個元素,
// 其中先檢查訂購杯數是否為零, 不是零即產生梢後要輸出的
// 訊息字串、計算總價、總杯數。
foreach($_POST[&#39;Quantity&#39;] as $name => $cup){
if($cup!=0) { // 如果所點的杯數不是零才做處理
$str .= $name $cup 份<br />"// 串接訊息字串
$sum += $cup $arr[$name]; // 累加總價
$totalCup += $cup// 累加總杯數
}
}

// 檢查若杯數為 0, 表示使用者未選購即送出表單, 此時僅顯示相關訊息;
// 若杯數不為 0, 即輸出剛才建立的訊息字串、計算總價、總杯數等值。
if ($totalCup == 0) {
echo &
#39;親愛的顧客, 您未選購任何產品!&#39;;
echo "請回點餐網頁重新點餐。";
echo &
#39;<meta http-equiv=REFRESH CONTENT=2;url=index2.php>&#39;;
exit(); // 結束程式
}
else {
echo&
#39;點餐成功!! <br />&#39;;
echo "帳號: $username <br />";
echo 
"電話: $telephone <br />";
echo &
#39;點餐資料如下!!<br />&#39;;
echo $str;
echo 
"總共 $totalCup 份<br />";
echo 
"總計 $sum 元(台幣)<br />";
echo &
#39;如果您有點餐錯誤或想更改,請打以下電話來聯絡我們!!<br />&#39;;
echo &#39;(02)123-456<br />&#39;;
echo &#39;如果有要更改點餐,限點餐時間前30分鐘更改,過期則無法更改,感謝您的配合!!<br />&#39;;
echo &#39;此外點餐金額超過1000元(含)以上,請先來店付訂金,如果無先付訂金,則視同點餐無效,感謝您的配合!!<br />&#39;;
}
?>

<?php
include_once("mysql_connect.inc.php");
$username $_POST[&#39;username&#39;];
$telephone $_POST[&#39;telephone&#39;];
$Quantity $_POST[&#39;Quantity&#39;];
//新增資料進資料庫語法
$sql "insert into menu (username,telephone,str,sum) values (&#39;$username&#39;,&#39;$telephone&#39;,&#39;$str&#39;,&#39;$sum&#39;)";
if(
mysql_query($sql))
{
echo &
#39;<a href="index2.php">回到首頁</a> <br />&#39;;
}
else
{
echo &
#39;點餐失敗!&#39;;
echo &#39;<meta http-equiv=REFRESH CONTENT=2;url=index2.php>&#39;;
}
?>

==============================================================================================
問題:
目前課本教我的資料表存取方式:
欄位名稱:username(帳號),telephone(電話),str(訂餐資料都放在這邊),sum(總計)

我想把資料表格式改成這樣來存取:
欄位名稱:username(帳號),telephone(電話),a1(和風鮮蔬咖哩飯),a2(Q嫩雞米),a3(脆嫩肥腸),a4(鮭香茶泡飯),a5(味付海苔飯),sum(總計)

然後我是想在a1(和風鮮蔬咖哩飯),a2(Q嫩雞米),a3(脆嫩肥腸),a4(鮭香茶泡飯),a5(味付海苔飯)裡面放訂餐的數量

那請問要如何改寫呢@@? 請好心的大大指導小弟一下 謝謝!!
« 上次編輯: 2011-01-14 00:58 由 mike17280 »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 請問如何把在陣列裡面的訂'
« 回覆 #1 於: 2011-01-14 02:39 »
目前課本教我的資料表存取方式:
欄位名稱:username(帳號),telephone(電話),str(訂餐資料都放在這邊),sum(總計)

我想把資料表格式改成這樣來存取:
欄位名稱:username(帳號),telephone(電話),a1(和風鮮蔬咖哩飯),a2(Q嫩雞米),a3(脆嫩肥腸),a4(鮭香茶泡飯),a5(味付海苔飯),sum(總計)

然後我是想在a1(和風鮮蔬咖哩飯),a2(Q嫩雞米),a3(脆嫩肥腸),a4(鮭香茶泡飯),a5(味付海苔飯)裡面放訂餐的數量

那請問要如何改寫呢@@? 請好心的大大指導小弟一下 謝謝!!

如果 a1~a5 欄位是固定的, 那就在資料表加入這5個欄位
儲存時就分別存入, 也就是 for 迴圈那邊的 $str 不要用累加的
可以先用一個陣列暫存, 寫入DB時再各別指定到欄位裡

mike17280

  • 可愛的小學生
  • *
  • 文章數: 25
    • 檢視個人資料
回覆: 請問如何把在陣列裡面的訂'
« 回覆 #2 於: 2011-01-14 10:02 »
小弟還有一點聽不太懂

"可以先用一個陣列暫存, 寫入DB時再各別指定到欄位裡"

這邊要怎麼改寫?  請指導小弟一下  謝謝!!

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: 請問如何把在陣列裡面的訂'
« 回覆 #3 於: 2011-01-14 10:07 »
給樓主
如何規劃DB也是一門學問
請先google一下資料庫正規化吧。
弄懂了,你的問題就會迎刃而解。
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/