I have product pages with a piece of text that contains the price, that I store into the object repository. However, all the products are displayed in the same page but with different query strings that contains a different price for each product. QTP will only recognize the text as different objects, even though it is only the text that is changing.
Remove the text part from your identification properties in the object repository, or setup a regular expression to just look for the dollar sign(and probably have to add some more in order to ensure you still get the right object). Then use a GetROProperty call to retrieve the value at run-time while still keeping your object definition generic.
When you operate the object you shouldn't use the "value" or "innertext" (or similar) property as one of its characteristics.
You have to change the properties of the objects you operate in the repository.
In the object repository not in your code. Look at the "209.97" object and its identification properties.
If you're using a local repository, go to resources - object repository. Navigate through the tree to your object and it will show you all of the properties you are using to identify and you can add to/delete from/modify those properties through the ui interface.
The code is just half the picture(as long as you're not using descriptive programming anyway).
I'm going to have to refer you to the help documentation on Object Repositories at this point as these are very basic concepts but require an initial learning curve you either need a local mentor or your own trial and error to understand.
Spend some time in the QTP User Guide - Working with Test Objects - Managing Test Objects in Object Repositories.