За последние 24 часа нас посетили 36902 программиста и 7900 роботов. Сейчас ищут 1696 программистов ...

Вывод сообщения после отправки формы

Тема в разделе "PHP для новичков", создана пользователем Seotime, 27 фев 2023.

Метки:
  1. Seotime

    Seotime Активный пользователь

    С нами с:
    12 май 2021
    Сообщения:
    13
    Симпатии:
    0
    День добрый. Прошу помощи с простым кодом, но блин не работает. Подробнее:
    Есть сайт autosollers.ru, на нём есть форма отправки сообщений. Код простой
    Код (Text):
    1. <form action="mail.php" method="post" class="request-form ftco-animate">
    . Собственно mail.php - обработчик, ничего сложного, в конце mail.php стоит редирект
    Код (Text):
    1. header("Location: http://www.autosollers.ru");
    . Здесь вопросов нет. Но при подключении вывода сообщений об успешной отправке (вывожу кодом
    Код (Text):
    1.  <input type="submit" value="Отправить" class="btn btn-primary py-3 px-4" id="zayavka" onClick="modal();">
    и соответственно скрипт
    Код (Text):
    1. <script type="text/javascript">
    2. <div id="modal" style="display: none;">Скрытый блок</div>
    3. function modal() {
    4.     document.getElementById('modal').style.display = "block";
    5. }
    6. </script>
    т.е. при нажатии кнопки отправить должен быть виден срытый блок - но его нет.
    Где неправ, подскажите?
     
  2. Survivor

    Survivor Новичок

    С нами с:
    8 фев 2023
    Сообщения:
    93
    Симпатии:
    19
    Так это не работает.
    Есть варианты реализации, например записать успешное действие в сессию и вывести её на странице, а после разрушить.

    mail.php
    PHP:
    1. $_SESSION["success"] = 'Успех';
    index.php
    PHP:
    1. if ( !empty ( $_SESSION["success"] ) )
    2. {
    3.  print ( $_SESSION["success"] );
    4.  unset ( $_SESSION["success"] );
    5. }
    Либо с использованием jquery + ajax, примеров в google достаточно.
    И в случае с ajax, ты сможешь легко манипулировать данными на странице как пожелаешь.
    Скрывать/Показывать блоки, выводить информацию.
     
  3. Seotime

    Seotime Активный пользователь

    С нами с:
    12 май 2021
    Сообщения:
    13
    Симпатии:
    0
    Спасибо. Красивое решение. Сейчас попробую.
    --- Добавлено ---
    Попробовал. Результат тот же. У меня на html сайт, вставил <? код ?>
    --- Добавлено ---
    Сделал так
    Код (Text):
    1. <?php
    2. session_start();
    3. if(isset($_SESSION['success']) && $_SESSION['success'])) : ?>
    4.     <div class="alert-success">Успех .........</div>
    5. <?php $_SESSION['success'] = null; endif; ?>
    , ну и соответственно класс подредактирую что-бы красиво выводилось. И исчезало через некоторое время.
     
  4. Seotime

    Seotime Активный пользователь

    С нами с:
    12 май 2021
    Сообщения:
    13
    Симпатии:
    0
    Ещё вопрос по теме.
    Код (Text):
    1. <?php
    2. session_start();
    3. if(isset($_SESSION['success']) && $_SESSION['success'])) : ?>
    4.     <div class="alert-success">Спасибо! Сообщение отправлено.</div>
    5. <?php
    6. unset ( $_SESSION['success'] );
    7. $_SESSION['success'] = null; endif; ?>
    . В index деинициализирую переменную $_SESSION['success']. По логике при перезагрузке страницы div alert-success не должен выводиться, но он отображается.
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    это тебе так кажется... что деинициализируешь...

    PHP:
    1. unset ($_SESSION['success'] );
    тут удалил

    а следуюущей строкой опять определил
    PHP:
    1. $_SESSION['success'] = null
     
  6. Seotime

    Seotime Активный пользователь

    С нами с:
    12 май 2021
    Сообщения:
    13
    Симпатии:
    0
    Точно. Спасибо. Но не помогло. При перезагрузке сообщения так же выводятся.
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    а почему бы им не выводиться? ...
    а вообще так синтаксис не приемлю ... в каждой строчке теги

    хотя-бы так
    PHP:
    1. <?php
    2. if(isset($_SESSION['success']) && $_SESSION['success'])) {
    3.     echo '<div class="alert-success">Спасибо! Сообщение отправлено.</div>';
    4.     unset($_SESSION['success'] );
    5. }
    6. ?>
     
  8. Seotime

    Seotime Активный пользователь

    С нами с:
    12 май 2021
    Сообщения:
    13
    Симпатии:
    0
    Вывели один раз, далее unset - сбрасываем переменную., при перезагрузке страницы проверяем если переменная success установлена, то выводим сообщение. Логика такая была.