2011-05-20 80 views
0
<form method="get" action=..... > 

         Food <input name="food" type="text" size="1" /> 
        Pizza <input name="pizza" type="text" size="2" /> 
        Drink <input name="drink" type="text" size="2"/>   

現在我想傳遞一個第三個變量是食物+比薩+飲料在URL 的串聯,我不希望創建一個新的<input name="total" type="text" size="2"/>如何在不使用類型的情況下使用GET傳遞變量?

這可能嗎?

編輯:

我想在提交值之前做到這一點。

I will have a url like 
http://www.abc.com/&food=tasty&pizza=cheeze&drink=pepsi 
I want the url to be 
http://www.abc.com/&food=tasty&pizza=cheeze&drink=pepsi&total=tastypizzacheezepepsi 
+0

你怎麼會有人區分訂購11食物和2個比薩餅和喝1個V.S.有人點了1份食物和1份比薩和21份飲料?兩者都是'1121'。 – 2011-05-20 16:15:22

+0

@MarcB我假設OP意味着添加,而不是連接 – Neal 2011-05-20 16:18:23

+0

re:你的更新:你爲什麼要添加一個get變量? – Neal 2011-05-20 16:19:15

回答

3

那麼一旦提交正好連接(後驗證)

$total = $_GET['food'] + $_GET['pizza'] + $_GET['drink']; 
     //assuming the _GETs were numbers, otherwise use `.` to concatenate 

或者,如果你不想做,你必須做在客戶端一些JavaScript魔術(但這並不總是值得信賴)

+1

你打算使用'.'而不是'+'連接字符串值,也許? – 2011-05-20 16:14:33

+0

@Phoenix,取決於信息是什麼。 OP使用'+' – Neal 2011-05-20 16:15:08

+0

啊我明白你的意思了。我並沒有想到這些輸入的值可能是數字。 – 2011-05-20 16:16:19

4

爲什麼不只是在服務器端做呢?

$allTogether = $_GET["food"] . $_GET["pizza"] . $_GET["drink"]; 
1

這應該做的伎倆

$sep = ""; //if you want a space in between each just change this to a space. 
$concat = implode($sep, array($_GET['food'], $_GET['pizza'], $_GET['drink'])); 
2

假設你不喜歡上面使用PHP來連接的答案,你可以使用JavaScript來做到這一點。

<script type="text/javascript"> 
function addTotal(food, pizza, drink) { 
    document.getElementById("total").value = food + drink + pizza; 
} 
</script> 

<form method="get" name="fname" action="" onSubmit="addTotal(document.fname[0].value,document.fname[1].value,document.fname[2].value)" > 
Food <input name="food" type="text" size="1" /> 
Pizza <input name="pizza" type="text" size="2" /> 
Drink <input name="drink" type="text" size="2"/> 
<input type="hidden" name="total" id="total" value="" /> 
</form> 

而在你的PHP文件,你現在應該得到

$_GET['food']; 
$_GET['pizza']; 
$_GET['drink']; 
$_GET['total']; 
相關問題