He probado el código y me da el siguiente error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/d416630/public_html/nuevaweb/Busqueda3.php on line 102
Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /home/d416630/public_html/nuevaweb/Busqueda3.php on line 115
He visto que en el código que me has facilitado habia un error en la parte de :
$sql .= " AND propiedades.precio >= ' . $desde . ' AND propiedades.precio <= ' . $hasta;
Y lo he cambiado a esto:
$sql .= " AND propiedades.precio >= ' . $desde . ' AND propiedades.precio <= ' . $hasta ";
Pero parece que tampoco funciona...
Te dejo el código entero y habiendo introducido tus códigos dentro del mio:
Código PHP:
<?php
$conexion = mysql_connect('localhost', '', '');
mysql_select_db('');
?>
<html>
<head>
<title>Reporte de Propiedades</title>
</head>
<body>
<h1>Búsqueda de Propiedades</h1>
<form name="form1" method="post" action="Busqueda3.php">
<p>
<label>Tipo de vivienda:<br />
<select name="tipovivienda" id="tipovivienda">
<option value="0">--Escoja tipo alquiler--</option>
<?php
$tablavivienda = mysql_query("SELECT * FROM vivienda ORDER BY id ASC"); // Seleccionamos las ciudades de la tabla ciudades
while ($registrovivienda = mysql_fetch_array($tablavivienda)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>
<option value="<?php echo $registrovivienda['id']; ?>"><?php echo $registrovivienda['tipo']; ?></option>
<?php
} // termina la zona de repeticion
mysql_free_result($tablavivienda); // se libera la memoria usada por la tabla
?>
</select>
<br>
</label>
<label>Ciudad:<br />
<select name="ciudad" id="ciudad">
<option value="0">---Escoja la ciudad---</option>
<?php
$tablaciudades = mysql_query("SELECT * FROM ciudades ORDER BY nombre ASC"); // Seleccionamos las ciudades de la tabla ciudades
while ($registrociudad = mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>
<option value="<?php echo $registrociudad['id']; ?>"><?php echo $registrociudad['nombre']; ?></option>
<?php
} // termina la zona de repeticion
mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
</select>
<br>
<label for="precio">Precio máximo</label>
<br/>
<select name="precio" id="precio">
<option value="0">---Cualquier precio---</option>
<?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
?>
</select>
<br>
</label>
<input type="submit" name="cmdBuscar" id="cmdBuscar" value="IR">
</p>
</form>
<table border="1">
<tr>
<td>Referencia</td>
<td>Foto</td>
<td>Tipo Vivienda</td>
<td>Ciudad</td>
<td>Población</td>
<td>Precio</td>
<td>Descripción</td>
</tr>
<?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 propiedades.precio >= ' . $desde . ' AND propiedades.precio <= ' . $hasta ";
}
$sql .= " ORDER BY referencia ASC";
$tabla = mysql_query($sql);
while ($registro = mysql_fetch_array($tabla)) {
?>
<tr>
<td><?php echo $registro['referencia']; ?></td>
<td><img src="ver.php?referencia=<?php echo $registro['referencia']; ?>" width="200" height="150" alt="" /></td>
<td><?php echo $registro['tipo']; ?></td>
<td><?php echo $registro['nombre']; ?></td>
<td><?php echo $registro['poblacion']; ?></td>
<td><?php echo $registro['precio']; ?></td>
<td><?php echo $registro['descripcion']; ?></td>
</tr>
<?php
}
mysql_free_result($tabla);
mysql_close($conexion);
?>
</table>
</body>
</html>
Gracias Carlos.