Foros del Web » Programando para Internet » PHP »

3 combobox, para hacer una consulta

Estas en el tema de 3 combobox, para hacer una consulta en el foro de PHP en Foros del Web. Ke tal amigos.. les cuento que estoy haciendo esta pagina, para ke se hambienten en la idea.. www.mejorcasa.cl .. y si la visitan, todavia esta ...
  #1 (permalink)  
Antiguo 30/11/2008, 20:06
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
3 combobox, para hacer una consulta

Ke tal amigos.. les cuento que estoy haciendo esta pagina, para ke se hambienten en la idea.. www.mejorcasa.cl .. y si la visitan, todavia esta en pruebas,,, pero estoy haciendo un buscador, que con 3 combobox, me genere una consulta,,,

tengo los combobox de "tipode contrato" osea arriendo, venta
tengo el combobox, de " tipode vivienda" osea casa, departamento, hacienda
y tengo el combobox de " ciudad" quillota, limache...

estos los saco desde una base de datos, con eso no tengo problemas.

ahora,, cuando entro al sitio estas opciones dicen -todos- y el value es 0. cuando paso a la otra pagina, buscar.php necesito que si uno de los valores no es 0, me cambie la consulta que realiza, estaba usando if..else para eso.

$link=conectarse();
$contrato=$_POST['contrato'];

echo $contrato; // muestro lo que llegó
if($contrato!=0){ // lo comparo , --- ahora mismo se me estan ocurriendo otras cosas...
$resulttc = mysql_query("SELECT DISTINCT tc FROM propiedades",$link) or die (mysql_error());
$filatc= mysql_fetch_array($resulttc);
$txttc=$filatc[$contrato];
echo $contrato." asdasd ".$txttc;

}

.
.
.

//, aunke es solo para la idea, ya que he cambiado mucho y muchas veces esta parte del script

$_pagi_sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades order by id ASC";
if($sqlci!=0){
$_pagi_sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades where ci='$txtci' order by id ASC";
}else if($sqltp!=0){
$_pagi_sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades where tp='$txttp' order by id ASC";
}else if($sqltc!=0){
$_pagi_sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades where tc='$txttc' order by id ASC";
}

que opinan,, levo casi un mes en esto, y ya lo tenog que entregar... quien me ayuda...
  #2 (permalink)  
Antiguo 30/11/2008, 20:41
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Busqueda Respuesta: 3 combobox, para hacer una consulta

Sip mas o men os lo tienbe bien aunque tiene que tener en cuenta que si el usuario elije las tres opciones el sistema le debe traer los registros que cumplan con las 3 condiciones.

