Dmitry Yantsen
Dmitry Yantsen

Reputation: 1185

Using two forms on one html page

I need to use two forms on one page. When I click submit button on the first one - everything works fine. But when i click on the second one - POST returns array of 0 elements. What could be a problem?

first:

<form action="MAIN.php" method="POST">
    <input type="submit" name="Switch" value="<?php if ($_POST) { if ($_POST['Switch']=="Оперативный анализ данных") echo "Интеллектуальный анализ данных"; else echo "Оперативный анализ данных"; } else echo "Интеллектуальный анализ данных"; ?>">
    <input type="hidden" name="Report" value="GoodsPlace">
</form>

second:

<form action="MAIN.php" method="POST>
        <input type="hidden" name="Switch" value="Оперативный анализ данных">
        <select name="Report">
            <option <?php if ($_POST && $_POST['Report']=="GoodsPlace") echo "selected"?> value="GoodsPlace">Товар - Место</option>
            <option <?php if ($_POST && $_POST['Report']=="PlaceGoods") echo "selected"?> value="PlaceGoods">Место - Товар</option>
            <option <?php if ($_POST && $_POST['Report']=="TimeGoods") echo "selected"?> value="TimeGoods">Время - Товар</option>
            <option <?php if ($_POST && $_POST['Report']=="GoodsTime") echo "selected"?> value="GoodsTime">Товар - Время</option>
            <option <?php if ($_POST && $_POST['Report']=="PlaceTime") echo "selected"?> value="PlaceTime">Место - Время</option>
            <option <?php if ($_POST && $_POST['Report']=="TimePlace") echo "selected"?> value="TimePlace">Время - Место</option>
        </select>
        <input type="submit" name="submit" value="Показать">
    </form>

Upvotes: 1

Views: 1819

Answers (3)

Isaac
Isaac

Reputation: 11805

On the submit, you could create a new form in javascript and join the two forms together (loop through child nodes) like this

var form = document.createElement("form");
form.method="post";
var forms = document.getElementsByTagName("form");
for(var i=0,j=forms.length; i<j; i++)
{
    for(var k=0,l<forms[i].childNodes.length; k<l; k++)
    {
        var node = forms[i].childNodes[k];
        if(node.name&&node.value!=null)
        {
            form.appendChild(node.parentNode.removeChild(node));//Move Node
        }
    }
}
form.submit();

Or, even better, on all inputs you want submitted, attach the class "tosubmit":

var form = document.createElement("form");
form.method="post";
var inputs = document.getElementsByClassName("tosubmit");
for(var i=0,j=inputs.length; i<j; i++)
{
    form.appendChild(inputs[i].parentNode.removeChild(inputs[i]));//Move Node
}
form.submit();

Source: Move nodes

Upvotes: 0

Jocelyn
Jocelyn

Reputation: 11413

Your HTML code is invalid:

<form action="MAIN.php" method="POST>

There is a missing double-quote after POST:

<form action="MAIN.php" method="POST">

It is likely to cause your form to fail.

Upvotes: 2

Fabio
Fabio

Reputation: 23510

I think it just needs you to give each form a name. Example name=something and name=somethingelse to get rid of the problem.

Upvotes: 1

Related Questions