Две рабочие формы на одной странице

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

Первая форма:

<div id = "form-main">
   <form class = "montform" id = "reused_form" enctype=&quot;multipart/form-data&quot;>
      <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=&quot;multipart/form-data&quot;>
   <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);

Что ж, я бы посоветовал проверить, какая форма была отправлена, прежде чем пытаться проверить поля, которые могут не существовать в отправленной форме.

RiggsFolly 07.04.2018 22:20
Небольшое примечание:ini_set('display_startup_errors', 1); не имеет значения
RiggsFolly 07.04.2018 22:20

Начните с присвоения кнопкам атрибута name= и назначьте каждой кнопке другое имя. Затем вы можете проверить, какая кнопка вызвала отправку

RiggsFolly 07.04.2018 22:22

Спасибо за ваш ответ. Я добавил к кнопкам отдельный атрибут имени. Первая форма отправляется, а вторая оставляет ссылку в браузере «localhost: 3000 /…» и не отправляет.

Macieyou 07.04.2018 22:51
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
76
1

Ответы 1

Во-первых: я почти уверен, что обе ваши формы отправлены / отправлены без каких-либо проблем. В вашей второй форме отсутствует закрывающий тег div </div>, но это не должно создавать таких проблем.

Под "первое отправлено правильно, а второе - нет." я предполагаю, что вы имеете в виду, что вы не получаете электронную почту на выбранный адрес при использовании второй формы. Если это так, то:

Я не уверен, как работает ваш валидатор, но похоже, что ваша проблема - процесс проверки.

Почему? : В вашем PHP-коде вы проверяете имя, электронная почта, телефон, компания, сообщение, но только ваша первая форма имеет шанс удовлетворить их, потому что в ней есть эти поля. В вашей второй форме нет всех тех полей, которые необходимо проверить, поэтому ваша проверка не удастся. Как следствие, вы не получите никаких электронных писем (если валидатор работает таким образом).

Чтобы ваша вторая форма работала на этом php-коде, вам необходимо: 1. различите эти две формы в вашем php-коде и примените к ним правильную проверку или 2. добавьте недостающие поля во вторую форму (вы все равно можете сделать их скрытыми с помощью html / css, но вам нужно установить их значения по умолчанию и отправить их полностью, я не рекомендую это делать).

Да, ты прав. Но как заставить «различать эти две формы в вашем php-коде и применять к ним правильную проверку»?

Macieyou 07.04.2018 23:00

Один из простых подходов - создать скрытые поля (с тем же именем) внутри ваших форм и установить для них разные значения по умолчанию (например, 0 и 1). После того, как вы отправите такую ​​форму, вы можете проверить свой php-код, какое значение вы получили, и соответственно подтвердить.

Emir 07.04.2018 23:41

Я добавил оставшиеся поля во вторую форму и добавил к ним значение, но форма по-прежнему не отправляется.

Macieyou 07.04.2018 23:53

Другие вопросы по теме