我已经在这方面工作了好几天,无法弄清楚什么是错的,这是课堂上的错误。它一直返回'语法错误意外结束文件,我认为这意味着我错过了一个支架,但我不知道在哪里?任何帮助,将不胜感激。我有两个文件,我试图在php中制作一个乘法表。
第1页:
<!DOCTYPE html>
<html>
<head>
<title>Make a Multiplication Table!</title>
</head>
<body>
<form action="./timestable.php" method="POST"/>
<input type="number" value="1" name="a"/>
<input type="number" value="1" name="b"/>
<input type="submit"/>
</form>
</body>
</html>
<?php
$n = $_POST; // TODO what should $n really be? Replace the 10 with the user-supplied value from the form
// if we don't have a number, redirect back to the form page
if (isSet($n)) {
header("Location: ./mult_form.php");
exit;
}
?>
第2页:
<!DOCTYPE html>
<html>
<head>
<title>Your Table is Ready</title>
</head>
<body>
<table>
<?php
$a = $_POST['a'];
$b = $_POST['b'];
for ($i = 0; $i <($a)+1; $i++):
{
$output.='<tr>';
for($j=1;$j<($b)+1;$j++)
{
$output.= '<td>'.($i*$j).'</td>';
}
$output.='<tr>';
}
$output.='</table>';
?>
</body>
</html>
答案 0 :(得分:1)
除了你可以/应该改变的10件事之外,让我们切入追逐。
您永远不会输出$output
变量。使用:
echo $output;
在$output.='</table>';
之后,你应该没事。
编辑:更正了代码,如评论中所述。
这是完全更正的第1页:
<?php
if (!isset($_POST['n'])) {
header("Location: mult_form.php");
exit;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Make a Multiplication Table!</title>
</head>
<body>
<form action="timestable.php" method="POST"/>
<input type="number" value="1" name="a"/>
<input type="number" value="1" name="b"/>
<input type="hidden" value="<?php echo $_POST['n'];?>" name="n"/>
<input type="submit"/>
</form>
</body>
</html>
请注意,如果要将标题字段设置为header()
,则需要有一个清晰的输出缓冲区。这意味着尚未输出单个字符。否则,HTTP标头将自动关闭,HTTP主体将开始。这意味着header()
来得晚,实际上被忽略了。
因此,如果PHP在任何HTML字符之后,则不会重定向。这就是为什么我把它放在代码的开头。
您需要实施发布mult_form.php
字段的n
。
第二页是:
<!DOCTYPE html>
<html>
<head>
<title>Your Table is Ready</title>
</head>
<body>
<table>
<?php
$a = intval($_POST['a']);
$b = intval($_POST['b']);
$n = intval($_POST['n']);
$output = '';
for ($i = 1; $i <= $a; $i++)
{
$output .= '<tr>';
for ($j = 1; $j <= $b; $j++)
{
$output .= "<td>{$i * $j * $n}</td>";
}
$output .= '</tr>';
}
echo $output;
?>
</table>
</body>
</html>
请注意,$output
被初始化为一个空字符串,以便第一个.=
连接实际上将字符串连接到字符串而不是未定义的值到字符串,这可能会搞乱整个连接剧,即继续在这里:))
这应该这样做。
如果这不起作用更具体,可以使用您的新代码发布另一个问题。现在应该考虑这个问题。
度过美好的一天!