Ver Mensaje Individual
  #18 (permalink)  
Antiguo 26/06/2008, 12:31
yannick
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Consulta a MySQL con parametros "indistinto"

Bueno, acá va el codigo final, solo falto darle solucion al between mencionado antes.

El formulario que envía los datos:

**************

<form action="resultado.php" method="post" enctype="multipart/form-data" name="form" id="form">
<table cellpadding="5" cellspacing="0" width="301" class="form">
<tr>
<td colspan="2" align="left"><span class="bodytext10">Seleccione las opciones que más se ajusten a sus necesidades y luego haga click en buscar.</span></td>
</tr>
<tr>
<td class="bodytextbold_cel">Tipo de operación:</td>
<td align="left"><select name="tipo_op" size="1" id="tipo_op">
<option value="Venta">Venta</option>
<option value="Permuta">Permuta</option>
<option value="0">Indistinto </option>
</select></td>
</tr>
<tr>
<td width="135" class="bodytextbold_cel">Tipo de propiedad:</td>
<td align="left" width="142"><select name="tipo_prop" onchange="Xredirect(this.options.selectedIndex)" size="1">
<option value="0" >Chalet </option>
<option value="1" >Casa </option>
<option value="2" >Duplex </option>
<option value="3" >Departamento </option>
<option value="4" >Oficina </option>
<option value="5" >Local </option>
<option value="6" >Lote </option>
<option value="7" >Campo </option>
<option value="8" >Galpón </option>
</select> </td>
</tr>
<tr>
<td width="135" class="bodytextbold_cel">Comodidades:</td>
<td align="left" width="142"><select name="tipo_amb" size="1">
<option value="1" >Monoambiente </option>
<option value="2" >2 ambientes </option>
<option value="3" >3 ambientes </option>
<option value="4" >4 ambientes </option>
<option value="5" >5 ambientes </option>
<option value="6" >6 ambientes </option>
<option value="7">Más de 6 ambientes </option>
<option value="0" selected="selected">Indistinto </option>
</select>
<script language="">
<!--
var Xgroups=document.form.tipo_prop.options.length
var Xgroup=new Array(Xgroups)
for (i=0; i<Xgroups; i++)
Xgroup[i]=new Array()

Xgroup[0][0]=new Option("1 ambiente","1")

Xgroup[0][1]=new Option("2 ambientes","2")

Xgroup[0][2]=new Option("3 ambientes","3")

Xgroup[0][3]=new Option("4 ambientes","4")

Xgroup[0][4]=new Option("5 ambientes","5")

Xgroup[0][5]=new Option("6 ambientes","6")

Xgroup[0][6]=new Option("Más de 6 ambientes","7")

Xgroup[0][7]=new Option("Indistinto","0")

Xgroup[1][0]=new Option("1 ambiente","1")

Xgroup[1][1]=new Option("2 ambientes","2")

Xgroup[1][2]=new Option("3 ambientes","3")

Xgroup[1][3]=new Option("4 ambientes","4")

Xgroup[1][4]=new Option("5 ambientes","5")

Xgroup[1][5]=new Option("6 ambientes","6")

Xgroup[1][6]=new Option("Más de 6 ambientes","7")

Xgroup[1][7]=new Option("Indistinto","0")

Xgroup[2][0]=new Option("1 ambiente","1")

Xgroup[2][1]=new Option("2 ambientes","2")

Xgroup[2][2]=new Option("3 ambientes","3")

Xgroup[2][3]=new Option("4 ambientes","4")

Xgroup[2][4]=new Option("Indistinto","0")

Xgroup[3][0]=new Option("1 ambiente","1")

Xgroup[3][1]=new Option("2 ambientes","2")

Xgroup[3][2]=new Option("3 ambientes","3")

Xgroup[3][3]=new Option("4 ambientes","4")

Xgroup[3][4]=new Option("5 ambientes","5")

Xgroup[3][5]=new Option("6 ambientes","6")

Xgroup[3][6]=new Option("Más de 6 ambientes","7")

Xgroup[3][7]=new Option("Indistinto","0")


Xgroup[4][0]=new Option("hasta 30 mts","8")

Xgroup[4][1]=new Option("e/31 y 60 mts.","9")

Xgroup[4][2]=new Option("Más de 60 mts.","10")

Xgroup[4][3]=new Option("Indistinto","0")


Xgroup[5][0]=new Option("hasta 30 mts","8")

Xgroup[5][1]=new Option("e/31 y 60 mts.","9")

Xgroup[5][2]=new Option("Más de 60 mts.","10")

Xgroup[5][3]=new Option("Indistinto","0")


Xgroup[6][0]=new Option("hasta 600 mts.","11")

