1

我刚刚启动了一个 php 数独求解程序,其中主页有一个表单。在该表单中,一个 php include 语句调用一个函数,该函数使用构成数独框的输入绘制网格。在 HTML 代码的下方,我放置了一个输入提交按钮。但是,它位于网站的网格上方,如http://shodor.org/~amalani/sudoku.php所示。有人知道为什么是这样吗?

主要代码在这里

<html>
<head>
    <title>Sudoku Solver</title>
    <link rel='stylesheet' href='main.css' type='text/css'>

</head>
<body>
    <table>
        <form name='entry' method='POST' action='solve.php'>    
            <?php 
                include('grid.php');
            ?>
            <input type='submit' value='Submit!'></input>           
        </form>
    </table>
</body>
</html>

CSS 在这里

td{
    border:1px solid black;
}input[type=number]{
    border:none;
    width:30px;
    height:30px;
}input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}table{
    border-collapse:collapse;
}.xborder{
    border-bottom:3px solid black;
}.bothborder{
    border-bottom:3px solid black;
    border-right:3px solid black;
}.yborder{
    border-right:3px solid black;
}

网格抽屉代码在这里

<?php 
    for ($x=1;$x<=9;$x++){
echo '

            <tr>';
        for ($y=1;$y<=9;$y++){
            $name=$x.''.$y;
            if(($y==3||$y==6)&&($x==3||$x==6)){
                echo "
            <td class='bothborder' ><input type='number' name='$name'></input></td>";
            }
            else if ($y==3||$y==6){
                echo "
                <td class='yborder' ><input type='number' name='$name'></input></td>";
            }
            else if ($x==3||$x==6){
                echo "
            <td class='xborder' ><input type='number' name='$name'></input></td>";
            }
            else{
                echo "

                <td><input type='number' name='$name'></input></td>";
            }
        }
echo '
            </tr>';
    }

    ?>

谢谢

4

7 回答 7

3

尝试将表单元素移到表格之外。

<form name='entry' method='POST' action='solve.php'>    
    <table>
        <?php 
            include('grid.php');
        ?>
    </table>
    <input type='submit' value='Submit!'></input>           
</form>
于 2013-03-15T01:40:54.810 回答
0

您正在生成无效的 html:aform不能是元素的直接子table元素。

您应该让表单封装表格并将按钮移动到表格下方或将其放在表格内网格下方的一行(和一列)中:

<form name='entry' method='POST' action='solve.php'>  
    <table>  
        <?php 
            include('grid.php');
        ?>
    </table>
    <input type='submit' value='Submit!'></input>           
</form>
于 2013-03-15T01:40:04.690 回答
0

只需将<input type='submit' value='Submit!'></input>里面的另一个<td></td>

于 2013-03-15T01:40:07.593 回答
0

您已放入标签form内。table你不能这样做,它处于困境中。做这个。

<form>
    <table>
        ....
    </table>
    <input type="submit" />
</form>
于 2013-03-15T01:40:14.163 回答
0

交换<form><table>像这样:

<form name='entry' method='POST' action='solve.php'>    
    <table>
            <?php 
                include('grid.php');
            ?>
            <input type='submit' value='Submit!'></input>           

    </table>
 </form>
于 2013-03-15T01:41:14.053 回答
0

您可以将其留在 table 标记之外。

<input type='submit' value='Submit!'></input>

http://jsfiddle.net/8N6hE/

于 2013-03-15T01:48:35.350 回答
0

这是一个简单的示例,您不能将 a<div>放入 a <p>,因此如果您这样做,您的浏览器将修改您的代码

你不能在 ap (内联元素)中放置一个 div (块元素)

所以如果你这样做

<p>
    <div>
    </div>
</p>

您的浏览器会将代码更改为

<p>
</p>
<div>
</div>

或者

<p>
</p>
<div>
</div>
<p>
</p>

所以这里的表格和表格是一样的,你应该在开始<form>之前开始你的<table>

这一切都是说,如果您生成无效的 html 代码,浏览器将编辑您的代码

于 2013-03-15T01:52:21.437 回答