PHP动态用户输入到php表中

时间:2015-11-27 22:56:14

标签: php html-table

我正在尝试将用户输入插入到php表中。例如,如果我从上一页定义一个2x3表(2行和3列),输入屏幕将显示6个输入,您可以填写任何您想要的内容。然后将6个内容变量插入表中。我相信一个数组和一个foreach循环可能是必要的。但是,我不确定如何将用户输入内容转移到下一页并正确插入表中。我也试图把它放到一个列表中,但我假设如果表问题可以解决,那么列表应该是相同的。任何帮助将不胜感激。

//显示已定义输入的页面

$row = (isset($_POST['rows']) ? $_POST['rows'] : null);
$col = (isset($_POST['columns']) ? $_POST['columns'] : null);
$list = (isset($_POST['listitems']) ? $_POST['listitems'] : null);
$list2 = (isset($_POST['listitems2']) ? $_POST['listitems2'] : null);

array('[content[]');//Not sure if array should be here or on next page

$y = $list;
$z = $list2;
$x = $row * $col;

        for ($i = 1; $i <= $x; $i++) {

            echo "$i<input type='text' name='content[]' required> <br>";

        }
        for ($t = 1; $t <= $y; $t++) {

            echo "$t<input type='text' name='content[]' required> <br>";
        }

        for ($s = 1; $s <= $z; $s++) {

            echo "$s<input type='text' name='content[]' required> <br>";
        }

         echo   "<input type='submit' name='submit2' value='Submit'/>
            <input type='hidden' name='method' value='post' />
            <input type='hidden' name='unorderedinput' value='$list' />
            <input type='hidden' name='orderedinput' value='$list2' />
            <input type='hidden' name='rowsinput' value='$row' />
            <input type='hidden' name='columnsinput' value='$col' />
            <input type='hidden' name='cont' value='content[]' />";

echo "</form>";

//显示表格的页面。

        $trow = $_POST['rowsinput'];
        $tcol = $_POST['columnsinput'];
        $ulist = $_POST['unorderedinput'];
        $olist = $_POST['orderedinput'];
        $tcontent = $_POST['cont'];

        echo "<table border='1'>";

        for ($tr = 1; $tr <= $trow; $tr++) {
            echo "<tr>";
                for ($td = 1; $td <= $tcol; $td++) {
                    echo "<td align='center'>". "$tcontent". "</td>";//I'm not sure if this is correct
                }

                    echo "</tr>";
            }

        echo "</table>";

2 个答案:

答案 0 :(得分:1)

首先,您不需要这一行:

    array('[content[]');

它没有做任何事情,因为它没有分配给变量。如果目的是制作内容数组,那么php将在第二页上为您完成。见下文。

此外,您不需要此行:

    <input type='hidden' name='cont' value='content[]' />";

这是因为您已经拥有名为input的{​​{1}}个代码,因此请直接在下一页中使用这些代码,您可以在此处使用这些代码:

content[]

该行刚刚创建 $tcontent = $_POST['cont']; ,即文字字符串,而不是内容。

取而代之的是:

$tcontent = "content[]"

...现在你将拥有一系列值。

然后,在第二页上,您可以使用 $tcontent = $_POST['content']; current函数迭代这些值:

next

您不应忘记使用 echo "<table border='1'>"; $value = current($tcontent); for ($tr = 1; $tr <= $trow; $tr++) { echo "<tr>"; for ($td = 1; $td <= $tcol; $td++) { echo "<td align='center'>". $value . "</td>"; // get next element $value = next($tcontent); } echo "</tr>"; } echo "</table>"; 函数使代码处理$_POST中缺少的参数,就像您在第一页中所做的那样。

答案 1 :(得分:0)

$_POST['cont']将是您示例中的值数组,因此您需要首先检查它是否为not empty(),然后使用foreach进行迭代,例如:

echo "<table border='1'>";

    for ($tr = 1; $tr <= $trow; $tr++) {
        echo "<tr>";
            for ($td = 1; $td <= $tcol; $td++) {
                if (!empty($tcontent)) {
                    foreach ($tcontent as $singleValue) {
                        echo "<td align='center'>". "$singleValue". "</td>";
                    }
                }
            }

                echo "</tr>";
        }

    echo "</table>";