Вызов функции PHP из Javascript запускает обе функции

Что происходит, у меня есть Sweetalert2 на моей странице. Он отображает предупреждение нормально, но когда я нажимаю кнопку отмены, он запускает обе функции php, а не только ту, которая нужна.

Что произойдет, когда я нажму кнопку "Отмена", он вернется на страницу удаления сообщения, в противном случае он удалит сообщение и вернет меня в список.

Вот мой код Любая помощь или предложения приветствуются.

<!doctype html>
<html>
    <head>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.25.0/sweetalert2.all.min.js"></script>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.25.0/sweetalert2.min.css" />
        <?php
            function dontdeletepostphp(){
                $id = $_GET["id"];
                $album = $_GET["album"];
                $url = "viewpost.php?id=" . $id;
                echo $url;
            }

            function deletepostphp(){
                include('db_connect.php');
                $post = $_GET["id"];
                $albumnum = $_GET["album"];
                if($albumnum <> 0){
                    $files = glob('photoalbums/' . $albumnum . '/photos/*');
                    foreach($files as $file){
                        if(is_file($file)){
                            unlink($file);
                        }
                    }

                    $files2 = glob('photoalbums/' . $albumnum . '/thumbs/*');
                    foreach($files2 as $file){
                        if(is_file($file)){
                            unlink($file);
                        }
                    }

                    rmdir("photoalbums/" . $albumnum . "/photos");
                    rmdir("photoalbums/" . $albumnum . "/thumbs");
                    rmdir("photoalbums/" . $albumnum);

                    $sqlalbum = "delete from photoalbum where id=" . $albumnum;
                    mysqli_query($dbcon, $sqlalbum);
                }

                $sqlpost = "delete from posts where id=" . $post;
                mysqli_query($dbcon, $sqlpost);

                mysqli_close($dbcon);
            }
        ?>
            <script>
                function dontdeletepost(){
                    var x="<?php dontdeletepostphp(); ?>";
                    window.location = x;
                }

                function deletepost(){
                    var x="<?php deletepostphp(); ?>";
                    swal({
                        title: 'Post Deleted', 
                        text: 'Post has been deleted. Returning to the posts page.', 
                        type: 'success'
                    }).then(function() {
                        window.location = 'states.php';
                    });
                }               

                function confirmdelete(){
                    swal({
                        title: 'Delete Post',
                        text: 'Are you sure you want to delete this post? You cannot undo this.',
                        type: 'warning',
                        showCancelButton: true,
                        confirmButtonText: 'Delete Post',
                        cancelButtonText: 'Cancel'
                    }).then((result) => {
                      if (result.value) {
                          deletepost();
                      }else{
                          dontdeletepost();
                      }
                    })
                }
            </script>

        <title>Mountain Biking In The US!!</title>
    </head>
    <body>
        <?php
            echo "<script>confirmdelete();</script>";
        ?>
    </body>
</html>

**** РЕДАКТИРОВАТЬ ****

Спасибо за все ответы до сих пор.

Я изменил код в теле, вынул php и оставил код javascript следующим образом (хотя я не думаю, что это изменит способ выполнения кода, просто понял, что мне не нужны теги php):

<body>
    <script>confirmdelete();</script>;
</body>

Я понимаю, что PHP будет загружен до Javascript, но давайте посмотрим, правильно ли мое мышление.

Когда страница загружается, она загружает функции PHP, но не должна запускать их, пока они не будут вызваны.

Затем будет загружен JavaScript, после чего будет запущена функция подтверждения удаления JavaScript, создавая окно подтверждения Sweetalert2. Если я нажимаю "Удалить сообщение", он должен запустить функцию javascript deletepost, и в этот момент он должен вызвать функцию php deletepostphp.

И если я нажму "Отмена", он должен запустить функцию dontdeletepostphp php.

Я не думаю, что функции php работают до тех пор, пока не появится всплывающее окно Sweetalert2, и я не сделаю выбор, просто не уверен, почему обе функции выполняются. Я думал, что функции php не будут работать до тех пор, пока не будут вызваны. Я загрузил страницу только с php-кодом, и функции не запускались без вызова, как они должны были.

Спасибо еще раз за помощь.

1 ответ

Вы помещаете функцию php в переменную javascript, во-первых, переменная javascript не принимает переменную php без отображения. А также ваш стиль кодирования не очень хороший, пожалуйста, создайте внешний файл для php и javascript.

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