Я хочу, чтобы на моей странице были две формы, использующие один и тот же сценарий. Первый отправлен правильно, а второй - нет. Я очень новичок в PHP и понятия не имею, как это делать. Я пытаюсь решить эту проблему, к сожалению, безрезультатно. Я использую phpmailer.
Первая форма:
<div id = "form-main">
<form class = "montform" id = "reused_form" enctype="multipart/form-data">
<p class = "company">
<input name = "company" type = "text" class = "feedback-input" placeholder = "Nazwa firmy" id = "company"/>
</p>
<p class = "name">
<input name = "name" type = "text" class = "feedback-input" required placeholder = "Imię i Nazwisko" id = "name"/>
</p>
<p class = "phone">
<input name = "phone" type = "tel" required class = "feedback-input" id = "phone" placeholder = "Telefon"/>
</p>
<p class = "email">
<input name = "email" type = "email" required class = "feedback-input" id = "email" placeholder = "Adres e-mail"/>
</p>
<p class = "text">
<textarea name = "message" class = "feedback-input" id = "comment" placeholder = "Opis zamówienia"></textarea>
</p>
<button type = "submit" class = "button-blue">Send</button>
</div>
</form>
</div>
Вторая форма:
<div id = "second-form">
<form class = "montform" id = "reused_form" enctype="multipart/form-data">
<p class = "name">
<input name = "name" type = "text" class = "feedback-input" required placeholder = "Imię i Nazwisko" id = "name"/>
</p>
<p class = "phone">
<input name = "phone" type = "tel" required class = "feedback-input" id = "phone" placeholder = "Telefon"/>
</p>
<button type = "submit" class = "button-blue">Send</button>
</form>
handler.php:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
/*
Tested working with PHP5.4 and above (including PHP 7 )
*/
require_once './vendor/autoload.php';
use FormGuide\Handlx\FormHandler;
$pp = new FormHandler();
$validator = $pp->getValidator();
$validator->fields(['name','email','phone','company'])->areRequired()-
>maxLength(50);
$validator->field('email')->isEmail();
$validator->field('message')->maxLength(6000);
$pp->attachFiles(['image']);
$pp->sendEmailTo('[email protected]'); // ← Your email here
echo $pp->process($_POST);
ini_set('display_startup_errors', 1); не имеет значения
Начните с присвоения кнопкам атрибута name= и назначьте каждой кнопке другое имя. Затем вы можете проверить, какая кнопка вызвала отправку
Спасибо за ваш ответ. Я добавил к кнопкам отдельный атрибут имени. Первая форма отправляется, а вторая оставляет ссылку в браузере «localhost: 3000 /…» и не отправляет.






Во-первых: я почти уверен, что обе ваши формы отправлены / отправлены без каких-либо проблем. В вашей второй форме отсутствует закрывающий тег div </div>, но это не должно создавать таких проблем.
Под "первое отправлено правильно, а второе - нет." я предполагаю, что вы имеете в виду, что вы не получаете электронную почту на выбранный адрес при использовании второй формы. Если это так, то:
Я не уверен, как работает ваш валидатор, но похоже, что ваша проблема - процесс проверки.
Почему? : В вашем PHP-коде вы проверяете имя, электронная почта, телефон, компания, сообщение, но только ваша первая форма имеет шанс удовлетворить их, потому что в ней есть эти поля. В вашей второй форме нет всех тех полей, которые необходимо проверить, поэтому ваша проверка не удастся. Как следствие, вы не получите никаких электронных писем (если валидатор работает таким образом).
Чтобы ваша вторая форма работала на этом php-коде, вам необходимо: 1. различите эти две формы в вашем php-коде и примените к ним правильную проверку или 2. добавьте недостающие поля во вторую форму (вы все равно можете сделать их скрытыми с помощью html / css, но вам нужно установить их значения по умолчанию и отправить их полностью, я не рекомендую это делать).
Да, ты прав. Но как заставить «различать эти две формы в вашем php-коде и применять к ним правильную проверку»?
Один из простых подходов - создать скрытые поля (с тем же именем) внутри ваших форм и установить для них разные значения по умолчанию (например, 0 и 1). После того, как вы отправите такую форму, вы можете проверить свой php-код, какое значение вы получили, и соответственно подтвердить.
Я добавил оставшиеся поля во вторую форму и добавил к ним значение, но форма по-прежнему не отправляется.
Что ж, я бы посоветовал проверить, какая форма была отправлена, прежде чем пытаться проверить поля, которые могут не существовать в отправленной форме.