Primero debes obtener 'desde' y 'hasta' para el precio seleccionado. Tal y como tienes el código, puedes aprovechar la query para obtener los rangos de precios y guardarlos en un array asociativo:
Código PHP:
<?php
/* Arrays para guardar los valores 'desde' y 'hasta' de los rangos de precios */
$rangosPreciosDesde = array();
$rangosPreciosHasta = array();
$tablaprecios = mysql_query("SELECT * FROM precios ORDER BY id ASC"); // Seleccionamos los precios de la tabla precio
while ($registroprecio = mysql_fetch_array($tablaprecios)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada precio en la tabla
/* Extraemos los valores 'desde' y 'hasta' y los guardamos en los arrays que hemos creado */
$rangoPreciosDesde[$registroprecio['id']] = $registroprecio['desde'];
$rangoPreciosHasta[$registroprecio['id']] = $registroprecio['hasta'];
?>
<option value="<?php echo $registroprecio['id']; ?>"><?php echo $registroprecio['texto']; ?></option>
<?php
} // termina la zona de repeticion
mysql_free_result($tablaprecios); // se libera la memoria usada por la tabla
?>
Como digo, obtenemos los valores 'desde' y 'hasta' para el precio seleccionado (si se ha seleccionado) y luego, como bien dice cesarpi80 usamos estos valores para filtrar la query junto a las demás condiciones:
Código PHP:
<?php
$sql = "SELECT propiedades.*, ciudades.*, vivienda.* FROM propiedades, ciudades, vivienda WHERE propiedades.idciudad = ciudades.id && propiedades.idvivienda = vivienda.id ";
if (isset($_POST['tipovivienda'])) {
$sql .= " AND propiedades.idvivienda = '" . ($_POST['tipovivienda']) . "'";
if (intval($_POST['ciudad']) > 0) {
$sql .= " AND propiedades.idciudad = '" . intval($_POST['ciudad']) . "'";
}
}
/* Aprovechando los arrays anteriores, obtenemos los valores 'desde' y 'hasta' para el precio seleccionado por el usuario */
if (isset($_POST['precio'])
{
$desde = $rangoPreciosDesde[$_POST['precio']];
$hasta = $rangoPreciosHasta[$_POST['precio']];
/* Añadimos los criterios a la query */
$sql .= " AND vivienda.precio >= ' . $desde . ' AND vivienda.precio <= ' . $hasta;
}
$sql .= " ORDER BY referencia ASC";
$tabla = mysql_query($sql);
while ($registro = mysql_fetch_array($tabla)) {
?>
Espero que se entienda bien la explicación. He puesto comentarios en el código para facilitar el entendimiento.
Salu2,
Carlos.