If i'm understanding you correctly, you want the following code, there should be a unique, auto incrementing key field to both the product_cat and product_man tables - i'm assuming it is 'id', if it isn't then just replace id below.

Code:
<tr>
<td width="100">Category</td>
<td><select name="category" cols="50" rows="10" class="" id="category">

<?
$q="select distinct category, id from product_cat order by category asc";
$r=mysql_query($q);
$c=mysql_num_rows($r);
for ($i=0;$i<$c;$i++){
        $a=mysql_fetch_array($r);
        echo '<option value="'.$a['id'].'">'.$a['category'].'</option>';
}
?>

</select></td>
</tr>
product_man works in exactly the same way, just replace ''product_cat' with 'product_man'. 'category' with 'manufacturer'

you need to modify the product table and add columns for product_man and product_cat - in these cols you store the 'id' reference in order to enable you to cross reference the product table with the relevant result in the product_man and product_cat tables. You store the unique id field rather than the text value because it is forcibly unique and immoveable - when you perform updates on the text value of this row (eg changing the name of a category) all products will still point correctly because it is linked via id rather than the text value at the time of adding the product.

hope i haven't misunderstood your question, and that this is some help.