Выполнение обработчика формы на одной странице

Тема в разделе "Как сделать...", создана пользователем gamera, 20 июл 2015.

  1. gamera

    gamera Постоялец

    Регистр.:
    15 мар 2010
    Сообщения:
    118
    Симпатии:
    2
    Добрый день, подскажите пожлауйста, как сделать чтобы не было перехода на страницу обработчика, и после заполнения формы, выводилось сообщение о успешном заполнение

    вот сама форма:
    Код:
    <body class="body-modal" style="zoom: 1;">
      <form action="../wp-content/themes/3clicks/save_user.php" method="post" class="modal modal-form">
    
          <div class="modal-body">
              <div id="block-phy" class="block">
             
          <div class="row">
                  <div class="span2 control-group">
              <label for="name"><?php echo __('Name','forma-zakaza');?> <em>*</em></label>
              <input name="name" class="span2" type="text" id="name" value="">        </div>
                      <div class="span2 control-group">
              <label for="surname"><?php echo __('Surname','forma-zakaza');?> <em>*</em></label>
              <input name="surname" class="span2" type="text" id="surname" value="">        </div>
    
            <div class="span2 control-group" id="phy-code-lv">
              <label for="pkod_1"><?php echo __('Personal code','forma-zakaza');?> <em>*</em></label>
              <input style="width: 67px;" name="pkod_1" class="span1" maxlength="6" type="text" id="pkod_1" value="">          <span class="sep">–</span>
              <input style="width: 57px;" name="pkod_2" class="span1" maxlength="5" type="text" id="pkod_2" value="">        </div>
          </div>
          <div class="row">
            <div class="span3 control-group">
              <label for="email"><?php echo __('Email','forma-zakaza');?> <em>*</em></label>
              <input name="email" class="span3" type="text" id="email" value="">        </div>
            <div class="span3 control-group">
              <label for="phone"><?php echo __('Phone','forma-zakaza');?> <em>*</em></label>
              <input name="phone" class="span3" type="text" id="phone" value="">        </div>
          </div>
         
          <div class="modal-footer">
        <input name="type" type="hidden" id="type" value="1">   
        <input type="submit" value="<?php echo __('Submit','forma-zakaza');?>" class="btn btn-success">
      </div>
        </div>
    
    </form>    
    Вот обработчик:
    Код:
    <?php
    if (isset($_POST['name'])) { $name = $_POST['name']; if ($name == '') { unset($name);} }
    if (isset($_POST['surname'])) { $surname=$_POST['surname']; if ($surname =='') { unset($surname);} }
    if (isset($_POST['pkod_1'])) { $pkod_1 = $_POST['pkod_1']; if ($pkod_1 == '') { unset($pkod_1);} }
    if (isset($_POST['pkod_2'])) { $pkod_2 = $_POST['pkod_2']; if ($pkod_2 == '') { unset($pkod_2);} }
    if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} }
    if (isset($_POST['phone'])) { $phone = $_POST['phone']; if ($phone == '') { unset($phone);} }
    
    
    //Для физичеких лиц:
    $name = stripslashes($name);
    $name = htmlspecialchars($name);
    
    $surname = stripslashes($surname);
    $surname = htmlspecialchars($surname);
    
    $pkod_1 = stripslashes($pkod_1);
    $pkod_1 = htmlspecialchars($pkod_1);
    
    $pkod_2 = stripslashes($pkod_2);
    $pkod_2 = htmlspecialchars($pkod_2);
    
    $email = stripslashes($email);
    $email = htmlspecialchars($email);
    
    $phone = stripslashes($phone);
    $phone = htmlspecialchars($phone);
    
    
    
    include ("bd.php");
    
    // если такого нет, то сохраняем данные
    $result2 = mysql_query('INSERT INTO `clients` (name,surname,perskod,email,phone) VALUES ("'.$name.'","'.$surname.'","'.$pkod_1.'-'.$pkod_2.'","'.$email.'","'.$phone.'")');
    
    // Проверяем, есть ли ошибки
    if ($result2=='TRUE')
    {
    echo "заказ принят <a href='index.php'>Главная страница</a>";
        }
    
    else {
    echo "Ошибка! Вы не зарегистрированы.";
         }
    ?>
     
  2. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.639
    Симпатии:
    1.337
    Засунуть перед выводом контента страницы условие - если получен ПОСТ запрос с полем с таким то именем, то обработать форму и вывести "спасибо"
    Иначе - вывод страницы - то что было изначально.
    И завернуть в jquery ajax - решений полно http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form

    PHP:
    if (isset($_POST['name'])) {
    обрабатываем и выводим спасибо
    } else {
    код формы
    }
     
  3. gamera

    gamera Постоялец

    Регистр.:
    15 мар 2010
    Сообщения:
    118
    Симпатии:
    2
    не совсем понял, он же переходит на страницу обработчика и выводит сообщение
    PHP:
    if ($result2=='TRUE')
    {
    echo 
    "заказ принят <a href='index.php'>Главная страница</a>";
        }

    else {
    echo 
    "Ошибка! Вы не зарегистрированы.";
         }
     
  4. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.639
    Симпатии:
    1.337
    Никуда он не выходит.
    Если форма должна обрабатываться на той же самой странице, то в коде этой же страницы прописываем аякс запрос с формы и отправляем его на эту же страницу.
    А он уже скажет или
    echo "заказ принят <a href='index.php'>Главная страница</a>";
    или
    echo "Ошибка! Вы не зарегистрированы.";
    Почитайте что такой jquery ajax и зачем он нужен.
     
  5. Seraferer

    Seraferer Создатель

    Заблокирован
    Регистр.:
    18 дек 2014
    Сообщения:
    18
    Симпатии:
    0
    Мне вот чисто интересно с каких пор аякс стал именно jQuery?
    По сабжу вот хороший плагин для ajax отправки любой формы
     
  6. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.639
    Симпатии:
    1.337
    сказал человек и дал ссылку на jquery плагин :crazy:
    делай на css'е аякс или на чем там еще можно по твоему мнению? Мне без разницы.
    Смысл в использовании плагина когда делается все без них. Он только увесит страницу лишним подключением скрипта.
    Выше я давал ссылку с ТАКОЙ же формой с тем же самым путем работы
     
  7. Seraferer

    Seraferer Создатель

    Заблокирован
    Регистр.:
    18 дек 2014
    Сообщения:
    18
    Симпатии:
    0
    я не хейтил jQuery и не занимался чем-то подобным. Просто чуток поправил тебя вот и всё.
    да это даже во времена dial up'а мало кого волновало.