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">≤ 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>
</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">≤ 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>
</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">≤ 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>
</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">≤ 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>
</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 necesario, pues, generalmente, no 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( $res, MYSQL_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