将Web表单输入添加到Array

时间:2015-04-14 16:12:14

标签: php arrays

我无法弄清楚如何在点击保存后保存数据保存在$ myArray上。每次我这样做,它取代了其他输入。

我需要能够保存所有用户输入并保存在文本文件中。基本上保持数据和更新文件的数据保存。

有什么建议吗?

<!DOCTYPE>
        <html>
        <body>
            <form action="list.php" method="POST">
            Name: <input type="text" name="name[]" /><br />
            Email: <input type="text" name="name[]" /><br />
           <input type="submit" name="save" value="Submit" /><br />
        <?php
            $myArray = array();

        if (isset($_POST['save']))
        {
            array_push($myArray,$_POST['name']);
        }

        print_r($myArray);
        ?>
        </body>
        </html>

2 个答案:

答案 0 :(得分:0)

每次用户点击提交时,都会向您的脚本发送新请求。 变量$myArray是在PHP代码的第一行创建的,是一个空数组。

变量不会在请求中保留。我建议您使用cookie或会话变量。

后者的例子在这里:

<?php
session_start(); // This has to be done before any data is sent to the client
session_regenerate_id(); // Good practice to prevent session hijacking
?>
<!DOCTYPE>
<html>
<body>
    <form action="list.php" method="POST">
    Name: <input type="text" name="name[]" /><br />
    Email: <input type="text" name="name[]" /><br />
    <input type="submit" name="save" value="Submit" /><br />
    <?php
        if( !isset( $_SESSION['myArray'] ) || !is_array( $_SESSION['myArray'] ) )
        {
            $_SESSION['myArray'] = array();
        }
        if (isset($_POST['save']))
        {
            $_SESSION['myArray'][] = $_POST['name'];
        }
        print_r($_SESSION['myArray']);
        // Here you can write the contents of $_SESSION['myArray'] to a file.
    ?>
</body>
</html>

答案 1 :(得分:0)

这样您就可以在文本文件中跟踪它:

    <html>
    <body>
        <form action="list.php" method="POST">
        Name: <input type="text" name="name[]" /><br />
        Email: <input type="text" name="name[]" /><br />
       <input type="submit" name="save" value="Submit" /><br />
    <?php
        $myArray = array();

    if (isset($_POST['save']))
    {
        $f = file_get_contents("myfile.txt");
        $myArray = split($f, "\n");
        array_push($myArray,$_POST['name']);
        file_put_contents("myfile.txt", implode($myArray, "\n"));
    }

    print_r($myArray);
    ?>
    </body>
    </html>

(您可能希望使用PHP_EOL [或任何常量 - 我总是要查找]代替&#34; \ n&#34;)

由于HTML本质上是事务性的,因此除了会话,数据库,文件之外,您不会跟踪任何变量 - 每次重新加载页面时,任何变量都会变为空。