我有一个包含两个部分(表单)的页面,第一个是关于我想要创建多少个新字段的数量,第二个是新字段。所以我的问题是我无法从第二个字段获取信息。这是代码:
echo "<form action='create-table.php' method='post'>";
echo "How much fields you want?: <input type='numer' name='fieldsnum'><br>";
echo "<input type='submit' name='first'>";
echo "</form>";
$fieldsnum = $_POST["fieldsnum"];
echo "<form action='create-table.php' method='post'>";
echo "Table Name: <input type='text' name='table'><br><br>";
$table = $_POST["table"];
echo $table;
while ($a < $fieldsnum){
echo "Table Field $a: <input type='text' name='$a'><br>";
$a++;
}
echo "<input type='submit' name='second'>";
echo "</form>";
for($a = 0; $a<$fieldsnum; $a++){
$info[$a] = $_POST[$a];
}
第一个循环正常工作,但第二个循环有一些问题,它无法获取数据。我不懂PHP,如果它有很多错误或不好的做法,我很抱歉。
答案 0 :(得分:1)
这里有两件事是错的:
首先,您需要在$a = 0;
循环之前设置while
,否则首次迭代
while ($a < $fieldsnum){...}
将输出:
<input type="text" name>
因此您将无法从该字段获取数据。
其次,您的for
循环失败,因为第二次提交时$fieldsnum
为空。
试试这个:
<?php
$fieldsnum = $_POST["fieldsnum"];
$table = $_POST["table"];
if (isset($_POST["fieldsnum_keep"])) {
$fieldsnum = $_POST["fieldsnum_keep"];
for($a = 0; $a < $fieldsnum; $a++){
$fieldName = $_POST["feild_$a"];
echo "Field Name $a : $fieldName <br>";
}
}
?>
<form action='create-table.php' method='post'>
How much fields you want?
<input type='number' name='fieldsnum'><br>
Table Name:
<input type='text' name='table'><br>
<?php
echo $table . "<br>";
$a = 0;
while ($a < $fieldsnum){
echo "Field Name $a: <input type='text' name='feild_$a'><br>";
echo "<input type='hidden' name='fieldsnum_keep' value='$fieldsnum'><br>";
$a++;
}
?>
<input type="submit" name="second" value="Submit">
</form>
我通过将$fieldsnum
添加到隐藏字段然后在for循环中使用它来保留{{1}}的值。我还只制作了一个表格,它将提交两次,而不是两种表格。