Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/10/2011, 02:31
miriamgomez
 
Fecha de Ingreso: abril-2008
Mensajes: 348
Antigüedad: 16 años
Puntos: 1
Respuesta: Busqueda por intervalos

Hola:

Gracias a un conocido he empezado por otro camino; pero me he vuelto a perder...

Os dejo el codigo y luego os expongo los problemas:

Código PHP:
<form action="busqueda1.php" method="post">
          <
table width="460" border="1" align="center" >
          <
tr height="30px"
               <
td><font size="+1">Area</font></td>
              <
td> <div align="center"
                  <
select name="zona" style="color:white;font-weight:bold;border-style: outset; border-width: 4px; border-color:#00FFFF;background:#000066;height:20px;font-size:12pt;width:180px">
                    <
option value="">All</option>
                    <
option value="Sotogrande">Sotogrande</option>
                    <
option value="Estepona">Estepona</option>
                    <
option value="Marbella">Marbella</option>
                    <
option value="Benahavis">Benahavis</option>
                    <
option value="Benalmadena">Benalmadena</option>
                  </
select>
                </
div></td>
            </
tr>
          
            <
tr height="30px"
              <
td><font size="+1">Living Area</font></td>
              <
td> <div align="center"
                  <
select name="superficiep" style="color:white;font-weight:bold;border-style: outset; border-width: 4px; border-color:#00FFFF;background:#000066;height:20px;font-size:12pt;width:180px">
                    <
option value="">All</option>
                    <
option value="<= 2">&le2</option>
                    <
option value="3 AND 5">3-5</option>
                    <
option value="6 AND 8">6-8</option>
                    <
option value="9 AND 11">9-11</option>
                    <
option value="> 11">&gt11</option>
                  </
select>
                </
div></td>
            </
tr>
               <
tr height="30px"
              <
td><font size="+1">Rooms</font></td>
              <
td> <div align="center"
                  <
select name="habitaciones" style="color:white;font-weight:bold;border-style: outset; border-width: 4px; border-color:#00FFFF;background:#000066;height:20px;font-size:12pt;width:180px">
                    <
option value="">All</option>
                    <
option value="<= 2">&le2</option>
                    <
option value="3 AND 5">3-5</option>
                    <
option value="6 AND 8">6-8</option>
                    <
option value="9 AND 11">9-11</option>
                    <
option value="> 11">&gt11</option>
                  </
select>
                </
div></td>
            </
tr>
             <
tr height="30px"
              <
td><font size="+1">Bedrooms</font></td>
              <
td> <div align="center"
                  <
select name="aseos" style="color:white;font-weight:bold;border-style: outset; border-width: 4px; border-color:#00FFFF;background:#000066;height:20px;font-size:12pt;width:180px">
                    <
option value="">All</option>
                    <
option value="<= 2">&le2</option>
                    <
option value="3 AND 5">3-5</option>
                    <
option value="6 AND 8">6-8</option>
                    <
option value="9 AND 11">9-11</option>
                    <
option value="> 11">&gt11</option>
                  </
select>
                </
div></td>
            </
tr>
              <
tr height="30px"
              <
td><font size="+1">Price</font></td>
              <
td> <div align="center"
                  <
select name="precio" style="color:white;font-weight:bold;border-style: outset; border-width: 4px; border-color:#00FFFF;background:#000066;height:20px;font-size:12pt;width:180px">
                    <
option value="">All</option>
                    <
option value="<= 2">&le2</option>
                    <
option value="3 AND 5">3-5</option>
                    <
option value="6 AND 8">6-8</option>
                    <
option value="9 AND 11">9-11</option>
                    <
option value="> 11">&gt11</option>
                  </
select>
                </
div></td>
            </
tr
                    <
tr>
            <
td colspan="2" height="30px"><div align="center">
                  <
input type="submit" value="SEARCH" style="color:white;font-weight:bold;border-style: outset; border-width: 4px; border-color:#00FFFF;background:#000066;font-size:12pt;width:100px"/>
                <
