Я так понял тему не разобрали? Если нет вот мой вариант:
Тут 2 способа или прелодить всё и просто прятать не нужные значения при изменение 1 селекта либо использовать Ajax и лодить второй силект асинхроно.
Ajax:
PHP код:
<select id="first">
<option value="<?php echo $t2_id; ?>"><?php echo $t1_name; ?></option>
</select>
<select id="second" disabled> //дисаблед для красоты
</select>
//value это id по котому мы будем фильтровать второй селект
Немного JS(Чтоб работало потребуется jQuery Библиотека).
PHP код:
$('#first').on('change', function() {
var data = 'id='+$(this).val();
$.ajax({
type:'POST',
url: url.php, //url где будет обрабатыватся запрос
data: data,
success:function(data){
$('#second').html(data).prop('disabled', false);
}
});
});
В PHP который мы указали в JS как файл для обработки ..url.php
PHP код:
$id = intval($_POST['id']); убираем мусор остовляем только цифры
$query = "SELECT t2_name FROM table WHERE t2_id = $id";
//делаем запрос в БД t2_name где t2_id выбранные в перовм селекте
Получаем array
делаем Loop
foreach($values as $value){
echo '<option>'.$value['t2_name'].'</option>';
//это всё появится внутри нашего второго селекта
}
Я не вдавался в подробности как вы данные с базы получаете возможно вы используете 3rd party helper типо AdoDB или другой.
Надесь помог если что пишите