#php #html #forms #submit
#php #HTML #формы #Отправить
Вопрос:
У меня есть несколько форм, и у меня есть один php-скрипт, который я хочу использовать для обработки этих форм, но когда я нажимаю «Отправить» для любой из форм…скрипт обрабатывается по количеству форм с помощью кнопки отправки с именем «submitForm» в этом случае предупреждение будет отображаться 3 раза вместо одного раза! Что я делаю не так?
Примечание. Надеюсь, это имеет смысл?
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>');
}
?>
Комментарии:
1. Что вы имеете в виду, говоря «он отправляет все формы»? Три формы, которые я вижу, одинаковы, за исключением их имени, которое не отправляется на php. И ваш тест в PHP проверяется в массиве $_POST вместо $_GET.
2. Я думаю, вопрос, который я должен задать, заключается в том, как мне передать определенную форму на php вместо написания нескольких php-скриптов для обработки каждой формы!!!
3. пытался ответить. НАДЕЮСЬ, я наконец правильно понял ваш неопределенный вопрос
4.Без указания атрибута name для каждого
input
ничего не отправляется, не говоря уже обо всех трех формах. В результате я не могу воспроизвести ваше утверждение о том, что все три формы отправляются с предоставленным вами кодом.
Ответ №1:
когда я нажимаю «Отправить» для какой-либо конкретной формы, она отправляет все формы.
это не так.
Как только ваши формы будут правильно отформатированы, ваш браузер отправит только текущую.
(и PHP здесь не при чем)
однако вся страница будет перезагружена, если вы это имеете в виду. Это нормально — когда вы отправляете форму, страница предназначена для перезагрузки. Если вам нужно другое поведение, вы должны объяснить свои желания.
Также обратите внимание, что ни одно из ваших текстовых полей не отправляется на сервер, поскольку у них нет имен.
Я думаю, вопрос, который я должен задать, заключается в том, как мне передать определенную форму на php вместо написания нескольких php-скриптов для обработки каждой формы!!!
ну, кажется, вы хотите спросить, как отличить эти формы.
добавьте скрытое поле в каждый
<input type="hidden" name="step" value="1" />
а затем в PHP
if ($_POST['step'] == 1) {
//first form
}
if ($_POST['step'] == 2) {
//second
}
Комментарии:
1. я не использую html для отправки col формы. Если вы правильно прочитали мой пост и просмотрели мои коды, вы поймете, что я использую PHP для обработки form…so когда форма отправляется, php обрабатывает форму, но при этом он обрабатывает и все остальные формы! Вот что я имею в виду
2. «Отправить одну форму из многих, используя php » — это точное название твоего вопроса, чувак. Вините себя. Что касается ваших форм — разместите здесь соответствующий воспроизводимый код, чтобы доказать свои слова.
3. Привет, полковник… означает ли это, что мне придется вручную добавлять шаги для каждой формы? т.Е. Если у меня 10 форм, мне придется добавлять операторы ifs 10 раз? если это так, то это будет проблемой, поскольку формы генерируются динамически из базы данных!
4. @Jay если ваши формы генерируются динамически, вы также можете добавлять любые поля динамически. Хотите немного научиться программированию?
Ответ №2:
Это отправляет одну форму из многих в 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. чем это отличается от моего @Herbert?
2. Я только что исправил проблему???? Это все еще не имеет смысла, но я переместил php-скрипт в начало всей формы, и теперь он работает? Я предполагаю, что сценарий также был реплицирован с каждой формой, поскольку у каждой формы была копия сценария! Я не знаю, но сейчас это работает! Спасибо
3. Извините @Jay. Я не видел ваших комментариев до сих пор. Я думаю, вы ответили на свой собственный вопрос. Основное отличие заключается в том, что все поля ввода имеют имена. По-видимому, второе отличие (не очевидное из вашего первоначального вопроса) заключается в том, что код находится вверху. В любом случае, я рад, что у вас все получилось.
Ответ №3:
@Jay
На самом деле это не сложно.
Как только вы укажете имена форм, ваша работа будет выполнена. DOM делает все остальное.
напишите один php-блок для выполнения ваших функций (создание / обновление / извлечение / удаление) Какая бы кнопка ни была нажата, по умолчанию она отправляет только элементы, заключенные вместе с ней.
if(!empty($_POST)){
if(isset($_POST['submit'])){
print "<pre>";
var_dump($_POST); // write your code here as you would
print "<pre>";
}
}
попробуйте проделать это с вашей формой выше.
Ответ №4:
Я знаю, что это старый пост, но вот как я решаю эту самую проблему. Все, что вам нужно сделать, это убедиться, что кнопки отправки в каждой форме имеют разные имена. Например:
<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="submitForm1" />
</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="submitForm2" />
</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="submitForm3" />
</form>
Затем вы просто проверяете, какая кнопка отправки формы была нажата.
<?php
if (isset($_POST['submitForm1'])) {
echo('<script>alert("Form 1 Submitted")</script>');
} elseif (isset($_POST['submitForm2'])) {
echo('<script>alert("Form 2 Submitted")</script>');
} elseif (isset($_POST['submitForm3'])) {
echo('<script>alert("Form 3 Submitted")</script>');
}
?>
Ответ №5:
Если вам нужны динамические формы, вы можете попробовать приведенный ниже код. Оператор While можно изменить, чтобы извлекать данные из базы данных и вместо этого использовать foreach . Надеюсь, вы это знаете. Здесь я использовал while($n<10) для 10 динамических форм. Вы также можете использовать тег, как показано ниже, если вам нужны отдельные имена форм.
<form action="" name="form<?=$n?>" method="post">
Это создаст отдельные имена форм, такие как form1, form2 и т.д., но здесь это не обязательно.
<?php
if (isset($_POST['submitForm'])) {
echo '<pre>';
print_r($_POST);
echo '</pre>';
}
$n=0;
while($n<10) {
$n ;
?>
<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>
<?php
}
?>
Пример страницы с выводом при нажатии строки 5..