I think it would be best to step back a little on this so we can both be clear on what the problem is and what you would like.
On this page you can have items listed dynamically, that is that they come from a recordset. You can have the recordset filtered to limit the number of items that show on this page. If you are filtering by category then you should only see items from that category on the page.
In the page you posted and the sql you posted you have many instances of the query that selects items from the items table based on the category. You should remove all of these except for one to test it properly. Instead of adding in new ones you should be modifying the existing recordset on the page.
When it comes to getting the same item with different options added to the cart as unique items you must do a couple things first. You will need to have a column in your cart to record the bag weights. In your add to cart server behavior under the bindings tab you will need to adjust the 'If item in cart' settings, set the action to 'add new' in here. This will ensure that if you add an item that has already been added to the cart it will add as a new item rather than update the quantity of the existing item.
You should pick a single issue to resolve and post back with more info on that issue. Once we have resolved one we can move onto the other, I will be looking for your reply.