使用生成的php变量作为循环

时间:2016-02-02 14:25:36

标签: php html

在第一页(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>对象是通过循环生成的,循环运行的次数由数据库中的行数指定。

3 个答案:

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

在编写这样的动态页面时,你应该总是希望有一个缺失的变量并编写一个转义代码,这样你就不会遇到像这样的错误。