我好几天都在这张桌子上工作

时间:2016-04-15 21:49:05

标签: php html

我已经在这方面工作了好几天,无法弄清楚什么是错的,这是课堂上的错误。它一直返回'语法错误意外结束文件,我认为这意味着我错过了一个支架,但我不知道在哪里?任何帮助,将不胜感激。我有两个文件,我试图在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>

1 个答案:

答案 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被初始化为一个空字符串,以便第一个.=连接实际上将字符串连接到字符串而不是未定义的值到字符串,这可能会搞乱整个连接剧,即继续在这里:))

这应该这样做。

如果这不起作用更具体,可以使用您的新代码发布另一个问题。现在应该考虑这个问题。

度过美好的一天!