[請益] 關於checkbox勾選後 數值加總問題(已解決)

看板PHP作者 (TK)時間15年前 (2010/07/06 23:26), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串1/1
今天嘗試寫一個利用checkbox勾選後, 將有勾選的checkbox(產品)所給定的值相加, 應用到點餐的計價。 不過寫完後發現點小問題... 請問checkbox沒勾選是代表數值為0,還是說就是一個空白? 如果是後者的話,是不是就不能用 $sum把有勾沒勾的同時加總? 請問如果是後者的話, 應該要用甚麼樣的指令告訴程式沒勾選的數值是0, 而有勾選的就按照設定的值顯示? (請問這邊是應該要用if跟elseif嗎?) 以下是小弟的程式碼: 1.勾選表單頁(hw1-in.php) <html> <!-hw2-in.html--> <form action= "hw2-out.php" method="post"> <p>主廚沙拉($100):<input type="checkbox" name="var_1-1" value="100"</p> <p>凱薩沙拉($100):<input type="checkbox" name="var_1-2" value="100"</p> <p>今日濃湯($100):<input type="checkbox" name="var_2-1" value="100"</p> <p>牛尾清湯($100):<input type="checkbox" name="var_2-1" value="100"</p> <p>肋眼牛排($400):<input type="checkbox" name="var_3-1" value="400"</p> <p>梅花豬排($300):<input type="checkbox" name="var_3-2" value="300"</p> <p>菲力龍鱈($999):<input type="checkbox" name="var_3-3" value="999"</p> <p>巧克力聖代($100):<input type="checkbox" name="var_4-1" value="100"</p> <p>輕乳酪蛋糕($100):<input type="checkbox" name="var_4-2" value="100"</p> <p>結算總額:<input type="submit" name="var_sub" value="總計"</p> <form target="_blank"></form> </form> </html> 2.按下submit後(總計)跳出另一頁面顯示加總所有數值的情形(hw2-out.php) <html> <!-hw2-out.html--> <title>計算總價結果</title> <body> <? echo ("主廚沙拉:".$var_1-1."<br>"); echo ("凱薩沙拉:".$var_1-2."<br>"); echo ("今日濃湯:".$var_2-1."<br>"); echo ("牛尾清湯:".$var_2-2."<br>"); echo ("肋眼牛排:".$var_3-1."<br>"); echo ("梅花豬排:".$var_3-2."<br>"); echo ("菲力龍鱈:".$var_3-3."<br>"); echo ("巧克力聖代:".$var_4-1."<br>"); echo ("輕乳酪蛋糕:".$var_4-2."<br>"); //以上應改成下述, echo ("主廚沙拉:".$_POST['var_1-1']."<br>"); echo ("凱薩沙拉:".$_POST['var_1-2']."<br>"); echo ("今日濃湯:".$_POST['var_2-1']."<br>"); echo ("牛尾清湯:".$_POST['var_2-2']."<br>"); echo ("肋眼牛排:".$_POST['var_3-1']."<br>"); echo ("梅花豬排:".$_POST['var_3-2']."<br>"); echo ("菲力龍鱈:".$_POST['var_3-3']."<br>"); echo ("巧克力聖代:".$_POST['var_4-1']."<br>"); echo ("輕乳酪蛋糕:".$_POST['var_4-2']."<br>"); $sum = $var_1-1 + $var_1-2 + $var_2-1 + $var_2-2 + $var_3-1 + $var_3-2 + $var_3-3 + $var_4-1 + $var_4-2; /*以上應該改成下述:*/ $sum = $_POST['var_1-1'] + $_POST['var_1-2'] + $_POST['var_2-1'] + $_POST['var_2-2'] + $_POST['var_3-1'] + $_POST['var_3-2'] + $_POST['var_3-3'] + $_POST['var_4-1'] + $_POST['var_4-2']; echo ("總計為:".$sum."<br>"); ?> </body> </html> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.123.174

07/06 23:45, , 1F
你的程式是可以執行的 沒有問題!! 跑出來正常
07/06 23:45, 1F
可是我測試的結果是勾完點submit後,出現以下錯誤訊息: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\AppServ\www\hw2-out.php on line 8 所以有點懷疑是不是我漏了甚麼還是有寫錯... (debug真的不容易,請問有書可以教人怎麼debug嗎?~XD)

07/07 00:07, , 2F
檢察一下哪裡沒有加雙引號或者是連接符號
07/07 00:07, 2F
謝謝iloveelva~的確有雙引號未加的問題,已經修正了^^ 感謝

07/07 00:33, , 3F
echo "主廚沙拉".$_POST['var_1-1']."<br>";
07/07 00:33, 3F

07/07 00:35, , 4F
發現跟你前一個問題是一樣的= =
07/07 00:35, 4F

07/07 00:36, , 5F
可以研究一下 $_GET[] 和 $_POST[]的用法
07/07 00:36, 5F
謝謝cokellen,我後來也查覺到是未將 $變數修改成 $_POST['變數'] XD 的確跟上一個問題犯一樣毛病XD~ 改了之後就可以正常執行了~ 然後$sum那邊也必須要改成 $_POST['變數']相加, 不然照先前的打法會出現怎麼加都是 -15的狀況 [這邊得思考一下為甚麼是-15...] 看起來應該是 $var_X-Y的 -Y那邊全都相加,就變成-15了, 所以應該在 $var_X-Y外圍加上括號,告訴程式把刮號內的看做是一個變數名稱 ※ 編輯: tk102 來自: 218.166.123.174 (07/07 00:57) ※ 編輯: tk102 來自: 218.166.120.119 (07/07 01:11)

07/07 01:11, , 6F
^^ 學習debug,最好的老師就是Google~
07/07 01:11, 6F

07/07 01:12, , 7F
其實你那樣寫也可以~只不過要去PHP.ini裡面修改參數
07/07 01:12, 7F

07/07 09:09, , 8F
學習debug,最好的方法是先安裝可以自動debug的工具。
07/07 09:09, 8F
文章代碼(AID): #1CCqifV5 (PHP)
文章代碼(AID): #1CCqifV5 (PHP)