我有两页。一个选择框和发送按钮。当用户从选择框中选择他们的选项并点击发送时,会将他们带到输出他们选择的第二页。
date_change.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Loughborough University | Students Union</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<?php
$day = array(range(1,31));
$month = array(range(1,12));
$year = array(range(2011,2020));
print_r($day);
?>
<form action="test.php" method="post">
Day:
<select name="day">
<?php foreach($day[0]++ as $key => $value) { ?>
<option value="<?php echo $key ?>" ><?php echo $value ?></option>
<?php }?>
</select>
<br>
Month:
<select name="month">
<?php foreach($month[0]++ as $key => $value) { ?>
<option value="<?php echo $key ?>" ><?php echo $value ?></option>
<?php }?>
</select>
<br>
Year:
<select name="year">
<?php foreach($year[0]++ as $key => $value) { ?>
<option value="<?php echo $key ?>" ><?php echo $value ?></option>
<?php }?>
</select>
<input type='submit' value='send' name='send' />
</form>
</body>
</html>
和test.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Loughborough University | Students Union</title>
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<?php
$day = $_POST["day"];
$month = $_POST["month"];
$year = $_POST["year"];
echo $day;
echo $month;
echo $year;
?>
Date Selected: <?php echo $_POST["day"];echo $_POST["month"];echo $_POST["year"]; ?>
</body>
</html>
然而,比方说,例如我选择,第1天,第1个月和2011年,它出现了000.为什么这个以及我该怎么做才能纠正这个问题?
感谢您的任何想法或建议。
答案 0 :(得分:1)
你的问题可能在这里:
$day = array(range(1,31));
$month = array(range(1,12));
$year = array(range(2011,2020));
由于range()
已经创建了一个数组,所以你将一个数组包装在一个数组中。我怀疑这是有意的。
答案 1 :(得分:1)
尝试
$day = range(1,31);
...
<?php foreach($day as $value) { ?>
<option value="<?php echo $value ?>" ><?php echo $value ?></option>
答案 2 :(得分:1)
在每个选项中,您必须使用$value
代替$key
:
<option value="<?php echo $value ?>" >
因为你传递的只是键,而不是值。
例如:
$year = array(range(2011,2020));
创建一个数组:
array(
0 => 2011,
1 => 2012,
2 => 2013,
3 => 2014,
4 => 2015,
5 => 2016,
6 => 2017,
...
)
所以如果你选择2014
:
<option value="<?php echo $key ?>" ><?php echo $value ?></option>
等于
<option value="3">2014</option>
在您发布的test.php
页面中,您将获得3
一年。
所以简单地改变,因为我描述的开始将解决你的问题。
答案 3 :(得分:0)
您编写了value=<?php echo $key ?>
,因此发送的实际值是您的数组的索引。由于第1天的索引为0,因此第1个月的索引为0,而2011年的索引为0,即000。
如果您使用value=<?php echo $value ?>
,结果将是112011。
答案 4 :(得分:0)
$ day,$ month等应分配给数组,而不是包含数组的数组(由range
返回)。
所以:
$day = range(1,31);
$month = range(1,12);
$year = range(2011,2020);
此外,您的foreach
应以不同方式编写:
foreach($day as $value) {
?>
<option value="<?php echo $value ?>" ><?php echo $value ?></option>
<?php
}
使用您的代码,您使用数组的条目索引作为值来回显选项标记(这就是为什么它因此而打印000)。
希望这有帮助。
答案 5 :(得分:0)
需要进行一些更改:
range()
已经返回一个表。foreach
语句中的第一个参数需要是一个数组,而不是一个增量。 0
到array_length()-1
的整数。所以不需要使用密钥。value
标记中保留option
属性,则该值将与显示的标签相同试试这段代码:
$day = range(1,31);
<?php foreach($day as $value) { ?>
<option><?php echo $value ?></option>
<?php }?>
(几个月和几年相同)