It sounds like I would need a form for each delete button posting to the destination page.
You actually would -- and SHOULD -- use only one form.
Sending delete commands -- or anything "admin" related -- via anchors is bad practice. If you have ANY user generated data and accidentally end up spitting out markup from the user, or even just links from the user like in a forum post or reply, they can fake that link and possibly sucker someone with add/delete permissions into deleting. It's a form of XSS exploit. Thus you use A form. Singular.
Something people don't realize about HTML forms? With button name/values, only the one you click on as a submit is sent to the server. the other are ignored. Thus for example let's say you had a table of names and prices.
<form action="#" method="post">
<table class="cart">
<caption>Shopping Cart</caption>
<thead>
<tr>
<th scope="col">Item</th>
<th scope="col">Price</th>
<th scope="col">Controls</th>
</tr>
</thead><tbody>
<tr>
<th scope="row">Eb Alto Sax</th>
<td>$1,299</td>
<td><button name="delete" value="1">Delete</button></td>
</tr><tr>
<th scope="row">#2 Alto Sax Reeds, pack of 10</th>
<td>$24.99</td>
<td><button name="delete" value="2">Delete</button></td>
</tr>
</tbody>
</table>
</form>
If you click on the first button, delete = 1 is what gets sent server-side. The second one would be ignored. Likewise you click the second you get delete = 2.
Thus in PHP you could do:
if (array_key_exists("delete", $_POST)) {
// delete $_POST['delete'] here.
}
You could actually leverage get/post array behavior:
name="submit[delete]"
to array_key_exists "submit" and then walk its keys for the action sent to the server, allowing for multiple actions (like add more?) to the same form.
Thus you only need one form.