2016-11-15 5 views
2

私は過去数日間私が取り組んできた課題を持っています。私はユーザーデータを配列に渡そうとしています。つまり、ユーザーはcpsc340のようなコースIDを入力してからそれを表示し、同じ行にcpsc 567と入力してから印刷しますその上などオリジナルとの下に、ここで私はこれまで持っているもの、それを次のとおりです。パスユーザーの入力を何度も配列に渡して何回も渡したいのですが、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

フォームの送信ごとに1つの項目を配列に追加することを意味しますか? – Qirel

+0

ところで、私はそれをユーザーがコースを追加し、submitを押して、それが表示され、次にリンスし、各コースが以前のように表示されるようにしたいと思っています。 –

答えて

1

あなたが望むことを達成するために、セッションを使うことをお勧めします。これらは永遠に保存されないので、恒久的な解決策を探している場合は、データベースを使用して格納する必要があります。

PHPは最後のリクエストを覚えていないので、どこかに格納する必要があるので、私はセッションを使用することを提案します。現在は "HTML配列"を使用していますが、1つだけなので、実際には何の助けにもなりません。通常の入力を使用し、それをセッションに格納された配列に追加するだけです。

session_start()は出力前に配置する必要があるので、ファイルの先頭に配置してください。

私はコメントを1として

<?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

大丈夫です。すべての入力の配列をクリアしたい場合はどうすればいいですか? –

関連する問題