2011-05-20 68 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']; 
相关问题