Kalkhouri
Kalkhouri

Reputation: 341

How to store POST values for each form in an array?

Basically the code is supposed to be simple yet it is not working! First page:

<?php
$i = 1;
$var;
while($i != 10)
{
    $var="
    <form id='upload' action='test2.php' method='POST'>
        <input type='hidden' name='test' value='{$i}'>
        <input class='buttom' name='album' id='submit' value='Go to album' type='submit'>
    </div>  ";
    $i = $i+1;
    echo $var;
}
?>

Second page:

<?php
echo $_POST['test'];
?>

when I run the code I always get the last value only (9) ... I need to have different value for each button .. can you help me?

Upvotes: 0

Views: 3201

Answers (4)

Tyler Sebastian
Tyler Sebastian

Reputation: 9448

It's a little more work than what Mahesh's answer would require

First, a question: do you really want 10 forms - or do you want one form with 10 questions. Keep in mind that $_POST will only contain values from the form which was submitted (read: one form).

I think you want something like

<form id="upload" action="test2.php" method="POST">
    <?php for ($i = 0; $i < 10; $i++) { ?>
        <input name="test[]" type="hidden" value="<?=$i?>">
    <?php } ?>
    <button type="submit">submit</button>
</form>

edit: given your response below, why not use query parameters?

<a href="test2.php?page=<?=$i?>">Go to Album <?=$i?></a>

Upvotes: 0

Don&#39;t Panic
Don&#39;t Panic

Reputation: 41810

You don't need multiple forms or hidden inputs to achieve this. You can just use buttons, and set their values to $i.

echo "<form id='upload' action='test2.php' method='POST'>";
for ($i = 0; $i < 10; $i++) {
    echo "<button type='submit' name='test' value='$i'>Go to album</button>";
}
echo '</form>';

In test2.php, $_POST['test'] will have the $i value of the button you clicked.

Upvotes: 1

Ryan Cady
Ryan Cady

Reputation: 333

The problem with the other proposed solution is that you will have 10 forms, but you won't be able to submit all of the items at once. You will only be able to submit the value of one of them.

I believe you're trying to create 10 input elements instead of 10 separate forms:

<?php
$i = 1;
$var;

$var .= "<form id='upload' action='test2.php' method='POST'>"
while($i != 10)
{
    $var .= "<input type='hidden' name='test[]' value='{$i}'>"
    $i = $i+1;
}

$var .= "<input class='buttom' name='album' id='submit' value='Go to album' type='submit'>
</div>"

echo $var
?>

Here's code that I would suggest instead of what you've got:

<?php
    $html = "<form id='upload' action='test2.php' method='POST'>";
    for ($i = 1; $i <= 10; $i++){
        $html .= "<input type='hidden' name='test[]' value='{$i}'>";
    }

    $html .= "<input class='buttom' name='album' id='submit' value='Go to album' type='submit'>"
    $html .= "</form>";
    echo $html
?>

Upvotes: 1

Mahesh Singh Chouhan
Mahesh Singh Chouhan

Reputation: 2588

Create single form with multiple input elements name as an array to get multiple value's in single input

Try this:

<input type='hidden' name='test[]' value='{$i}'>

Now you will receive an array of test as $_POST['test'] with different values

Upvotes: 1

Related Questions