将文本框值存储在php数组中

时间:2015-02-12 11:28:31

标签: php html forms textbox

所以基本上我让用户在我的第一个屏幕上输入一个数字。 这是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;
}

问题是我给文本框的名字,还是其他什么? 非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

只需创建一个名称分组属性,这样您就可以得到一个输入数组而不只是一个:

<input type='text' name='Names[]'>
                           // ^ this is important

旁注:

我不知道这是否是拼写错误,但这应该是$names而不是$number

$names = $_POST['Names'];
foreach($names as $num){
       echo $num . '<br/>';
}

Sample Demo

答案 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