Как мне отобразить несколько строк ввода с помощью этого кода?

#php #html #arrays #post

#php #HTML #массивы #Публикация

Вопрос:

Я хочу, чтобы пользователь ввел animal и оно перешло на строку ниже их предыдущего ввода.

     <!DOCTYPE html>
<html>
<head>
    <title> Will Proj. 2</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <h1> Animal Form</h1>

<form action="" method="post">
  Enter animal:<br>
  <input type="text" name="animal"><br><br>
  <input type="Submit" value="Add Animal">
</form>

<?php
function display()  {
    $animal = $_POST['animal'];
    echo "$animal <br>";
}
if(isset($_POST['animal'])){
    display();
}
    ?>

</body>
</html>
  

В настоящее время он отображает только 1 строку за раз и обновляет строку новыми входными данными.

Комментарии:

1. Сохраните их в сеансе или в базе данных. Зависит от того, на какой срок вы хотите их сохранить.

2. Или, если вы на самом деле не заботитесь о их сохранении (в сообщении, строго говоря, не ясно, что вы делаете), тогда полностью избавьтесь от PHP и просто используйте Javascript.

3. сохраните их в сеансе, файлах cookie или базе данных

4. или, если вы хотите показать полную историю поиска любому пользователю, то база данных — лучший вариант.

5. Добавьте его в session var, а затем повторите этот var — это может помочь: php.net/manual/en/function.session-start.php

Ответ №1:

 <?php

session_start();

if (!isset($_SESSION['animals']) amp;amp; $_POST['animal']) {
   $_SESSION['animals'] = $_POST['animal'].'<br>';
} elseif (isset($_SESSION['animals']) amp;amp; $_POST['animal']) {
   $_SESSION['animals'] .= $_POST['animal'].'<br>';
}

?>

<!DOCTYPE html>
<html>
<head>
  <title> Will Proj. 2</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
   <h1> Animal Form</h1>
   <form action="" method="post">
     Enter animal:<br>
     <input type="text" name="animal"><br><br>
     <input type="Submit" value="Add Animal">
   </form>

   <?php if (!empty($_SESSION['animals']) { echo $_SESSION['animals']; } ?>
</body>
</html>
  

Комментарии:

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

2. Спасибо за ответ, я делаю это для назначения класса, и я еще не изучил сессию, поэтому я не думаю, что я должен использовать это. Я думал, что есть способ использовать для добавления переменных в массив, который затем отображает их?

3. A только увеличивает значение, например. если $ i= 1 и $ i , то $ i = 2. Но это не работает с PHP POST, только с JavaScript или jQuery.

Ответ №2:

 <!DOCTYPE html>
<html>
<head>
        <title> Will Proj. 2</title>
        <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
        <h1> Animal Form</h1>

<form action="" method="post">
    Enter animal:<br>
    <?php if(isset($_POST['animal'])){
        foreach($_POST['animal'] as $animal){
            echo '<input type="hidden" name="animal[]" value="'.$animal.'" >';
        }

    } ?>
    <input type="text" name="animal[]"><br><br>
    <input type="Submit" value="Add Animal">
</form>

<?php
function display()  {
        $animals = $_POST['animal'];
        foreach($animals as $animal){
            echo "$animal <br>";
        }
}
if(isset($_POST['animal'])){
        display();
}
?>

</body>
</html>