所以基本上我让用户在我的第一个屏幕上输入一个数字。 这是test1.php,它生成用户先前输入的文本框的数量。这个数字是$ input
echo "<form action='test2.php' method='post'>";
for($i=1; $i<=$input; $i++)
{
echo "Entry $i";
echo "<input type='text' name='Names'>";
}
echo "<input type='submit' class='button' name='submit' value='submit'>";
echo "</form>";
然后我的test2.php应该打印输入的所有值,但它只打印出从test1.php输入的最后一个值。例如$ input是4,只打印在第4个文本框中输入的文本,这是可以理解的,因为我不知道如何打印所有值。
$names=$_POST['Names'];
foreach($number as $num){
echo $num;
}
问题是我给文本框的名字,还是其他什么? 非常感谢任何帮助。
答案 0 :(得分:2)
只需创建一个名称分组属性,这样您就可以得到一个输入数组而不只是一个:
<input type='text' name='Names[]'>
// ^ this is important
旁注:
我不知道这是否是拼写错误,但这应该是$names
而不是$number
:
$names = $_POST['Names'];
foreach($names as $num){
echo $num . '<br/>';
}
答案 1 :(得分:0)
您的问题是您为所有输入(在test1.php中)指定了相同的名称,因此当您尝试在test2.php上恢复它们时,$_POST['Names']
只需使用此输入的最后一个输入名。
解决方案是为所有输入提供不同的名称
在第一个文件中使用它:
echo "<form action='test2.php' method='post'>";
for($i=1; $i<=$input; $i++)
{
echo "Entry $i";
echo "<input type='text' name='".$i."'>";
}
echo "<input type='hidden' name='input' value='".$input."'>";
echo "<input type='submit' class='button' name='submit' value='submit'>";
echo "</form>";
在你的第二个档案中:
for($i=1; $i<=$_POST['input']; $i++){
echo $_POST['$i'];
}
答案 2 :(得分:0)
<form method="post" name="myform">
<input type="text" name="array[]" Value="101"/>
<input type="text" name="array[]" Value="102"/>
<input type="text" name="array[]" Value="103"/>
<input type="text" name="array[]" Value="104"/>
<input type="submit" name="submit" Value="submit"/>
</form>
if(isset($_POST['submit'])){
foreach($_POST['array'] as $myarray) {
echo $myarray.'<br>';
}
101
102
103
104