2016-11-15 2 views
2

У меня есть задание, над которым я работал последние несколько дней. Я пытаюсь передать данные пользователя в массив, т. Е. Пользователь будет вводить идентификатор курса, например cpsc340, а затем отобразит его, затем в той же строке пользователь будет набирать 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

Вы имеете в виду, что вы добавляете один элемент в массив для каждой подачи формы? – 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

хорошо, а что, если я хотел очистить массив всех входов? –

Смежные вопросы