将文本框值存储在 php 数组中
Store textbox values in php array
所以基本上我让用户在我的第一个屏幕上输入一个数字。
这里是 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;
}
是我给文本框起的名字有问题,还是别的什么?
非常感谢任何帮助。
只需创建一个名称分组属性,这样您就可以获得一组输入,而不仅仅是一个:
<input type='text' name='Names[]'>
// ^ this is important
旁注:
不知道是不是打错了,应该是$names
而不是$number
:
$names = $_POST['Names'];
foreach($names as $num){
echo $num . '<br/>';
}
您的问题是您为所有输入(在 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'];
}
<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
所以基本上我让用户在我的第一个屏幕上输入一个数字。 这里是 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;
}
是我给文本框起的名字有问题,还是别的什么? 非常感谢任何帮助。
只需创建一个名称分组属性,这样您就可以获得一组输入,而不仅仅是一个:
<input type='text' name='Names[]'>
// ^ this is important
旁注:
不知道是不是打错了,应该是$names
而不是$number
:
$names = $_POST['Names'];
foreach($names as $num){
echo $num . '<br/>';
}
您的问题是您为所有输入(在 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'];
}
<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