在第一页(index.php)上我写了这个:
<?php
echo '<form action="test.php" method="get">';
$x=0;
while($x<5){
$x++;
$test='tester'.$x;
echo '<input type="text" name="$test"><br>';
};
echo '<input type="submit" value="submit">';
?>
在第二页(test.php)我写了这个:
<?php
echo $_POST['tester1'];
echo $_POST['tester2'];
echo $_POST['tester3'];
echo $_POST['tester4'];
echo $_POST['tester5'];
?>
当我测试它时,我遇到了这些错误
注意:未定义的索引:第2行的C:\ xampp \ htdocs \ test.php中的tester1
注意:未定义的索引:第3行的C:\ xampp \ htdocs \ test.php中的tester2
注意:未定义的索引:第4行的C:\ xampp \ htdocs \ test.php中的tester3
注意:未定义的索引:第5行的C:\ xampp \ htdocs \ test.php中的tester4
注意:未定义的索引:第6行的C:\ xampp \ htdocs \ test.php中的tester5
下面的代码是用于填写数字的真实代码的示例。我想稍后使用这些数字进行计算,因此它们都需要一个唯一的名称。 <input>
对象是通过循环生成的,循环运行的次数由数据库中的行数指定。
答案 0 :(得分:1)
两个主要问题是你在单引号中使用PHP变量,这不会传递实际变量,而是实际名称。作为一个例子
$foo = "bar";
echo 'This is $foo';
会打印
这是$ foo
如果您使用双引号,则会传递变量的内容,
$foo = "bar";
echo "This is $foo"; // You can also do the following: echo 'This is '.$foo;
会打印
这是吧
其次,您在表单中使用method="get"
,但尝试将它们作为POST变量检索。这意味着您必须将其更改为method="POST"
。
另一种方法是创建一个元素数组,并在PHP中使用循环来检索值。下面给出一个例子。第一个代码段生成一个包含5个输入字段作为数组的表单。
<form action="test.php" method="POST">
<?php for ($x=0; $x<5; $x++) { ?>
<input type="text" name="tester[]" />
<?php } ?>
<input type="submit" name="submit" />
</form>
在PHP中,遍历该数组。
<?php
if (isset($_POST['tester']) {
// If the values are set, to avoid Undefined Index notices
foreach ($_POST['tester'] as $value) {
echo $value."<br />";
}
}
?>
答案 1 :(得分:0)
这是它的工作原理(index.php):
<?php
echo '<form action="test.php" method="post">';
$x=0;
while($x<5){
$x++;
$test='tester'.$x;
echo '<input type="text" name="'.$test.'"><br>';
};
echo '<input type="submit" value="submit">';
?>
答案 2 :(得分:0)
只需将此代码附加到test.php
的顶部即可if(!isset($_POST['tester1']) || !isset($_POST['tester2']) ... etc){
exit(0); //or do something to signal index.php of missing values
}
/* (the rest of the code */
在编写这样的动态页面时,你应该总是希望有一个缺失的变量并编写一个转义代码,这样你就不会遇到像这样的错误。