This sounds like a many to many relationship (multiple products linking to multiple categories) -- so initially you will want to have 2 tables, one for product information and one for your categories ..
Now what you will want is a third table that will simply link categories and products together -- the table structure might be something like this:
id - int - auto increment - internal key
catid - int - category id
prodid - int - product id
Now you can place a product in multiple categories while having the flexibility of modifying an individual product record (not having one per category)
Another table will need to be used for your category organization .. So you might set it up something like this:
id - int - auto increment - internal key
catid - int - category id
parentcatid - int - the "parent" category id
So basically lets say you have the following categories:
products (1) - shirts (2) - short sleeve (3)- white (4)
What you will want to do is have the following records in the table to explain this layout:
id | catid | parentcatid
1 | 1 | 0 (no parent)
2 | 2 | 1
3 | 3 | 2
4 | 4 | 3
Now lets say you want to add another sub category under products, pants (5) -- you could add the following to the table:
id | catid | parentcatid
1 | 5 | 1 (no parent)
Now, when you display the category, you can do a search for the parentcatid and pull any additional catid's that act like a sub category .. from this you can then pull products associated and the product info from the table ..
This is particularly nice because it will allow you to have unlimited categories in any type of heiarchy and have the ability to place the same product in multiple categories (you could technically build on this idea and have category keywords and have the category auto-populate with products that fit a predefined set of attributes (ie white cotton shirts) ..
Hope this helps.