2010-12-07 2 views
1

У меня есть MySQL, генерирующий формы на одной странице с тем же действием и кнопкой отправки. Количество форм варьируется. Все они называют один и тот же файл PHP при его отправке. Кроме того, у меня есть один файл PHP, который собирает данные после отправки. См. Пример ниже.Несколько форм и один PHP-приемник

Проблема заключается в том, когда подана одна из форм, значения путаются с разными полями из разных форм. Пример: Когда отправлен form1, PHP получает значения form6.

Как я могу убедиться, что каждая форма представляет свои собственные значения?

HTML код Пример:

<form method="POST" action="index.php?action=newhistory" name="history_1"> 
    <input type="hidden" name="id" value="1"> 
    <input type="text" name="history"> 
    <input type="submit" name="add_history" value="Submit"> 
</form> 

<form method="POST" action="index.php?action=newhistory" name="history_6"> 
    <input type="hidden" name="id" value="6"> 
    <input type="text" name="history"> 
    <input type="submit" name="add_history" value="Submit"> 
</form> 

PHP Пример кода:

case 'newhistory': 

    $id = $_POST['id']; 
    $history = $_POST['history']; 

    $sql = mysql_query("INSERT INTO history (id, history) VALUES('".$id."', '".$history."')", $link); 

    break; 

Любые решения?

+0

Почему вы используете одинаковые имена для всех полей, хотя они принадлежат к разным формам? – 2010-12-07 15:05:08

+0

Чтобы сохранить сложность создания переменной для каждого поля. Кроме того, поля генерируются автоматически, поэтому я не знаю, сколько их будет в будущем. Надеюсь, это имеет смысл. – 2010-12-07 15:24:47

ответ

1

Он отправит содержимое, инкапсулированное тегами <form></form>. Атрибут атрибута одного из форм action на той же странице не должен создавать проблему, которую вы описываете.

Код, который вы написали, выглядит хорошо. Проверьте свой код HTML и убедитесь, что у вас есть теги <form></form>, окружающие элементы каждой формы.

+0

Да, я сделал глупую ошибку, вместо формы написал форум ... Спасибо. – 2010-12-07 15:27:19

1

Пожалуйста, используйте другие названия для кнопки отправки, затем проверьте.

if(isset($_POST('add_history')) 
{ 
} 

if(isset($_POST('add_history1')) 
{ 
} 
0

Если вы нажали submit в одной форме, браузер должен отправлять только значения из этой формы. Когда form1 представлен, PHP не получит значения form6. Возможно, вы не закрыли тег формы должным образом, или какой-либо JavaScript будет диким.

Смежные вопросы