2012-03-15 3 views
1

У меня есть страница php, которая имеет несколько тегов формы. каждая форма имеет дело с определенной вкладкой. Это просто поиск, но каждая вкладка обеспечивает поиск либо даты, номера, либо имени.html php, определяющий данные отправки формы

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

Это что-то с $ _POST или $ _REQUEST?

<form name="invoice" action="result.php" method="POST"><br><br> 
    <form name="customer" action="result.php" method="POST"><br><br> 
    <form name="customer" action="result.php" method="POST"><br><br> 

В каждом из перечисленных выше содержится таблица с полем ввода и кнопка отправки.

Спасибо,

ответ

1

Вы могли бы, например, в каждой кнопки отправки добавить имя и значение, например, так:

<form> 
    <input type="submit" name="action" value="search_invoice" /> 
    ... 
</form> 

<form> 
    <input type="submit" name="action" value="search_customer" /> 
    ... 
</form> 

затем в РНР

switch($_POST['action']) { 
    case 'search_invoice': 
     // ur code 
     break; 

    case 'search_customer': default: 
     // ur code 
     break; 
} 

Имейте в виду, хотя, более старые версии из firefox неправильно отправляет ключ => пара значений ввода типа submit.

Другое решение, которое я обычно использую, чтобы положить <input type="hidden" name="action" value="your_customAction" />

+0

Спасибо mate ... Я продолжу скрытое поле, как было предложено ранее, но полезно иметь альтернативы –

+2

Internet Explorer не отправляет кнопку отправки в качестве переменной POST, если пользователь нажал клавишу ввода для отправки формы. – MrCode

5

Я предложил бы добавить скрытое поле ввода для каждой формы с указанием имени формы:

<input type="hidden" name="formname" value="invoice" /> 

Тогда вы можете получить это с [ «»] FORMNAME переменной $ _POST.

+0

полностью пропустил мой разум!Спасибо mate :) –

-2

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

EDIT: -

Если у вас есть только один элемент в каждой форме, вам лучше всего использовать @ решение Петтера, потому что IE, имеющий ошибка с одним текстом element- Что это, если вы отправите форму с помощью ввода ключ кнопки отправки не будет установлен в $_POST.

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

+0

кнопка отправки не всегда отправляется - если вы отправляете форму через ключ ввода в некоторых случаях – dldnh

+0

Это хорошее решение для определения, какая кнопка отправки была использована для отправки формы, но когда есть несколько форм , скрытый ввод более безопасен (поскольку его нельзя обойти, используя правый браузер и нажав enter в текстовом поле). – Quentin

+0

@ dldnh: Попробуйте сами: –

1

Один из способов - сохранить в каждой форме другой скрытый ввод, а затем проверить этот скрытый ввод на стороне сервера, чтобы выяснить, в какой форме он находится.

<input type="hidden" name="formname" value="invoice" /> 
<input type="hidden" name="formname" value="customer" /> 
<input type="hidden" name="formname" value="customer2" /> 
0
  1. Поиск должны быть выполнены с использованием метода GET, POST не
  2. нет name атрибута не отправляемого на сервер.
  3. Если каждая вкладка обеспечивает поиск либо даты, номера, либо имени - почему у вас нет названий полей поиска соответственно: "date" для поиска даты и т. Д.?