HTML-форма не передает входные значения с помощью метода post / get - PullRequest
0 голосов
/ 25 ноября 2018

Это раздел моей HTML-формы:

<form method ="post" action="switch.php">
    <p class="option">Favorite Book: <input type = "text" name = "book" id="book" size = "25" /> </p>
    <input class="submit" type="submit" name="submit" value="SUBMIT" />
</form>

Это раздел моего php-кода:

if(isset($_POST['book'])){
    $person1book=$_POST['book'];
    $person2book=$_POST['book'];
}else{
    $person1book="Pride and Prejudice";
    $person2book="Crime and Punishment";
}

У меня в основном есть форма, которая должна изменить значение переменнойесли ввод не оставлен пустым.

Я пробовал:

  • Метод get без везения
  • $ _ ЗАПРОС без везения

Это просто выглядит какесли форма ввода не представляет ничего.

Если вы видите что-то, что мне не хватает, я был бы очень признателен за помощь!

* отредактируйте с дополнительным объяснением:

На одной странице у меня есть форма, гдеПользователь имеет возможность выбрать человека и заполнить свою любимую книгу.Затем я выкладываю его в switch.php, где переменные меняются, если заполнена форма ввода.Switch.php также перенаправляет страницу на другую страницу, которая зависит от того, какого человека выбрал пользователь, который отображает свою любимую книгу.У каждого человека есть любимая книга по умолчанию, но ее можно изменить, если пользователь заполняет форму, кроме случаев, когда я заполняю форму, всегда отображается значение по умолчанию.

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Почему мои пустые представления не заменяются?

При пустых значениях первое условие (isset) все равно будет true .Чтобы предотвратить это, я добавил бы условие !empty($variable) к isset($_POST['book']), чтобы пустые значения на этом не останавливались.


Как бы это исправить?

if(isset($_POST['book']) && !empty($_POST['book'])){
    $person1book=$_POST['book'];
    $person2book=$_POST['book'];
}else{
    $person1book="Pride and Prejudice";
    $person2book="Crime and Punishment";
}

Они также должны быть перенаправлены.Как мы можем это сделать?

Существует множество способов сделать это логически, но вы используете элемент option, чтобы пользователи выбирали свою личность на html-странице.Вы можете сохранить этот сайт с помощью PHP sessions.

Подробнее о сеансах PHP вы можете прочитать в Руководстве W3 по PHP5 .

PHP может перенаправлять пользователей с помощью header().В этом случае мы использовали header('Location: /1') и header('Location: /2'), в зависимости от человека.

Подробнее о заголовках PHP вы можете прочитать в руководстве по PHP .

index.html

<form method ="post" action="switch.php">
    <p class="option">Favorite Book: <input type = "text" name = "book" id="book" size = "25"/></p>
    <select name="person" required>
        <option value="1">Select a person</option><!--Defaults to one if not specified.-->
        <option value="1">Person1</option>
        <option value="2">Person2</option>
    </select>
    <br/><br/>
    <input class="submit" type="submit" name="submit" value="SUBMIT" />
</form>

switch.php

<?php session_start();

if(isset($_POST['book']) && !empty($_POST['book'])){
    $person1book=$_POST['book'];
    $person2book=$_POST['book'];
}else{
    $person1book="Pride and Prejudice";
    $person2book="Crime and Punishment";
}

if ($_POST['person'] == 1) {
    $_SESSION['person'] = $person1book;
    header('Location: /1');
} else if($_POST['person'] == 2) {
    $_SESSION['person'] = $person2book;
    header('Location: /2');
}
?>

/ 1 / index.php

<?php session_start();

echo "<b>Person1</b> page with book: <b>" .$_SESSION['person']. "</b>.";
echo "<br/><hr/><b>Output:</b></br>" .$_SESSION['new'];


?>

/ 2 / index.php

<?php session_start();

echo "<b>Person2</b> page with book: <b>" .$_SESSION['person']. "</b>.<br/>";
echo "<br/><hr/><b>Output:</b></br>" .$_SESSION['new'];


?>

Решение

Solution


Первоначальный ответ:

---

Before
===
[![Before Solution (broken)][1]][1]

---

After
===
[![After Solution (fixed)][2]][2]
    
---
  [1]: https://i.stack.imgur.com/h6NQS.gif
  [2]: https://i.stack.imgur.com/pGjEv.gif
0 голосов
/ 25 ноября 2018

Здесь все выглядит хорошо

<form method="POST" action="switch.php">
    <p class="option">Favorite Book: <input type = "text" name="book" id="book" size="25" /> </p>
    <input class="submit" type="submit" name="submit" value="SUBMIT" />
</form>

Если вы публикуете на той же странице, удалите действие

if(empty($_POST['book'])) {
    $person1book = "Pride and Prejudice";
    $person2book = "Crime and Punishment";
}else{
    $person1book = $_POST['book'];
    $person2book = $_POST['book'];
}
...