Ver Mensaje Individual
  #15 (permalink)  
Antiguo 18/06/2009, 06:15
Info23
 
Fecha de Ingreso: mayo-2009
Mensajes: 83
Antigüedad: 15 años
Puntos: 1
Respuesta: Precio máximo con php

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&uacute;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.