Логика для публикации формы, которая сбрасывает параметр запроса URL? - PullRequest
0 голосов
/ 27 апреля 2018

Я не получаю ожидаемых результатов при обновлении с помощью onchange = "formType.submit ()" в списке выбора.

Я надеялся установить значение PHP $ _POST в качестве нового URL-адреса, но похоже, что при отправке формы это значение отсутствует.

Оригинальный URL: http://example.com/Select-item.php?type=4

<form action="Select-item.php?type=<?php echo $_POST['selItem']; ?>" method="post" id="formType">   
<select name="selItem" id="selItem" onchange="formType.submit()">
    <option value="1">change to 1</option>
    <option value="2">change to 2</option>
    <option value="3">change to 3</option>
</select>
</form>

Я получаю сообщение об ошибке: неопределенный индекс (... Select-item.php? Type = Notice:% 20Undefined% 20index:% 20 ...)

Это правильный способ обновить URL этой страницы, разместив сообщение на той же странице, прочитав значение $ _POST, а затем используя

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

PHP генерирует HTML-код перед его передачей клиенту; после того, как клиент получил код, он отобразит его на веб-сайте.
Причина, по которой ваш код не работает, потому что при выполнении <?php echo $_POST['selItem']; ?> не устанавливается POST-Variable selItem; устанавливается после отправки формы.

Если вы действительно хотите передать selItem как GET и как POST-переменную - возможный способ сделать это - использовать эту функцию (не проверено):

<script>
    function onSelectChange() {
        // Access the select-field and get it's value
        var sel = document.getElementById("selItem");
        var selectedValue = sel.options[sel.selectedIndex].value;

        // Change the target URL of the form
        document.getElementById("formType").action = 'Select-item.php?type='+ selectedValue;
        formType.submit()
    }
</script>

И отредактируйте onChange-Listener в своем выборе: onchange="onSelectChange"

НО Я бы порекомендовал вместо этого использовать GET - таким образом selItem также всегда будет в URL, и вам не нужно проверять $ _GET и $ _POST одновременно

0 голосов
/ 27 апреля 2018

Всегда проверяйте с помощью функции isset () перед использованием $ _POST

Пример:

if(isset($_POST['selItem'])){
//your code here

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...