Передача параметров обратно в ту же форму с использованием PHP - PullRequest
1 голос
/ 01 октября 2010

Я пытаюсь просто установить переменную и передать ее обратно в тот же PHP-скрипт, который вызывается, однако это не работает.

При первом запуске скрипта я вижу на экране то, что ожидаю увидеть

Ваш магазин в США и ваш язык ан

Если я затем выберу Великобританию и нажму "отправить", я вижу следующую строку

Ваш магазин и ваш язык en

Мой пример кода

<?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 ]

1 голос
/ 01 октября 2010

Ваш пример кода:

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

Ваша проблема в том, что вы смешиваете $ _POST и $ _GET.

Поскольку ваша форма выполняет действие POST, вы должны использовать $ _POST для обеих этих строк.

Вы также можете использовать $ _REQUEST, если вы не уверены, будет ли это публикация или запрос на получение, но обычно лучше использовать $ _POST в вашем случае, поскольку вы знаете, что это всегда сообщение.

1 голос
/ 01 октября 2010

В первом предложении if используйте

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

вместо

$store = $_GET['store'];

и все будет хорошо.

0 голосов
/ 01 октября 2010

Вы должны использовать $_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;
}
?>
...