2010-10-01 3 views
1

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

Первый раз сценарий запуска я вижу, что я ожидал увидеть на экране, который

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

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

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

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

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

ответ

1

В первой, если условие использовать

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

вместо

$store = $_GET['store']; 

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

+0

Блестящий, спасибо! Я тоже пробовал _POST, но это был верхний регистр, который меня поймал, хорошо заметил :) – kitenski

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; 
} 
?> 
1

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

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

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

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

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

Смежные вопросы