Reputation: 5201
I have had this issue a number of times so I wonder if others have it too or anyone knows a good solution for it.
$i = 1;
<form method="POST" action="submit.php">
while($i < 10) {
<p> info </p>
<input type="hidden" value="$i" name="number" />
<input type="submit" value="accept" />
<input type="submit" value="decline" />
$i++;
}
</form>
The problem I have is that it always submits the highest value. For this example I will have 10 submit and decline buttons and want to determine if they click on the 4th accept button that the server side language will recognize it as the 4th submit button. I have added a variable to the input hidden name = number$i and it works but sometimes I have a loop of 50-100 and it seems like there is a better way to collect the data with a different variable name for that many options.
Any help would be great. Thanks.
Upvotes: 0
Views: 1941
Reputation: 96407
The problem I have is that it always submits the highest value.
Nope. All values are submitted – but PHP overwrites parameters with the same name.
You could use a name like number[]
– the square brackets will make PHP generate an array of the submitted values, rather than overwriting them.
But this won’t help you here, since your submit buttons will still submit the whole form – so you will get all the values, no matter what submit button was pressed.
Either you use individual forms for each item, or you will have to pass the info with the submit buttons themselves. Of course you don’t want to put that info into the value, because that’s the buttons text – but you could put it into the name, in the form of accept[37]
– then you’ll get an array with the key 37, so you would only have to see which key is used in the array received.
But if you don’t want to have to submit the form over and over again for each single item – then maybe you should rather use radio buttons for the accept/decline choices, and then submit them all at once.
Upvotes: 3