台灣最大程式設計社群網站
線上人數
1438
 
會員總數:246213
討論主題:189783
歡迎您免費加入會員
討論區列表 >> PHP >> 使用者輸入數量時即時算出金額小計。
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
使用者輸入數量時即時算出金額小計。
價值 : 20 QP  點閱數:7639 回應數:14
樓主

阿倫
門外漢
0 15
353 23
發送站內信

各位前輩好,小弟目前在寫一個購物網站,遇到了一個難題如下:
xxx商品 金額 使用者輸入數量 = 小計 (使用者輸入數量後即時算出小計)
xxx商品 金額 使用者輸入數量 = 小計 (使用者輸入數量後即時算出小計)
---------------------------------------------------------
運費(即時算出)
總金額(即時算出)

請問這部份的程式是該利用ajax or jqery處理?
該如何寫呢?謝謝。

本篇文章發表於2012-02-02 21:19
1樓
最有價值解答

那顆爛蔥
捐贈 VP 給 那顆爛蔥 檢舉此回應
jQuery就夠了...甚至一般的Javascript就可以了
AJAX...不需要呼叫外部程式,用不到吧?
反正訂單成立了以後,金額還是Server端重新再計算
利用input欄位的javascript事件吧?
比如說...
onKeypress
本篇文章回覆於2012-02-03 02:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
如#1的說法。利用JQ來幫你處理,我用中文說明,你再自行改成ID

由於不知道您的排版,所以無法幫你寫相關的程式
本篇文章回覆於2012-02-03 09:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

阿倫
檢舉此回應
網頁原始碼如下:

本篇文章回覆於2012-02-03 14:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Solty
檢舉此回應
這程式...
$or2="SELECT * FROM `rice_inform1` where id=2 ";
$or3="SELECT * FROM `rice_inform1` where id=3 ";
您這是在開玩笑嗎...
訂購數量<input name="rice_q" type="text" size="5" /> <--這麼搞我還真不知道送到後端要怎麼讀出各別商品的數量
本篇文章回覆於2012-02-04 17:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
一個商品讀一次SQL .....................

這個~~~~你主機真的很強。

為何不一次取出後再跑廻圈來顯示資料啊。這樣小計總計也單純多了。

建議你架構重新打掉重想吧。
本篇文章回覆於2012-02-04 18:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

阿倫
檢舉此回應
我知道用迴圈是較理想的辦法,但目前美編的編排不是先將所有的商品顯示,再讓選購者去點選商品加入購物車,而是一次將所有的商品(三樣而已)顯示由選購者填入數量,再post到下一個頁面確認後才寫入資料庫,所以我才用較簡單的方法來作,目前的重點是在用javascrip的onKeypress 來作出前端讓選購者填入數量後能即時顯示各各小計、運費、總計這才是真的重點,再麻煩各位前輩了,謝謝。
本篇文章回覆於2012-02-05 08:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Solty
檢舉此回應
老實說...你還是給我用迴圈寫出來,不然這樣...不是不能寫,是不想寫一個之後一定要砍掉重練的東西
你必須用迴圈,否則將來會不相容
現階段只有3商品?你可以這樣撈阿
SELECT * FROM `rice_inform1` where id IN(1,2,3) ORDER BY id ASC;
這應用還隱含另一個問題
<input name="rice_q" type="text" size="5" />
你認為重複的name,post出去後PHP接到的$_POST['rice_q']是哪一個商品的數量?...
我比較不客氣的說..樓主基本功非常不足,需要試算的應用,這樣的html佈局是不夠(嚴格來說是這樣js會很難寫)...
如果要我幫你搞出這功能,我必須把你的php,html全部都改掉,然後你什麼都學不到,所以我寧願跟你嘴炮~"~
本篇文章回覆於2012-02-05 09:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

阿倫
檢舉此回應
抱歉商品數量應是 name="rice_q1" name="rice_q2" name="rice_q3",
這樣的程式我想用簡單的方式來寫,將數量post出去後各自*各自的單價後再加總即可,非得用迴圈來作吧?
目前的重點是選購者輸入完數量後即自動加總才是重點(自動加總的資料只是讓選購者看的,正確的資料我用php來運算),謝謝。
本篇文章回覆於2012-02-05 10:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Solty
檢舉此回應
...你沒搞懂重點
這樣吧,你只要用迴圈我就幫你改
然後你就會了解為何要迴圈了
本篇文章回覆於2012-02-05 13:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
樓主您可能不知道像這樣的程式,可以100%的確定,一定不符合且未來一定要變動的程式。
實在是很懶的去想這種的應用「廢物」程式。

真要可以加總。你又不想跑廻圈。那就只有以下這招了。

將數量的名稱改成可以對應的名稱。如rice_q改成rice_q1、rice_q2.......

然後顯示時就直接用數量*金額顯示。最後再用
$allmoney = 金額1*數量1+金額2*數量2+金額3*數量3;
這樣就行了。

日後想再增加商品???請自行修改程式,記得也要讓客戶可以修改。要不然你這程式無法計算。

不知道上面的笑話,你笑的出來嗎???
本篇文章回覆於2012-02-06 09:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

kg
檢舉此回應
計算金額部份用javascript就可作到(不用特地為此用jQuery甚至是Ajax)....
還有就是若你要寫入的商品為複數以上那麼下面這行

請改成


然後後台要抓 $_POST['rice_q']這陣列內個別鍵值的值可用

本篇文章回覆於2012-02-08 16:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

kg
檢舉此回應
還有為何你要顯示一筆資料執行一次select?你不覺得這樣太沒效率了嗎?
正常來講大多試看一頁要顯示幾筆資料用select搭配limit一次抓出資料來
ex:

上面大概意思是從test資料表中的第$obj1筆資料開始往後抓$num筆資料...


若為上面這樣則大概意思為從test資料庫後面數來第$obj1資料開始往前抓$num筆資料....
本篇文章回覆於2012-02-08 17:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

kg
檢舉此回應
還有就是日後你若要增加商品數量且一樣要作小計動作一定需要迴圈(ex:for or while....etc)
不可能不用迴圈來作小計,除非用星大所提方式,但我可以很坦白跟你講這方法一定會被打槍退回來,因為太沒效率...

所以總觀下來我的想法和上面兩位一樣,若我是你的上司看到你這樣的若我是你的code我一定叫你砍掉重作...
本篇文章回覆於2012-02-08 17:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

kg
檢舉此回應
乾脆幫你改code

這樣不是比之前有效率嗎?
本篇文章回覆於2012-02-10 15:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.