If you want the ability to add multiple products to the basket in one go, you can do so by adding an extra level to your regular form called add_to_basket, and let it be an array containing what you would normally POST for individual products.
You can use this very simple example from a landing page:
<form action="" method="post">
<{section name="i" loop=$products}>
<h3><{$products[i]->getName()|escape}><h3>
<{assign var="index" value=$smarty.section.i.index}>
<input type="hidden" name="add_to_basket[<{$index}>][product_id]" value="<{$products[i]->getProductId()}>"/>
<input type='hidden' name="add_to_basket[<{$index}>][amount]" value="1"/>
<{/section}>
<input type="submit" value="Add all to cart">
</form>
The important thing in the above is that add_to_basket[] has a unique id for each product. In the example, the index from the section that loops the products through is used.