我有一个表单,您可以在其中选择一个单选按钮,它应该将选择的内容传输到下一页。我的问题是,无论你选择哪个单选按钮,它总是传输与上一个单选按钮相关的值,而不是你选择的那个。
因此,如果我选择环游世界,那么它带有5而不是10
我需要使用GET方法。
这是我的代码:
$title = array("Around the World"=>"10","Coast to Coast"=>"7","The Big City"=>"5");
foreach($title as $sub=>$s_value) {
echo "$sub $$s_value";
echo '<input type="radio" name="sub" value="', $sub,'">';
echo "<br>";
}
if (empty($_GET["sub"])) {
} else {
$sub = sub_input($_GET["sub"]);
}
if (empty($_GET["s_value"])) {
} else {
$s_value = sub_input($_GET["s_value"]);
}
if (isset($title['sub'])){
$valid=false;
}
这是下一页的代码:
echo "<b>$sub</b><br />";
echo "Base Total: $ $s_value/mon x $month months <br />";
是的,我省略了很多东西,因为我的代码中的其他内容都很好。
我也尝试过这样做,添加一个unset()语句,但它没有用。它完全删除了值变量....
$ title = array(“环游世界”=&gt;“10”,“海岸到海岸”=&gt;“7”,“大城市”=&gt;“5”);
foreach($title as $sub=>$s_value) {
echo "$sub $$s_value";
echo '<input type="radio" name="sub" value="', $sub,'">';
echo "<br>";
unset($s_value);
}
//我也尝试将未设置// //
if (empty($_GET["sub"])) {
} else {
$sub = sub_input($_GET["sub"]);
}
if (empty($_GET["s_value"])) {
} else {
$s_value = sub_input($_GET["s_value"]);
}
if (isset($title['sub'])){
$valid=false;
}
答案 0 :(得分:0)
您需要更改变量的名称$s
&amp; foreach循环中的$s_value
。 foreach循环设置这些变量,然后如果GET值中的任何一个为空,则在foreach循环之外访问它们,这样就没有GET值来替换变量的内容。因此,它始终使用5作为值,因为这是您设置的最后一个$s_value
。
总之,改变$s
&amp; foreach循环中的$s_value
类似于$key
&amp; $value
将分别修复数组值的问题。或者,您可以在foreach循环之后但在if语句之前取消设置它们。
答案 1 :(得分:0)
在您当前的代码中,您恰好在循环中切换了值。 10, 7, 5
位于元素内部,而名称Around The world... etc
位于键内。你只需要切换它们。考虑这个例子:
<?php
$title = array("Around the World"=>"10","Coast to Coast"=>"7","The Big City"=>"5");
if(isset($_GET['submit'], $_GET['sub'])) {
$sub = $_GET['sub'];
$name = array_search($sub, $title);
echo '<script>alert("You selected '.$name. ' => '.$sub.'");</script>';
}
?>
<form method="GET" action="index.php">
<?php foreach($title as $key => $value): ?>
<input type="radio" name="sub" value="<?php echo $value; ?>" /> <?php echo $key; ?> <br/>
<?php endforeach; ?>
<br/>
<input type="submit" name="submit" value="Submit" />
</form>