same idea, you just need to modify the recordset code to add an order by clause:
$query_ProductCategories = "SELECT * FROM productcategories WHERE CategoryID = (SELECT ProductCategoryID FROM products WHERE ProductCategoryID = CategoryID AND ProductLive <> 0 LIMIT 1) ORDER BY CategoryName";
and
$query_ProductMenu = sprintf("SELECT * FROM products WHERE ProductLive <> 0 AND COALESCE((SELECT GroupingID FROM productoptions WHERE productoptions.ProductID = products.ProductID LIMIT 1), ProductID) = ProductID AND ProductCategoryID = %s ORDER BY CategoryName", GetSQLValueString($catParam_ProductMenu, "int"));