Add multiple products to the basket at a time
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.