Веб-формы и PHP

Я пытаюсь добавить новое животное в массив с помощью HTML-формы, а затем отображать содержимое массива каждый раз, когда пользователь вводит новое животное. Вот код, который у меня есть до сих пор. Это работает, просто новое животное не добавляется в список каждый раз, когда я нажимаю кнопку отправки. Он просто заменяет последний введенный.

<!DOCTYPE html>
<html lang = "en">
<head>
<title></title>
</head>
<body>
<form action = "" method = "POST">
What is your favorite animal?<br>
<input type = "text" name = "text" /><br><br>
<input type = "submit" value = "Add Animal" />
</form>

<h2>Animal List</h2>

<?php
echo $_POST['text'];
?>
</body>

Есть десятки способов решить эту проблему, однако, поскольку вы студент, вам разрешено использовать только тот материал, который вы преподали. Вам нужно будет найти способ сохранить введенную информацию либо в поле скрытый на вашей веб-странице, либо сохранить ее в какой-либо переменной сеанс, либо сохранить информацию в файле на диске и данные добавить в файл каждый раз, когда предоставляется новая информация.

Dimi 14.03.2019 17:23

Учитель уже прошел СЕССИИ?

RiggsFolly 14.03.2019 17:25
Опасность: этот код уязвимы для XSS Пользовательский ввод необходимо экранировать, прежде чем он будет вставлен в HTML-документ!.
Quentin 14.03.2019 17:25

@Quentin Вы совершенно правы, но поскольку этот студент, похоже, прошел только первый день курса, может быть немного преждевременно поразить его этой маленькой морщинкой :) Может быть, подождать, пока они не перейдут к пятому дню :) :)

RiggsFolly 14.03.2019 17:28

Лучший вопрос «название» и первоначальная попытка поиска будут иметь «отправка формы php добавить в список» или подобное.

mario 14.03.2019 17:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
70
1

Ответы 1

массив $_POST не сохраняет значения, каждый раз, когда вы отправляете форму, страница обновляется, и новый набор значений передается в массив. Вы можете сохранить значения в $_SESSION by saying $_SESSION['animals'][]=$_POST['text'], а затем каждый раз прокручивать сеанс, чтобы распечатать значения.

Я не думаю, что это действительно то, что вы будете делать в производственной среде, поскольку я думаю, что вы обычно сохраняете данные в своей базе данных, чтобы что-то с ними делать, но, конечно, я не знаю, какова ваша конечная цель :) но я думаю, вы пытаетесь изучить идею/концепцию, так что есть своего рода решение.

Вы также можете добавить скрытый ввод для его создания, я точно не помню, но что-то вроде этого:

<input type = "text" name = "text[]" />
foreach($_POST['text'] as $animal) {
echo '<input type = "hidden" name = "text[]" value = "' . $animal . '"/>';

}

создаст кучу скрытых входных данных с текущими значениями, затем, когда вы нажмете «Отправить» для нового значения, у вас будет массив значений для «текста» который вы можете затем прокрутить, чтобы вывести эхо.

Сессии были упомянуты, но мы не рассматриваем их в этом задании. Мы обсуждаем массивы.

Casey Gibbons 14.03.2019 19:43

Другие вопросы по теме