2015-04-14 25 views
1

我無法弄清楚如何在保存後保存保存在$ myArray中的數據。每次我這樣做,它都會取代其他輸入。將Web表單輸入添加到數組

我需要能夠保存所有用戶輸入並保存在文本文件中。基本上保存在陣列上的數據並更新文件。

有什麼建議嗎?

<!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> 
+1

'$ _POST'已經是一個數組了。你爲什麼將它們添加到另一個數組? –

+0

因爲它沒有保存在Web表單中輸入的以前的數據。例如,我們可以說,我輸入了姓名和電子郵件,然後單擊提交。它進入數組,但是當我輸入另一個名稱時,它將替換前一個名稱。 – user2102787

+1

HTML/PHP純粹是事務性的。每次按下「提交」時,都會重新開始新的值。唯一的辦法是將它保存在'$ _SESSION'中,或者將它保存到文件中,並且每次從文件中讀取整個文件。 –

回答

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> 
+0

謝謝ishas – user2102787

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 [或什麼是不變是 - 我總是必須查找它]代替「\ n」)

因爲HTML本質上是事務性的,所以您不會跟蹤任何除會話,數據庫,文件之外的任何事物 - 任何變量都有sta每當您再次加載您的頁面時,空閒空閒。

+0

PHP_EOL是正確的。容易記住:PHP_E(nd)O(f)L(ine) – lshas

+0

是的,這是EOL_PHP,PHPEOL等排列,讓我混淆起來。 –