Código PHP:
$Condicion1 $_POST[Condiciona];
$Condicion2 $_POST[Condicionb];
$Condicion3 $_POST[Condicionc];
if (
$Condicion1 != 0)
$ConConsulta "dato1 = $Condicion1";
if (
$Condicion2 != 0)
{
      if (
$ConConsulta != 0$ConConsulta." and ";
      
$ConConsulta $ConConsulta."dato2 = $Condicion2";
}
if (
$Condicion3 != 0)
{
     if (
$ConConsulta != 0$ConConsulta." and ";
     
$ConConsulta $ConConsulta."dato3 = $Condicion3";
}
if (
$ConConsulta != 0$ConConsulta "where ".$ConConsulta;
$ConRegistros "select * from tabla $ConConsulta"
Esa es la idea no lo probe pero es mas o menos asi para que se guie y logre hacer lo que quiere hacer. "Depronto puede organizando el codigo ahorrarse unas cuantas lineas pero asi como esta creo que le funciona"

Suerte
  #3 (permalink)  
Antiguo 30/11/2008, 20:44
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: 3 combobox, para hacer una consulta

Te vendria mejor esto :

Código PHP:
$contrato $_POST['tipo_contrato'];
$vivienda $_POST['tipo_vivienda'];
$ciudad $_POST['ciudad'];

$sql "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";
if(
$contrato 0)
     
$sql .= " AND tc = $contrato ";
if(
$vivienda 0)
     
$sql .= " AND tp = $vivienda ";
if(
$ciudad  0)
     
$sql .= " AND ci = $ciudad ";
$sql .= " ORDER BY id ASC ";

mysql_query($sql); 
Este tipo de ayuda es la que buscabas?
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #4 (permalink)  
Antiguo 30/11/2008, 20:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: 3 combobox, para hacer una consulta

ya entendi...el codigo de helacer estaba pensando y pa que le puso " and " y es pa concatenar en el sql.. obvio... no se me habia ocurrido,, gracias man...

saludos

Última edición por darkporn; 30/11/2008 a las 20:53 Razón: especificar nombre
  #5 (permalink)  
Antiguo 30/11/2008, 20:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: 3 combobox, para hacer una consulta

genial stone_neo, pero con esto
$sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";
no me va a dar el primer resultado no mas... tendria que ser asi, creo...
$sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";
if($contrato > 0)
$sql .= "WHERE$contrato > 0)";
if( $vivienda > 0 && $ciudad > 0)
$sql .= " where $vivienda > 0 AND ci = $ciudad ";

y asi...
  #6 (permalink)  
Antiguo 30/11/2008, 20:57
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: 3 combobox, para hacer una consulta

Cita:
Iniciado por darkporn Ver Mensaje
genial stone_neo, pero con esto
$sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";
no me va a dar el primer resultado no mas... tendria que ser asi, creo...
$sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";
if($contrato > 0)
$sql .= "WHERE$contrato > 0)";
if( $vivienda > 0 && $ciudad > 0)
$sql .= " where $vivienda > 0 AND ci = $ciudad ";

y asi...
no ps estas repitiendo la sentencia Where, te va a dar error, si te fijas por eso pongo el Where 1 = 1, para que luego puedas concatenar los AND si problemas, el WHERE 1 = 1 no hace nada ya que siempre se cumple, o 1 no es igual a 1, mmmmmmmmmmmmmm.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #7 (permalink)  
Antiguo 30/11/2008, 21:45
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: 3 combobox, para hacer una consulta

una consulta...

if($vivienda > 0)
$sql .= " AND tp = $vivienda ";

no van corchetes { }
  #8 (permalink)  
Antiguo 30/11/2008, 22:02
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: 3 combobox, para hacer una consulta

corchetes?
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #9 (permalink)  
Antiguo 01/12/2008, 06:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: 3 combobox, para hacer una consulta

disculpen pero para mi es natural usar { }
if($vivienda > 0) {
$sql .= " AND tp = $vivienda "; }

ya me dijeron que el lenguaje los lee igual, gracias...

pero no me funciona el código,,, pero sigo trabajndo.... de ahi escribo mas
  #10 (permalink)  
Antiguo 01/12/2008, 23:01
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: 3 combobox, para hacer una consulta

ahora cache ne parte,, por que no funcaba,,, estaba usa el paginator,,, y dice explicitamente,, y lo lei un par de veces, que la consulta par aeso no pueden tener LIMIT, eso es lo que hace el WHERE,, limita... entonces no me mostraba nada..

ahora, escribiendo hice esto
if($contrato!=0 || $vivienda!=0 || $ciudad!=0){
echo "holA";
if($contrato = 0){
echo "wtf";
}else{
$sql = mysql_query("SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE tc = $contrato order by id ASC",$link) or die (mysql_error());
echo "<table width='98%' border = '1'> ";
echo "<tr><td class='green'>id</td><td class='green'width='20%'>Titulo</td><td class='green'>ciudad</td><td class='green' width='30%'>dirección</td><td class='green'>propiedad</td><td class='green'>contrato</td><td class='green' width='5%'>habit</td><td class='green' width='5%'>baños</td></tr> \n";
while( $row = mysql_fetch_assoc($sql)){
echo $row['id']."<tr><td height='30' class='formtxt'>$row[id]</td><td class='textarea'>$row[ti]</td><td class='textarea'>$row[ci]</td><td class='textarea'>$row[di]</td><td class='textarea'>$row[tp]</td><td class='textarea'>$row[tc]</td><td class='textarea'>$row[ha]</td><td class='textarea'>$row[ba]</td><td><a href='mostrarmas.php?id=$row[id]'>Mostrar más</td></tr> \n";
}
echo "</table> \n";

}

}else{

$_pagi_sql = "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";

mysql_query($_pagi_sql);

$_pagi_cuantos = 10;
include("paginator.inc.php");

echo "<table width='98%' border = '1'> ";
echo "<tr><td class='green'>id</td><td class='green'width='20%'>Titulo</td><td class='green'>ciudad</td><td class='green' width='30%'>dirección</td><td class='green'>propiedad</td><td class='green'>contrato</td><td class='green' width='5%'>habit</td><td class='green' width='5%'>baños</td></tr> \n";
while($row = mysql_fetch_array($_pagi_result)){
echo "<tr><td height='30' class='formtxt'>$row[id]</td><td class='textarea'>$row[ti]</td><td class='textarea'>$row[ci]</td><td class='textarea'>$row[di]</td><td class='textarea'>$row[tp]</td><td class='textarea'>$row[tc]</td><td class='textarea'>$row[ha]</td><td class='textarea'>$row[ba]</td><td><a href='mostrarmas.php?id=$row[id]'>Mostrar más</td></tr> \n";
}
echo "</table> \n";

echo"<p>".$_pagi_navegacion."</p>";
}
hay redundacia ha cagarse, pero de otra forma me tiraba error, si no hacia
if($contrato = 0){ // estaria mejor con $contrato!=0
echo "wtf";
}else{
no me mostraba nada despues

gracias por la ayuda
  #11 (permalink)  
Antiguo 03/12/2008, 21:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 31
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: 3 combobox, para hacer una consulta

Código PHP:
$contrato $_POST['tipo_contrato'];
$vivienda $_POST['tipo_vivienda'];
$ciudad $_POST['ciudad'];

$sql "SELECT id,ti,ci,di,tp,tc,ha,ba FROM propiedades WHERE 1 = 1 ";
if(
$contrato 0)
     
$sql .= " AND tc = $contrato ";
if(
$vivienda 0)
     
$sql .= " AND tp = $vivienda ";
if(
$ciudad  0)
     
$sql .= " AND ci = $ciudad ";
$sql .= " ORDER BY id ASC ";

mysql_query($sql); 
lo arregle, me di cuenta, tras dias,, de donde estaba el error, en mi tabla propiedades, los valores de tc ($contrato), tp ($vivienda), y ci ($ciudad), son varchar, y cuando los "pesco" son enteros. osea estaba comparando:un entero con un varchar, por eso no me funcionaba.
$contrato = $_POST['tipo_contrato'];
hice esto para que me pescara los valores de la tabla y lo asignara a una nueva variable, y con esa trabajo la sentencia SQL..

$resultcontrato = mysql_query("SELECT DISTINCT tc FROM propiedades",$link) or die (mysql_error());
$i=1; // es 1 por que tengo un select con otra variable en la posicion 0.
while($fila = mysql_fetch_array($resultcontrato)){
$contrato2[$i]=$fila['tc'];
if($i==$contrato){
$contrato3=$contrato2[$i];
}
$i++;
}

"contrato" se cambia por la variable que se desea, ciudad o vivienda en este caso.

MUCHAS GRACIAS A TODOS LOS QUE ME AYUDARON,, por lo menos aprendi...

GRACIAS STONE_NEO , HELACER

Última edición por darkporn; 03/12/2008 a las 22:00 Razón: especificar
  #12 (permalink)  
Antiguo 03/12/2008, 22:09
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: 3 combobox, para hacer una consulta

No hay de que man. Recuerda que el conocimiento quiere ser libre.
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:12.