Вопрос по php, mysql – Несколько форм и одна страница обработки

4

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

Хорошо. Если я отправлю форму A, на странице действий не будет неопределенного индекса для переменной формы B, которая не была отправлена, и, конечно, использование GET не рекомендуется.

Спасибо за ваше время и терпение.

Ваш Ответ

3   ответа
3

затем включите в страницы формы.

if(!empty($_POST)){
 include 'form_process.php';
}

form_process.php должен содержать только класс / функцию без эха или распечатки.

поочередно вы можете установить URL-адрес действия на той же странице, а затем перенаправить обратно на соответствующую страницу.

<form id="add-profile-form" action="form_controller.php" method="post">
    <input type="hidden" name="act" value="adding"/>
    <!-- form 1. -->
</form> 

<form id="edit-profile-form" action="form_controller.php">
    <input type="hidden" name="act" value="editing"/>
    <!-- form 2. -->
</form>

form_controller.php

if(isset($_POST['act']){
    if($_POST['act'] == 'adding'){
        //process form1
    }else if($_POST['act'] == 'editing'){
        //process form2
    }

    header("Location: success.php");
}
0

action одинаковые для обеих форм.

Вы должны сделать некоторые условия и написать индивидуальный функционал дляForm A и дляForm B в зависимости от формы источника.

Вы можете проверить параметры в действии, как @Ami использовал.

/submit.php?action=register или же/submit.php?action=activate

Итак, у вас есть такой код:

if ($_GET['action'] == 'register') {
  // Register user
} else if($_GET['action'] == 'activate' {
  // Activate user
}

Тем не менее, вы также можете просто изменить значение кнопки отправки и иметь параметр action одинаковым для обеих форм:

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}
@ami ... не могли бы вы объяснить, что вы подразумеваете под ветвлением кода
Хорошо. Если я отправлю форму A, на странице действия не будет неопределенного индекса для переменной формы B, которая не была отправлена, и, конечно, использование GET не рекомендуется ... Спасибо
@dotunoyesanmi, вам просто нужно разветвить свой код.
@dotunoyesanmi, посмотрите мой ответ для примера. Разветвление означает использованиеif или какая-либо другая подобная функция управления потоком, чтобы изменить то, что вы делаете, основываясь на некоторых критериях.
9

чтобы сделать это. Довольно часто другой параметр передается в атрибуте действия элемента формы, например/submit.php?action=register или же/submit.php?action=activate.

Итак, у вас есть такой код:

if ($_GET['action'] == 'register') {
  // Register user
} else if($_GET['action'] == 'activate' {
  // Activate user
}

Однако вы также можете просто изменить значение кнопки отправки и иметь атрибут action одинаковым для обеих форм:

if (isset($_POST['submit'])) {
  if ($_POST['submit'] == 'register') {
    // Register user
  } else if($_POST['submit'] == 'activate') {
    // Activate user
  }
}

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