0

まず第一に、私は PHP に非常に慣れていないので、愚かな質問かもしれませんが、そこに行きます: html と php で次のコードを持つ 2 つのドロップダウン選択タグがあります。

     <select>
        <option value="default">---a---</option>
        <?php for($i=1; $i<+100; $i++) { ?>
                <option value="<?php $i ?>"><?php echo $i ?></option>
        <?php } ?>
     </select>

     <select>
        <option value="default">---b---</option>
        <?php for($j=1; $j<=100; $j++) { ?>
                <option value="<?php $j ?>"><?php echo $j ?></option>
        <?php } ?>
     </select>

次に、行と列を持つテーブルがあります(少なくとも、変更する必要があります):

    <table>
                <tr>
                    <th>Date</th>
                    <th>Temp</th>
                    <th>Nr a</th>
                    <th colspan="2">a 1</th>
                    <!--another th___nr a-->
                </tr>
                <tr>
                    <td colspan="3"> </td>
                    <th>something</th>
                    <th>else</th>
                    <!--another something else___nr a-->
                </tr>
                <tr>
                    <td>
                        <?php
                            //echo date(DATE_RFC822);
                            echo date('jS\, F\, Y');
                        ?>
                    </td>
                    <td>
                        <input type="number" name="temp" placeholder="temp" />
                    </td>
                    <th>b 1</th>
                    <td>
                        <input type="number" name="something" placeholder="something" />
                    </td>
                    <td>
                        <input type="number" name="else" placeholder="else" />
                    </td>
                    <!--another td___nr a-->
                </tr>
                <!--another tr___nr b-->
            </table>

私がやりたいことは、最初のドロップダウンで a の数 (列) を制御し、2 番目のドロップダウンで b の数 (行) を制御することです。これは PHP で可能ですか。

ドロップダウンで選択した数値を変数に記憶し、それを解決するためにいくつかの for を使用することをどうにかして考えていましたが、それが可能であれば、それを行う方法が本当にわかりません。

私を助けてくれてありがとうございました:)

4

1 に答える 1

1

PHP はサーバー側の言語であるため、(a) と (b) の入力をサーバーにポストしてから、PHP を使用して、ページに必要なテーブルを生成するために使用できる関連データを作成する必要があります。

<form action="index.php" method="post">
    <!--put your select elements here-->
    <select name="columns"></select>
    <select name="rows"></select>
    <input type="submit" />
</form>

次に、PHPファイルの先頭に次のようなものがあります

<?php
    // using terniary operator here - you can google that
    // basically ensures the vars are set to 1 if there is no post from the form
    $columns = (isset($_POST['columns'])) ? $_POST['columns'] : 1;
    $rows = (isset($_POST['rows'])) ? $_POST['rows'] : 1;
?>

次に、あなたのテーブルで

<table>
    <?php foreach ($rows as $row):?>
        <tr>
            <?php foreach ($columns as $column):?>
            <td></td>
            <?php endforeach;?>
        </tr>
    <?php endforeach;?>
</table>

ディーターが Ajax で提案したようにこれを拡張できますが、純粋な PHP の場合は、このようなものが必要になります。

ただし、これは非常に基本的な例であり、X 列と Y 行を含む空の HTML テーブルを生成する以上のことを実現するには、肉付けする必要があります。

編集:これは機能するはずの完成したファイルです。この行の下のコードを test.php として保存し、試してみてください。次に、必要なことを正確に行うように修正できます。
申し訳ありませんが、私も少しミスを犯しました。投稿されたデータを foreach ループで使用できる範囲に変換するのを忘れていました。以下訂正です

<?php
// test.php

    // using terniary operator here - you can google that
    // basically ensures the vars are set to 1 if there is no post from the form
    $c = (isset($_POST['columns'])) ? $_POST['columns'] : 1;
    $r = (isset($_POST['rows'])) ? $_POST['rows'] : 1;

    $columns = range(1, $c);
    $rows = range(1, $r);

?>


<form action="test.php" method="post">
    <!--put your select elements here-->
    <select name="rows">
        <option value="default">---a---</option>
        <?php for($i=1; $i<+100; $i++) { ?>
                <option value="<?php echo $i ?>"><?php echo $i ?></option>
        <?php } ?>
     </select>

     <select name="columns">
        <option value="default">---b---</option>
        <?php for($j=1; $j<=100; $j++) { ?>
                <option value="<?php echo $j ?>"><?php echo $j ?></option>
        <?php } ?>
     </select>
    <input type="submit" />
</form>

<table>
    <tr>
        <?php foreach ($columns as $column):?>
        <th>Temp Head</th>
        <?php endforeach;?>
    </tr>
    <?php foreach ($rows as $row):?>
    <tr>
        <?php foreach ($columns as $column):?>
        <td>Temp Data</td>
        <?php endforeach;?>
    </tr>
    <?php endforeach;?>
</table>
于 2013-04-18T11:13:06.883 に答える