无法在数组PHP中保存多个记录

时间:2016-04-06 14:26:57

标签: php html arrays

所以我想知道如何从html表单中保存多个数组中的记录?我的意思是今天我有一个任务来制作PHP / HTML脚本,用户可以通过html表单将数据添加到数组中。我的问题是我无法在阵列中保存多个记录,每次按下"submit"按钮时都会覆盖它们。 为了更清楚地了解情况,这里是代码(它只是一个例子):

<?php
$array=array();
array_push($array, $_POST['name']);
foreach($labas as $hi){
    echo $hi . "\n";
}
?>
<!DOCTYPE HTML> 
<html>
<body> 
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
 Name:<br>
 <input type="text" name="name"><br>
 <input type="submit" value="Submit" name="Submit">
 </form>

 </body>
 </html>

因此每次输入名称并按submit按钮时,php脚本仅显示我提交的最后一条记录。我尝试使用$array[]=$value仍然相同。 我知道有session_start()并使用database的解决方案,但是我可以在不使用它的情况下解决它吗?我打赌有一种方法,你们可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

不,你没有覆盖数组。该数组不会在执行脚本之间保持不变。记住网站是StateLess。

您必须将数组放在$ _SESSION中,因为Session数组通过在脚本的执行之间保持会话数组来提供具有某些状态的网站。 PHP为您执行此操作,当您调用session_start() PHP并获取与此连接相关联的会话数据到客户端时。

<?php
    session_start();
    if ( $_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['name']) ){
        // the user hit submit
        $_SESSION['all_names'][] = $_POST['name'];
    }

    foreach($_SESSION['all_names'] as $name){
        echo $name . "\n";
    }
?>
<!DOCTYPE HTML> 
<html>
    <body> 
        <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
           Name:<br>
           <input type="text" name="name"><br>
           <input type="submit" value="Submit" name="Submit">
        </form>
    </body>
</html>