I got tired of reading through page after page after page to see if someone had responded to this question regarding the SORT ORDER of product options. I made a mySQL change in the product_info.php file as follows:
OLD VERSION:
$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'" );
UPDATED VERSION:
$products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "' Order by products_options_values_name ASC" );
This update orders the options alphabetically according to the name of the option. You may change the way it is sorted (e.g., by products_options_values_id). I realize there are other contributions that are supposed to make these adjustments. I have not had any luck getting them to work with my configuration in an amount of time that would not put me behind with my clients. I think the contributions would be easier and more robustly helpful, but this is a quick fix for those who are in a hurry.
I make no promises about testing or errors. You use this at your own risk as I am also using it at my own risk. Please remember to back up before you make changes.