1

メインページにフォームがあるPHP数独ソルバープログラムを開始しました。そのフォーム内で、PHP の include ステートメントが、数独ボックスを形成する入力でグリッドを描画する関数を呼び出します。その下の HTML コードに、入力送信ボタンを配置します。ただし、これはhttp://shodor.org/~amalani/sudoku.phpに示すように、Web サイトのグリッドの上に配置されます。これがなぜなのか誰か知っていますか?

メインコードはこちら

<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

<div>これは、に入れることができない簡単な例です<p>。そうすると、ブラウザがコードを変更します。

div(ブロック要素)をap(インライン要素)に入れることはできません

だからあなたがするなら

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

ブラウザはコードを次のように変更します

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

また

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

だからここではフォームとテーブルと同じです、あなたはあなたを始める<form>前にあなたを始めるべきです<table>

これはすべて、無効なhtmlコードを生成すると、ブラウザがコードを編集することを意味します

于 2013-03-15T01:52:21.437 に答える
0

table タグの外に置いておくこともできます。

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

http://jsfiddle.net/8N6hE/

于 2013-03-15T01:48:35.350 に答える
0

無効な html を生成しています: aを要素formの直接の子にすることはできません。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 に答える