$row = mysql_fetch_array($result_category); do ..... - это плохо, здесь и do-while совсем не нужен, и выбирается все что и не нужно. Вы явно насмотрелись древних мультиков о я зыке.
![](images/smilies/smile.gif)
А при формировании кода списков удобнее использовать тернарный оператор, то есть все сводится к этому:
while($row = mysql_fetch_assoc($result_category)) echo '<option value="'.$row["type_tovara"].'" '.($select_type == $row["type_tovara"] ? 'selected' : '').'>'.$row["name_cat"].'</option>';
А trim() нужно выполнять при записи данных в базу, а не постоянно при выводе из нее.
Но механизм if(isset($_SESSION["add_type"])) то вызвать js-функцию как echo 'select_type();'... это зачем?
Пусть есть N зависимых списков и пусть они формируются динамически по запросу от предыдущего списка. То есть при запросе страницы первый список заполнен, остальные пусты. Выбор в списках, это ajax запрос и заполнение/изменение списка для которого данные запрашивались
данными возвращенными сервером.
Если нужно
запомнить ранее сделанный выбор в списках, то страницу нужно
отдавать уже с заполненными списками для которых данные запрашивались. То есть
серверный сценарий сразу формирует html код всех этих списков.