On the update page select list you have:
<option value="<?php echo($Category->getColumnVal("ProductContentsID")); ?>" <?php if (!(strcmp($row_WADAgallery_contents['ProductContentsID'],$Category->getColumnVal("CategoryID")))) {echo "selected=\"selected\"";} ?> style="padding: 5px 10px 5px 10px;"><?php echo($Category->getColumnVal("ProductName")); ?></option>
the value should match the comparison, so I think it should probably be:
<option value="<?php echo($Category->getColumnVal("CategoryID")); ?>" <?php if (!(strcmp($row_WADAgallery_contents['ProductContentsID'],$Category->getColumnVal("CategoryID")))) {echo "selected=\"selected\"";} ?> style="padding: 5px 10px 5px 10px;"><?php echo($Category->getColumnVal("ProductName")); ?></option>
On the results page you should be moving your subcategory recordset into your category repeated region and filtering it based on the row in the category.