Максимизация универсальности формы: отправка одной и той же формы для разных целей с помощью двух кнопок отправки в PHP

В веб-разработке часто встречаются ситуации, когда вам необходимо отправить форму для различных целей. Один из способов добиться этого — включить две кнопки отправки в одну форму. В этой статье мы рассмотрим несколько методов реализации этой функции с помощью PHP и предоставим вам примеры кода для каждого подхода.

Метод 1. Различение действий по имени кнопки.
Первый метод предполагает использование атрибута nameкнопок отправки, чтобы различать действия. Вот пример фрагмента кода:

<form method="post" action="process.php">
  <!-- Form fields here -->

  <input type="submit" name="action1" value="Action 1">
  <input type="submit" name="action2" value="Action 2">
</form>

В вашем скрипте обработки PHP (process.php) вы можете проверить, какая кнопка была нажата, используя суперглобальный элемент $_POST:

if (isset($_POST['action1'])) {
  // Action 1 logic here
} elseif (isset($_POST['action2'])) {
  // Action 2 logic here
}

Метод 2. Использование скрытых полей.
Другой метод предполагает использование скрытых полей для различения действий. Вот пример:

<form method="post" action="process.php">
  <!-- Form fields here -->

  <input type="hidden" name="action" value="action1">
  <input type="submit" value="Action 1">

  <input type="hidden" name="action" value="action2">
  <input type="submit" value="Action 2">
</form>

В вашем скрипте обработки PHP вы можете получить доступ к выбранному действию, используя суперглобальный элемент $_POST:

if ($_POST['action'] === 'action1') {
  // Action 1 logic here
} elseif ($_POST['action'] === 'action2') {
  // Action 2 logic here
}

Метод 3: использование JavaScript/jQuery.
Если вы предпочитаете решение на стороне клиента, вы можете использовать JavaScript или jQuery для обработки нажатий кнопок и динамического изменения действия формы или выполнения запросов AJAX на основе нажатой кнопки. Вот пример использования jQuery:

<form id="myForm" method="post">
  <!-- Form fields here -->

  <input type="submit" class="action-btn" data-action="action1" value="Action 1">
  <input type="submit" class="action-btn" data-action="action2" value="Action 2">
</form>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
  $(document).ready(function() {
    $('.action-btn').click(function(e) {
      e.preventDefault();
      var action = $(this).data('action');
      $('#myForm').attr('action', 'process.php?action=' + action);
      $('#myForm').submit();
    });
  });
</script>

В скрипте обработки PHP (process.php) вы можете получить доступ к выбранному действию через суперглобальные переменные $_GETили $_POST, в зависимости от того, использует ли форма GET или POST. как метод.