使用输入字段创建PHP表生成器

时间:2018-05-25 17:32:14

标签: php html arrays

我正在为工作制作模板生成器。

生成器的目标是创建一个表,您可以在其中输入唯一的字段。在将这些字段输入每个表格单元格后,将按下一个按钮以生成模板。

我遇到的问题是输入字段在生成时没有给出唯一的名称。我知道需要为每个输入字段创建一个数组,但在这种情况下我不确定如何做到这一点。

任何援助都会很棒。

我有以下代码:

<html>
<body>
    <div>
        <p>Enter number of Rows<p>
        <form action="" method="POST">
        <label for="title">Row</label>
        <input type="text" name="numRows" placeholder="Number of Rows">
        <input type="submit" name="submit" value="Generate Table"> 
    </div>

    <div>
        <?php
            if(isset($_POST['numRows'])) {
                $row = $_POST['numRows'];
                $column = 2;

                echo '<form method="POST" name="form_1st_generate" >';
                echo '<table style="border-collapse: collapse; border: 1px solid black">';
                for($tr=1;$tr<=$row;$tr++) {
                    echo '<tr>';
                        for($td=1;$td<=$column;$td++){
                            echo '<td style="border: 1px solid black"><input type="text" name="tableInput[]" /></td>';
                        }
                    echo '</tr>';
                    }
                    echo '</table>';
                    echo '<input type="submit" value="Generate Template" name="submit_form_1st_generate"/>';
                    echo '</form>';
                }

            if(isset($_POST['submit_form_1st_generate'])){
                echo '<br />';
                echo 'Generated Template';

                $row1col1 = $_POST['tableInput[1]'];
                $row1col2 = $_POST['tableInput[2]'];
                echo $row1col1;
                echo $row1col2;
            }
        ?>
    </div>
</body>

2 个答案:

答案 0 :(得分:2)

解决方案是将'table-input-'.$tr.'-'.$td的名称放入,并知道您将能够按顺序迭代所有字段的行数和列数:

for ($tr = 1; isset($_POST['table-input-'.$tr.'-1']); $tr++) {
    for ($td = 1; isset($_POST['table-input-'.$tr.'-'.$td]); $td++) {
        //your server-side stuff
    }
}

答案 1 :(得分:0)

我能够使用以下代码完成此操作。

像冠军一样工作:

<!DOCTYPE html>
<html>
<head>
    <title>Table Generator</title>
</head>

<body>
    <center>
    <div>
        <h3>Enter number of rows you would like to have in the table: </h3>
        <form method="GET">
            <input type="text" name="numRows" />
            <input type="submit" name="submit" value="Generate Table">
        </form>
    </div>

    <div>
        <?php
            if(isset($_GET['numRows'])) {
                $row = $_GET['numRows'];
                $column =1;

                echo '<form method="POST" action="" name="form_1st_generate" >';
                echo '<br />';
                echo '<table style="border-collapse: collapse; border: 1px solid black">';
                for($tr=1;$tr<=$row;$tr++) {
                    echo '<tr>';
                        for($td=1;$td<=$column;$td++){
                            echo '<td style="border: 1px solid black"><input type="text" name="'.$tr.'" /></td>';
                        }
                    echo '</tr>';
                    }
                    echo '</table>';
                    echo '<input type="submit" value="Generate Template" /><br /><br />';
                    echo '</form>';
                }
        ?>
    </div>

<div>
<table>
<hr>
<h3>Generated Example:</h3>  
<?php
foreach ($_POST as $tr => $value){
echo "\n<tr><td><label for='".$value."'></label>".$value.": </td><td>     <input type='text' name='".$value."' /></td></tr>\n";   
}
?>
</table>  
<br />
<textarea style='width:50%;;height:300px;'>
<table>
<?php
foreach ($_POST as $tr => $value){
echo "\n<tr><td><label for='".$value."'></label>".$value.": </td><td>   <input type='text' name='".$value."' /></td></tr>\n";   
}
?>

</table>       
</textarea>
</div>


    </center>
</body>
</html>