br><br></div></td><!-- El atributo name del botón que envía los formularios tampoco es necesariopuesgeneralmenteno nos sirve de nada el contenido de este botón -->
        </
tr>
 
          </
table>
</
form
Y este es el que lo gestiona:

Código PHP:
<?php
    session_start
();
    include(
'config.php');
    
// dormitorios y aseos siempre tendrán un valor, pues en el form siempre valen, al menos "< 2"
    // por ende, esta comprobación es inútil:
    
if( isset( $_POST['habitaciones'] ) || isset( $_POST['aseos'] )  ) {
        
$a $_POST['habitaciones'];
        
$b $_POST['aseos'];
    }

    
$resultado mysql_select_db($db$conexion);
    if ( !
$resultado ) {
        echo 
"ERROR: Imposible seleccionar la base de datos $basedatos.<br>\n";
        
mysql_close$conexion );
        exit;
    }
    else {
        
$sql "SELECT * FROM recetas";
        if( !empty( 
$a ) && !empty( $b ) ) {
            
$sql .= " WHERE habitaciones ";
            if( 
preg_match'/^\d\s(\w)+\s\d$/i'$b ) ) { // Si coincide con 'NUMERO AND NUMERO'
                
$sql .= "BETWEEN $a";
            }
            else { 
// De lo contrario, el valor es <= 2 o >11
                
$sql .= "$a";
            }
            
            
$sql .= " AND aseos ";
            
            if( 
preg_match'/^\d\s(\w)+\s\d$/i'$b ) ) { // Si coincide con 'NUMERO AND NUMERO'
                
$sql .= "BETWEEN $b";
            }
            else { 
// De lo contrario, el valor es <= 2 o >11
                
$sql .= "$b";
            }
        }
        else if( !empty( 
$a ) && empty( $b ) ) {
            
$sql .= " WHERE habitaciones ";
            if( 
preg_match'/^\d\s(\w)+\s\d$/i'$a ) ) { // Si coincide con 'NUMERO AND NUMERO'
                
$sql .= "BETWEEN $a";
            }
            else { 
// De lo contrario, el valor es <= 2 o >11
                
$sql .= "$a";
            }
        }
        else if( empty( 
$a ) && !empty( $b ) ) {
            
$sql .= " WHERE aseos ";
            if( 
preg_match'/^\d\s(\w)+\s\d$/i'$b ) ) { // Si coincide con 'NUMERO AND NUMERO'
                
$sql .= "BETWEEN $b";
            }
            else { 
// De lo contrario, el valor es <= 2 o >11
                
$sql .= "$b";
            }
        }
        
        
$sql .= " ORDER BY id";
        echo 
'<p>Sentencia SQL: ' $sql '</p>'// Esta línea es innecesaria una vez que el código funcione.
        
$res mysql_query$sql$conexion );
        if( !
$res ) {
            echo 
"<p>ERROR: " mysql_error$conexion ) . "</p>";
        }
        else {
            echo
"<table align='center' border=2 cellpadding=10 bordercolor=gold>";
            echo
"<tr>
                <td>
                    <h3>REF</h3>
                </td>
                <td>
                    <h3>DORMITORIOS</h3>
                </td>
                <td>
                    <h3>ASEOS</h3>
                </td>
            "
;
                
                while( 
$fila mysql_fetch_array$resMYSQL_ASSOC ) ) {
                    echo 
"
                        <h3>
                            <tr>
                                <td>
                                    <h4>$fila[id]</h4>
                                </td>
                              
                                <td>
                                    <h4>$fila[habitaciones]</h4>
                                </td>
                                <td>
                                    <h4>$fila[aseos]</h4>
                                </td>
                            </tr>
                        </h3>"
;
                }
            echo 
"</table>";
        }
        
mysql_close$conexion );
    }
?>
Aqui vienen mis dudas, como se puede añadir una tercera variable de busqueda?

Y como añadirle el select que no es varible sino que es "fijo".

Un saludo