It's adding multiple items because the add to cart code is inside the loop for the rs_drinkcat recordsset. Since the code is inside that recordset loop, it will be repeated for each record in the rs_drinkcat recordset.
You could have the add to cart behavior code on the indix page and reyuse the add to cart button code on your page.
as long as the hidden element for the ID:
<input type="hidden" name="eCart1_1_ID_Add" value="<?php echo $row_rs_products["id_prd"]; ?>" >
is passing the correct ID for the product that should be added to the cart from that any particular widget page, it will work fine.