Quizá en lugar de usar dos while, uno dentro de otro y reducir la cantidad de consultas o peticiones realizadas a la base de datos puedes usar dos consultas.
En la primera consulta obtienes el tipo de producto y rellenas la lista desplegable:
Código PHP:
Ver original<?php
// consulta para obtener los tipos de producto
$tipos=mysql_query( "SELECT * FROM tipo ORDER BY nombre");
// crear y rellenar lista de tipo de producto
?>
<select name="filtro">
<?php
?>
<option value="<?=$row3['1'];?>"><?=$row3['0'];?></option>
<?php
}
?>
</select>
Para la consulta de productos supongo que puedes dejarla más o menos como la tenías:
Código PHP:
Ver originalmysql_query( "SELECT * FROM productos WHERE iddis=".$_REQUEST['iddis']." order by idtipo ASC");
Y para aplicar el filtro:
Código PHP:
Ver original$sql="SELECT * FROM productos WHERE iddis=$_REQUEST['iddis']";
if($_POST['idtipo']){
$sql .= " AND idtipo=$_POST['idtipo']";
}
Es posible que en estos ejemplos se encuentren errores de escritura o de uso de comillas o falta de {$_POST['idtipo']}, etc. (hace tiempo que no programo)
El código se vería más limpio usando clases y sin mezclar tanto código php con html...