2016-11-15 37 views
2

我有一項任務,我一直在過去的幾天工作。我一直在試圖將用戶數據傳入數組中,即用戶將像cpsc340那樣輸入他們的課程id,然後顯示它,然後在同一行中,用戶輸入cpsc 567左右,然後它會打印它下面的原來等等等等,這裏是我到目前爲止:如何將pass用戶輸入傳遞給數組,然後多次輸入它們,然後用PHP打印數據?

</head> 
<body> 
<form method= "post";> 
<input type="text" name="courses[]" /> 
<br><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 
<?php 
$courses = $_POST['courses']; 
foreach($courses as $key => $n) { 
    echo $n; 

    } 
?> 

有人可以請幫助或至少給我一些方向?

+1

您的意思是說您爲表單的每次提交添加一個項目到數組中? – Qirel

+0

以某種方式是的,我需要它,以便用戶可以添加一個課程,按提交,它會顯示,然後沖洗並重復每個課程顯示在前面,以某種方式,用戶將使陣列成長 –

回答

1

爲了實現你想要的,我建議使用會話。請記住,這些不會被永久保存,所以如果你正在尋找一個持久的解決方案,你應該使用一個數據庫來存儲它們英寸

PHP不記得我最後的請求是什麼,所以你需要將它存儲在某個地方,因此我建議使用會話。您目前使用「HTML數組」,但只有一個,所以它並不能真正幫助任何事情。只需使用普通輸入,並將其添加到存儲在會話中的數組中。

注意,session_start()應該之前的任何輸出放置,所以只是把它放在你的文件的頂部。

我做了一些輕微的改動,以及提高代碼(檢查是否值設置與否等)

<?php 
session_start(); 
?> 
<!-- the start of your HTML goes here --> 

<form method="POST"> 
    <input type="text" name="courses" /> 
    <br /><br /> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

<?php 
// First we check if the form has been sent and we have a value 
if (!empty($_POST['courses'])) { 
    if (!isset($_SESSION['courses'])) 
     $_SESSION['courses'] = array(); // Initialize the array if it doesn't exist 

    $_SESSION['courses'][] = $_POST['courses']; // Add the value to our array 
} 

// If there are values to show, print them! 
if (!empty($_SESSION['courses'])) { 
    foreach ($_SESSION['courses'] as $course) { 
     echo $course."<br />"; 
    } 
} 
?> 

按照評論:

如果你想添加更多的信息如名稱和說明,你需要增加相應的投入,並相應地改變會話陣:

<form method="POST"> 
    <input type="text" name="courses" /> 
    <input type="text" name="name" /> 
    <input type="text" name="description" /> 
    <br /><br /> 
    <input type="submit" name="submit" value="Submit"> 
</form> 

<?php 
// First we check if the form has been sent and we have a value 
if (!empty($_POST['courses'])) { 
    if (!isset($_SESSION['courses'])) 
     $_SESSION['courses'] = array(); // Initialize the array if it doesn't exist 

    // Add the value to our array 
    $_SESSION['courses'][] = array("code" => $_POST['courses'], 
            "name" => $_POST['name'], 
            "description" => $_POST['description']); 
} 

// If there are values to show, print them! 
if (!empty($_SESSION['courses'])) { 
    foreach ($_SESSION['courses'] as $course) { 
     echo "Code: ".$course['code']. 
       ", name: ".$course['name']. 
       ", description: ".$course['description']. 
       "<br />"; 
    } 
} 
?> 

,然後如果你想清除的陣列,可以簡單地取消設置,使用

unset($_SESSION['courses']); 
+0

這正是我所需要的,謝謝你,我可以用對課程和名稱的描述做同樣的事情嗎? –

+0

是的,你需要一個額外的輸入字段和會話中的另一個索引。 – Qirel

+0

好吧,以及如果我想清除所有輸入的數組呢? –

相關問題