Модальное окно после цикла if

157
20 марта 2018, 02:24

Здравствуйте. На сайте есть форма, находящаяся в модальном окне: поле ввода, заполняемое пользователем и кнопка отправить.

<form id="transferCase-form" action=""  method="post">
<p><input class="paidtext" type="text" id="bTC" placeholder="" name="from_case" /></p>
<p><input class="btn-cr" type="submit" value="" id="transfetFrom" name="trans" /></p>
<p><input class="btn-cr" type="submit" value="" id="transfetFromAll" name="transall" /></p>
</form>

И обработчик, находится на этой же странице:

if (isset($_POST['trans'])) {  
                        if(isset($_POST["from_case"]) && $_POST["from_case"] != "") {
                            $from_case = (float) htmlspecialchars($_POST["from_case"]);
                            unset($_POST["from_case"]);
                            if ($from_case <= 100):
                                /*операции*/
                                header('Location: http://cryptozep.com/dashboard/');
                                exit;
                            else: echo 
                                "<script type='text/javascript'>
                                    $(document).ready(function() {
                                    if(window.location.href.indexOf('#myModal')) {
                                        $('#myModal').modal('show');
                                    }
                                    });
                                </script>"; 
                            endif;
                            $from_case = 0;
                        }
                    }
                    else if (isset($_POST['transall'])) {
                        /*другие операции*/
                    } 

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

Подскажите, пожалуйста, что нужно поменять или в какую сторону смотреть.

Answer 1

Обратите внимание на $from_case, я не вижу, что вы ей присваиваете какое-то значение.
Так же, после обновления страницы, значение $_POST не меняется. Тоесть после использования переменной, вы должны ее удалить (unset($_POST['from_case']))

UPDATE:

if (isset($_POST['trans'])) {
    if(isset($_POST["from_case"]) && $_POST["from_case"] != "") {
        $from_case = (float) htmlspecialchars($_POST["from_case"]);
        unset($_POST["from_case"]);
        print "<h1>from_case: ".$from_case."<h1>"; //это для проверки значения. Вдруг там что-то другое
        if ($from_case <= 100):
            /*операции*/
            header('Location: http://');
            exit;
        else: echo 
            "<script type='text/javascript'>
                $(document).ready(function() {
                    if(window.location.href.indexOf('#myModal')) {
                    $('#myModal').modal('show');
                }
                });
            </script>";
        endif; 
        $from_case = 0;   
    }
}
else if (isset($_POST['transall'])) {
    /*другие операции*/
} 

NEW UPDATE

Мы забыли с вами про одно правило :)) PRG - Post-Redirect-Get :) Про него можно прочитать тут: http://www.theserverside.com/news/1365146/Redirect-After-Post

Так что, работающий код вот он (я модальное окно не создавал, но вы на его закрытие повесьте событие и в нем удаляйте #myModal из адресной строки):

<!doctype>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script type='text/javascript'>
     $(document).ready(function() {
        if(window.location.href.indexOf('myModal') > 0) {
            alert("Modal");
        }
    });
</script>
<?php
if (isset($_POST['trans'])) {
    if(isset($_POST["from_case"]) && $_POST["from_case"] != "") {
        $from_case = (float) htmlspecialchars($_POST["from_case"]);
        if ($from_case <= 100):
            /*операции*/
            header('Location: /test.php');
            exit;
        else: 
            header('Location: /test.php#myModal');
            exit;
        endif; 
        $from_case = 0;   
    }
}
else if (isset($_POST['transall'])) {
    /*другие операции*/
} 
?>
<form id="transferCase-form" action=""  method="post">
<p><input class="paidtext" type="text" id="bTC" placeholder="" name="from_case" /></p>
<p><input class="btn-cr" type="submit" value="Trans" id="transfetFrom" name="trans" /></p>
<p><input class="btn-cr" type="submit" value="Trans All" id="transfetFromAll" name="transall" /></p>
</form>
</body>
</html>
READ ALSO
подстрока в строке PHP?

подстрока в строке PHP?

Есть у меня строка, например "Рога и копыта отзывы"мне необходимо средствами PHP получить из нее строку без слова "отзывы"

134
Принцип создания dashboard

Принцип создания dashboard

Добрый деньИзучаю laravel, пробую сделать простой дашборд, у которого есть несколько страничек с таблицами и графиками

151
Как различать input text?

Как различать input text?

Есть таблица учета товара где есть возможность продать товар в нужном количествеПроблема в том что input type text с одинаковыми классами и именами

131
Ошибка: Headers already sent in

Ошибка: Headers already sent in

Такая ссылка есть

190