Using table tags is fine if the data you are displaying is data that fits into that format (columns and rows) which it does. Converting the layout for products shown when you click a category to use a table and rows will be tricky because we don't already do that by default.
Before adding a single table specific tag (<table />, <tr />, <td />)....
If you revert to the default templates, I would then set "Products per Row" on your Visual Settings page int he control panel to 1. That should show each product in it's own row. It won't look like a row yet, but they won't be side by side.
Then, remove everything you don't want to display from product_detail.tpl.php which should shorten up the layout considerably.
I wouldn't try adding any table code until you have something like this:
example.png
When you have it like that, add <td /> tags in product_detail.tpl.php to separate your columns.
Then, take a look in category.tpl.php. The products are looped through and displayed via this code:
PHP Code:
<!-- products -->
<?php if ($Product_Rows): ?>
<div class="cat_products">
<?php foreach($Product_Rows as $Product_Row): ?>
<div class="box_row <?php print $Product_Row['instance']?>">
<?php foreach($Product_Row['products'] as $Product): ?>
<div class="box_outer <?php print $Product['instance'].' '.$Product['box_width_class'] ?>">
<div class="box_inner" style="<?php if ($Product['height_difference']) print "margin-top: $Product[height_difference]px" ?>">
<?php print $Product['HTML'] ?>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endforeach; ?>
<?php print $Page_Navigation ?>
</div>
<?php endif;?>
If you change that to something like this, it should output a table:
PHP Code:
<!-- products -->
<?php if ($Product_Rows): ?>
<table>
<?php foreach($Product_Rows as $Product_Row): ?>
<tr class="<?php print $Product_Row['instance']?>">
<?php foreach($Product_Row['products'] as $Product): ?>
<?php print $Product['HTML'] ?>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>
<?php print $Page_Navigation ?>
<?php endif;?>