I have two submit buttons in a form. How do I determine which one was hit serverside?
If you give each one a name, the clicked one will be sent through as any other input.
<input type="submit" name="button_1" value="Click me">
I think you should be able to read the name/value in your GET array. I think that the button that wasn't clicked wont appear in that list.
Make sure each has an id= attribute. The one used should have a value assigned. Just check and make sure it isn't null and it was the one selected.
This is extremely easy to test
<form action="" method="get">
<input type="submit" name="sb" value="One">
<input type="submit" name="sb" value="Two">
<input type="submit" name="sb" value="Three">
</form>
Just put that in an HTML page, click the buttons, and look at the URL
RoBorg is right, but be careful of something - at least IE6 and Firefox3 behave differently when you hit "Enter" to submit instead of clicking a submit button. FF3 seems to send the name/value pair of the first submit input along with the rest of the form, while IE6 doesn't send any of the submit inputs.
You can give each input a different value and keep the same name:
<input type="submit" name="action" value="Update" />
<input type="submit" name="action" value="Delete" />
Then in the code check to see which was triggered:
if ($_POST['action'] == 'Update') {
//action for update here
} else if ($_POST['action'] == 'Delete') {
//action for delete
} else {
//invalid action!
}
The only problem with that is you tie your logic to the text within the input. You could also give each one a unique name and just check the $_POST for the existence of that input:
<input type="submit" name="update_button" value="Update" />
<input type="submit" name="delete_button" value="Delete" />
And in the code:
if (isset($_POST['update_button')) {
//update action
} else if (isset($_POST['delete_button'])) {
//delete action
} else {
//no button pressed
}