Xgroup[6][1]=new Option("e/600 y 1200 mts.","12")

Xgroup[6][2]=new Option("Más de 1200 mts.","13")

Xgroup[6][3]=new Option("Indistinto","0")


Xgroup[7][0]=new Option("hasta 500 has.","11")

Xgroup[7][1]=new Option("e/500 y 1000 has.","12")

Xgroup[7][2]=new Option("Más de 1000 has.","13")

Xgroup[7][3]=new Option("Indistinto","0")



Xgroup[8][0]=new Option("hasta 600 mts.","11")

Xgroup[8][1]=new Option("e/600 y 1200 mts.","12")

Xgroup[8][2]=new Option("Más de 1200 mts.","13")

Xgroup[8][3]=new Option("Indistinto","0")

var Xtemp=document.form.tipo_amb
function Xredirect(x){
for (m=Xtemp.options.length-1;m>0;m--)
Xtemp.options[m]=null
for (i=0;i<Xgroup[x].length;i++){
Xtemp.options[i]=new Option(Xgroup[x][i].text,Xgroup[x][i].value)
}
//este patch es para que muestre siempore indistinto checked
if (x == 3){
Xtemp.options[7].selected=true
} else if (x == 2){
Xtemp.options[4].selected=true
} else if (x == 4){
Xtemp.options[3].selected=true
} else if (x == 5) {
Xtemp.options[3].selected=true
} else if (x == 6) {
Xtemp.options[3].selected=true
} else if (x == 7) {
Xtemp.options[3].selected=true
} else if (x == 8) {
Xtemp.options[3].selected=true
}else{
Xtemp.options[7].selected=true
}
}
//-->

</script> </td>
</tr>
<tr>
<td class="bodytextbold_cel">Localidad:</td>
<td align="left"><select name="localidad" id="localidad">
<option value="1" selected="selected">Tulocalidad</option>
<option value="2">Tulocalidad2</option>
<option value="0">Indistinto</option>
</select></td>
</tr>
<tr>
<td class="bodytextbold_cel">Zona / barrio:</td>
<td align="left"><p>
<select name="zona" id="zona">
<option value="unazona" selected="selected">unazona</option>
<option value="unazona2">unazona2</option>
<option value="0">Indistinto</option>
</select>
</p> </td>
</tr>

<tr>
<td width="135" class="bodytextbold_cel">Valor:</td>
<td align="left" width="142"><select name="precio" size="1" id="precio">
<option value="0" >Indistinto</option>
<option value="10000" selected="selected">Hasta 10000</option>
<option value="20001">Hasta 20000</option>
<option value="30001">Hasta 30000</option>
<option value="40001">Hasta 40000</option>
<option value="50001">Hasta 50000</option>
<option value="60001">Hasta 60000</option>
<option value="70001">Hasta 70000</option>
<option value="80001">Hasta 80000</option>
<option value="90001">Hasta 90000</option>
<option value="100001">Hasta 100000</option>
<option value="150001">Hasta 150000</option>
<option value="200001">Hasta 200000</option>
<option value="300001">Hasta 300000</option>
<option value="9999999">+ de 300000</option>
</select></td>
</tr>
<tr>
<td colspan="2" align="right" height="30" valign="bottom"><div align="center">
<input name="button" type="submit" class="botrojo" id="button" value="Buscar" />
</div></td>
</tr>
</table>
</form>

***************

El php que recibe los datos y los compara con la base:

***************

$tipo_op = $_POST ['tipo_op'];
$tipo_prop = $_POST ['tipo_prop'];
$tipo_amb = $_POST ['tipo_amb'];
$loc = $_POST ['localidad'];
$zona = $_POST ['zona'];
$precio = $_POST ['precio'];
$public = 'SI';

$query = "SELECT * FROM items ";
$conditions = array();
if( $tipo_op != "0" ) {
$conditions[] = "tipo_operacion = '$tipo_op'";
}
if( $tipo_prop != "-1" ) {
$conditions[] = "tipo_propiedad = '$tipo_prop'";
}
if( $tipo_amb != "0" ) {
$conditions[] = "it_comodidades = '$tipo_amb'";
}
if( $loc != "0" ) {
$conditions[] = "it_localidad = '$loc'";
}
if( $zona != "0" ) {
$conditions[] = "it_zona = '$zona'";
}
if( $precio != "0" ) {
$conditions[] = "it_precioventa <= $precio ";
}
if( $public != "0" ) {
$conditions[''] = "it_public = '$public'";
}
if( count( $conditions[''] ) > 0 ) {
$query .= " WHERE " . implode ( " AND ", $conditions) ;
}

****************

Logicamente hay ciertas variables extras pero el funcionamiento planteado está bastante resuelto.