使用PHP将参数传递回相同的表单

时间:2010-10-01 09:29:18

标签: php forms isset

我正在尝试简单地设置一个变量,并将其传递回调用的相同PHP脚本,但它不起作用。

第一次运行脚本时,我会看到我期望在屏幕上看到的内容

  

您的商店是美国,您的语言是   烯

如果我然后选择英国并按提交,我会看到以下行

  

您的商店是,您的语言是

我的示例代码是

<?php
if(isset($_POST['submit'])){
    $store = $_GET['store'];
    $lang=en;
}
else 
{
$store=143441;
$lang=en;
} 
switch ($store)
 {
case "143441":
$storename="USA";
break;
case "143444":
$storename="UK";
break;
}
?>
<head>
</head>
<body>
<form name="store" method="post" action="test.php">
<select name="Store">
<option value="143441">USA</option>
<option  value="143444">UK</option>
</select>
<INPUT TYPE="submit" name="submit" value="submit">
</form>
<?php  echo "Your store is " . $storename . " and your language is " . $lang; ?>
</body>
</html>

3 个答案:

答案 0 :(得分:1)

您的示例代码:

if(isset($_POST['submit'])){
    $store = $_GET['store'];

你的问题是你正在混合$ _POST和$ _GET。

由于您的表单正在执行POST操作,因此您应该对这两行使用$ _POST。

如果你不确定它是一个帖子还是一个获取请求,你也可以使用$ _REQUEST,但通常情况下你最好在你的情况下使用$ _POST,因为你知道它总是如此一个帖子。

答案 1 :(得分:1)

在第一个if子句中使用

$store = $_POST['Store'];  //be aware of the upper case!!!!!

而不是

$store = $_GET['store'];

一切都会好的。

答案 2 :(得分:0)

您应该使用$_POST['store']代替$_GET['store'],因为它是POST请求参数。

<?php
if(isset($_POST['submit'])){
    $store = $_POST['store'];
    $lang='en';
}
else{
    $store=143441;
    $lang='en';
} 
switch ($store){
case "143441":
   $storename="USA";
   break;
case "143444":
   $storename="UK";
   break;
}
?>