Как обрабатывать несколько форм, используя один скрипт php - PullRequest
0 голосов
/ 21 октября 2011

У меня есть несколько форм, и у меня есть один php-скрипт, который я хочу использовать для обработки этих форм, но когда я нажимаю на submit для любой из форм ..., сценарий обрабатывается по количеству форм с помощью кнопки submit'submitForm' в этом случае предупреждение будет отображаться 3 раза вместо одного!Что я не правильно делаю?

NB.Я надеюсь, что это имеет много смысла?

HTML-код

<form action="" name="form1" method="post">
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form2" method="post">
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form3" method="post">
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="text" value="" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

PHP скрипт

<?php 
     if (isset($_POST['submitForm'])) { 

     echo('<script>alert("Form Submitted")</script>');

     }
?>

Ответы [ 4 ]

8 голосов
/ 21 октября 2011

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

это не так.
Как только ваши формы имеют правильное форматирование, ваша браузер отправит только текущий.
(и PHP здесь не имеет никакого отношения)

однако вся страница будет перезагружена, если вы это имеете в виду.Это нормально - когда вы отправляете форму, страница предназначена для перезагрузки.Если вам нужно другое поведение, вы должны объяснить свои пожелания.

Также обратите внимание, что ни одно из ваших текстовых полей не отправляется на сервер, так как они не имеют имен.

Я предполагаю, что вопрос, который я должен задать, состоит в том, как передать конкретную форму php вместо того, чтобы писать несколько сценариев php для обработки каждой формы !!!

ну, кажется, вы хотите спросить, как отличить эти формы.

добавить скрытое поле в каждый

<input type="hidden" name="step" value="1" />

, а затем в PHP

if ($_POST['step'] == 1) {
  //first form
}
if ($_POST['step'] == 2) {
  //second
}
3 голосов
/ 21 октября 2011

Это представляет одну форму из многих php.Скопируйте, вставьте, протестируйте и изучите.

<?php
     if (isset($_POST['submitForm'])) { 

    print_r($_POST);

     }

?>
<form action="" name="form1" method="post">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form2" method="post">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

<form action="" name="form3" method="post">
<input type="text" value="" name="A" />
<input type="text" value="" name="B" />
<input type="text" value="" name="C" />
<input type="text" value="" name="D" />
<input type="Submit" value="Submit Form" name="submitForm" />
</form>

Использование a, b, c, d для первой формы, e, f, g, h для второй формы и i, j, k, lдля третьей формы и отправки второй формы выдается следующий вывод:

Array
(
    [A] => e
    [B] => f
    [C] => g
    [D] => h
    [submitForm] => Submit Form
)
1 голос
/ 28 июля 2015

@ Jay

На самом деле это не сложно.

Как только вы предоставите имена форм, ваша работа будет завершена. ДОМ делает все остальное.

написать один блок php для выполнения ваших функций (создание / обновление / получение / удаление) Какая бы кнопка не была нажата, по умолчанию она отправляет только элементы, вложенные вместе с ней.


if(!empty($_POST)){
    if(isset($_POST['submit'])){
        print "<pre>";
        var_dump($_POST); // write your code here as you would 
        print "<pre>";
    }
}

попробуйте это с вашей формой выше.

0 голосов
/ 13 декабря 2017

Если вам нужны динамические формы, вы можете попробовать код ниже. Оператор while можно изменить, чтобы получать данные из БД и использовать вместо него foreach. Надеюсь, ты это знаешь. Здесь я использовал while ($ n <10) для 10 динамических форм. Вы также можете использовать тег, как показано ниже, если вам нужны отдельные имена форм. </p>

<form action="" name="form<?=$n?>" method="post">

Это создаст отдельные имена форм, такие как form1, form2 и т. Д., Но не обязательно здесь.

<code>    <?php
if (isset($_POST['submitForm'])) { 
    echo '<pre>';
    print_r($_POST);
    echo '
'; } $ П = 0; while ($ n <10) { $ П ++; ?> <? PHP } ?>

Пример страницы с выводом, когда я щелкаю строку 5 ..

...