我正在尝试将用户输入插入到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>";
答案 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>";