Задать вопрос
@Leushinayliya

Отправить форму с двух кнопок?

У меня в форме две кнопки отправить, как мне понять с какой была отправлена форма?
<form class="form-validate form" action="send_mail.php" method="POST"  id="forms">
                            <div class="row">
                            <div class="form-group col-md-6">
                                <label for="name">Имя</label>
                                <input type="text" id="name" name="name"  class="form-control  required name form-control-name"
                                    placeholder="Введите имя" required>
                            </div>
                            <div class="form-group col-md-6">
                                <label for="phone">Телефон</label>
                                <input id="phone" name="phone" class="form-control form-control-tel " type="tel" name="telephone"
                                    placeholder="Введите телефон" required>
                            </div>
                            </div>
                            <div class="d-flex ">
                                <button class="btn btn-primary m-t-30 m-r-20" type="submit">Купить участок</button>
                            <button class="btn btn-primary m-t-30" type="submit">Продать участок</button>
                            </div>
                            
                        </form>

"use strict"

document.addEventListener('DOMContentLoaded', function () {
	const form = document.getElementById('forms');
	const formModal = document.getElementById('feedback-form');
	form.addEventListener('submit', formSend);
	formModal.addEventListener('submit', formSend);
	async function formSend(e) {
		e.preventDefault();

		let error = formValidate(form);

		let formData = new FormData(form);

		if (error === 0) {
			let response = await fetch('send_mail.php', {
				method: 'POST',
				body: formData
			});
			if (response.ok) {
				let result = await response.json();
				alert(result.message);
				form.reset();
			} else {
				alert("Ошибка");
			}
		} 

	}


	function formValidate(form) {
		let error = 0;
		let formReq = document.querySelectorAll('._req');

		for (let index = 0; index < formReq.length; index++) {
			const input = formReq[index];
			formRemoveError(input);

			if (input.getAttribute("type") === "checkbox" && input.checked === false) {
				formAddError(input);
				error++;
			} else {
				if (input.value === '') {
					formAddError(input);
					error++;
				}
			}
		}
		return error;
	}
	function formAddError(input) {
		input.classList.add('_error');
	}
	function formRemoveError(input) {
		input.classList.remove('_error');
	}
	
});

<?php
  use PHPMailer\PHPMailer\PHPMailer;
  use PHPMailer\PHPMailer\Exception;

  require 'phpmailer/src/Exception.php';
  require 'phpmailer/src/PHPMailer.php';

  $mail = new PHPMailer(true);
  $mail->CharSet = 'UTF-8';
  $mail->setLanguage('ru', 'phpmailer/language/');
  $mail->IsHTML(true);

  //От кого письмоindexland@bk.ru
  $mail->setFrom('indexland@bk.ru', 'indexland.ru');
  //Кому отправить
  $mail->addAddress('indexland@bk.ru');
  //Тема письма
  $mail->Subject = 'Заявка на звонок с indexland.ru'.' ';

  

  //Тело письма
  $body = 'Данные формы'.' ';
  if(trim(!empty($_POST['name']))){
    $body.='  '.'Имя:'.' '.$_POST['name'];
    }
    if(trim(!empty($_POST['phone']))){
    $body.='  '.'Телефон:'.' '.$_POST['phone'];
    }
  

  $mail->Body = $body;

  //Отправляем
  if (!$mail->send()) {
    $message = 'Ошибка';
  } else {
    $message = 'Данные отправлены!';
  }

  $response = ['message' => $message];

  //header('Refresh: 1; URL=index.html');
  header('Content-type: application/json');
  echo json_encode($response);
  
?>
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
добавить на <button>поля name и value
тогда нажатая кнопка будет видна в $_POST
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
А если кнопку вообще нажимать не будут? Форма может отправиться и по энтеру.

Но в принципе можно например так (без привлечения javascript)

<button type="submit" formaction="send_mail.php?act=buy">Купить участок</button>
<button type="submit" formaction="send_mail.php?act=sell">Продать участок</button>


в php $_GET['act']
Ответ написан
Комментировать
vovka3003
@vovka3003
Фрилансер. Инженер систем безопасности.
Скрытое поле... Добавить склейкой в $mail->Subject, не..?
Ответ написан
Комментировать
@Alexshev7
Отслеживать клик по кнопке, записывать результат в скрытое поле и отправлять так же, как данные из других полей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы