通过html表单创建的PHP数组仅存储最后一个元素

时间:2012-01-24 05:42:40

标签: php html

我正在为$ i的不同数值的用户循环一个问题。他们将以html形式输入一个也是循环的数量。在他们点击提交时,我希望有一个数组(使用[0]以后的密钥范围)存储他们对问题的每个特定变体的响应。但是,根据我编写的代码,我只设法用key [0]存储它们的最后一个输入,就像它是数组的第一个元素一样。当我调用print_r时,所有以前的答案似乎都丢失了。如果有人能指出为什么会发生这种情况或者我如何解决它,我将非常感激。

<?php

    for ($i=2; $i<=10; $i++) 

    {
        print "question $i";

        echo"<form action=\"mysqlranked.php\" method=\"post\">
          <input type=\"text\" name=\"pools[]\" value=\"0\" maxlength=\"2\" size=\"2\">
          </form>
          <br>";
    }

    print "
    <form>
    <input type=\"submit\" name=\"formSubmit\" value=\"Submit\">
    </form>";

    if (isset($_POST["formSubmit"]))
    {
        $var = $_POST["pools"];
    }

    print_r($var);

?>

4 个答案:

答案 0 :(得分:1)

您的每个输入都以新的形式出现,而提交按钮也以自己的形式出现。我为你修好了:

<?php

    echo "<form action=\"mysqlranked.php\" method=\"post\">";
    for ($i=2; $i<=10; $i++) 

    {
        print "question $i";

        echo"
          <input type=\"text\" name=\"pools[]\" value=\"0\" maxlength=\"2\" size=\"2\">

          <br>";
    }

    print "
    <input type=\"submit\" name=\"formSubmit\" value=\"Submit\">
    ";
    echo "</form>";
    if (isset($_POST["formSubmit"]))
    {
        $var = $_POST["pools"];
    }

    print_r($var);

?>

让我知道它是否有效。

答案 1 :(得分:1)

每个问题都不应该有新的form标记。

尝试以下代码:

<form action="mysqlranked.php" method="post">

<?php
    for ($i = 2; $i <= 10; $i++)
    {
        print "question $i";
?>

    <input type="text" name="pools[]" value="0" maxlength="2" size="2">

<?php
    }
?>

    <input type="submit" name="formSubmit" value="Submit">
</form>

<?php
    if (isset($_POST["formSubmit"]))
    {
        $var = $_POST["pools"];
    }

    print_r($var);
?>

答案 2 :(得分:0)

    <?php

        for ($i=2; $i<=10; $i++) 

        {
            print "question $i";

            echo"<form action=\"mysqlranked.php\" method=\"post\">
              <input type=\"text\" name=\"pools[]\" value=\"0\" maxlength=\"2\" size=\"2\">

              <br>";
        }

        print "

        <input type=\"submit\" name=\"formSubmit\" value=\"Submit\">
        </form>";

     if (isset($_POST["formSubmit"])) 
        {

                for($counter=0;$counter<count($_POST["pools"]);$counter++)
                {
                    $var = $_POST['pools'][$counter]

                }

         }
print_r($var);

    ?>

答案 3 :(得分:0)

您可以使用array_push($arrayName, $elementToBePushed);