Ya, así debería funcionar:
Código HTML:
<form method="post" action="busqueda.php"><!-- El atributo name en los formularios ya no es necesario -->
<table width="600" border="1">
<tr>
<td colspan="2">BUSCAR</td>
</tr>
<tr>
<td>DORMITORIOS</td>
<td>
<select name="dormitorios">
<option value="<= 2">≤ 2</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">> 11</option>
</select>
</td>
</tr>
<tr>
<td>ASEOS</td>
<td>
<select name="aseos">
<option value="<= 2">≤ 2</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">> 11</option>
</select>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="SEARCH" /></td><!-- El atributo name del botón que envía los formularios tampoco es necesario, pues, generalmente, no nos sirve de nada el contenido de este botón -->
</tr>
</table>
</form>
El archivo de búsqueda quedaría así:
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['dormitorios'] ) || isset( $_POST['aseos'] ) ) {
$a = $_POST['dormitorios'];
$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 WHERE ";
if( !empty( $a ) ) {
$sql .= "dormitorios ";
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";
}
}
if( !empty( $b ) ) {
$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";
}
}
$sql .= " ORDER BY id";
$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>
<td></td><!-- ¿Y esta columna por qué? -->";
while( $fila = mysql_fetch_array( $res, MYSQL_ASSOC ) ) {
echo "
<h3>
<tr>
<td>
<h4>$fila[id]</h4>
</td>
<td>
<h4>$fila[ref]</h4>
</td>
<td>
<h4>$fila[dormitorios]</h4>
</td>
<td>
<h4>$fila[aseos]</h4>
</td>
</tr>
</h3>";
}
echo "</table>";
}
mysql_close( $conexion );
}
?>
Yo lo probé y debería funcionar, pero es mejor que hagas las pruebas necesarias tú también :D.
Saludos.
Marcadores