Foros del Web » Programando para Internet » PHP »

Duda sobre un buscador interno

Estas en el tema de Duda sobre un buscador interno en el foro de PHP en Foros del Web. Buenos días, estoy haciendo un buscador interno con diferentes campos, y en uno de ellos se tiene que especificar la Localidad. El caso es que ...
  #1 (permalink)  
Antiguo 26/09/2005, 02:50
 
Fecha de Ingreso: mayo-2005
Mensajes: 11
Antigüedad: 12 años, 6 meses
Puntos: 0
Duda sobre un buscador interno

Buenos días,

estoy haciendo un buscador interno con diferentes campos, y en uno de ellos se tiene que especificar la Localidad. El caso es que quiero hacer que, de no introducirse ningún dato en este campo (dejándolo en blanco), muestre todas las Localidades. No se si me explico.

He estado probando con el signo % pero no me ha salido nada.

Por ejemplo, si se introduce en el input "Barcelona", que se muestren los registros con ese dato, pero si no se pone nada, que muestre todos. Se tiene que poner en el SELECT? Es algo que va en un isset, no? Estoy en los comienzos del php, disculpad.


Neverwolf.
  #2 (permalink)  
Antiguo 26/09/2005, 03:31
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola.

Desde luego, con el isset antes de consulta te funcionará. Lo único que en el script creo que deberás poner dos accesos alternativos a la BD para que haga una u otra selección y muestre resultados.

También podrías selecionarlo todo en una sola consulta y a la hora de mostrar resultados ver si te habían enviado la variable o no y mostrar lo que corresponda.

Lo que no sé es si en una sola consulta puedes poner una condición para que seleccione una u otra cosa.

Sería interesante que alguien nos lo dijera.

Saludos.
  #3 (permalink)  
Antiguo 26/09/2005, 04:25
 
Fecha de Ingreso: mayo-2005
Mensajes: 11
Antigüedad: 12 años, 6 meses
Puntos: 0
Me has dado una idea xD

Esto funcionaría?

Código PHP:
if (isset($_GET['localidad']) == 1) {
    
$localidadconcreta "localidad = $_GET['localidad']";
} else {
    
$localidadconcreta "";
}

$sql "SELECT * FROM propiedades WHERE '$localidadconcreta' and dormitorios >= '$habitaciones' and banhos >= '$banhos'"
Algo asi o similar estaría bien (es muy probable que tenga errores de syntaxis, repito que estoy en los principios xP)?


Gracias,
Neverwolf
  #4 (permalink)  
Antiguo 26/09/2005, 05:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
...
Código PHP:
if (isset($_GET['localidad']) == 1) { // si ya sabes que es 1
// por qué no hacer
    
$localidadconcreta "localidad=1"// ?? 
Código PHP:
$sql "SELECT * FROM propiedades WHERE '$localidadconcreta' ..."// las comillas te producirán un error de sintaxis 
Sugiero:
Código PHP:
if (isset($_GET['localidad']) == 1) {
    
$localidadconcreta "WHERE localidad='1'"// nota el WHERE y las comillas
} else {
    
$localidadconcreta "";
}

$sql "SELECT * FROM propiedades $localidadconcreta";
// y resulta
// SELECT * FROM propiedades WHERE localidad='1' << que es una query válida
// ó en su defecto
// SELECT * FROM propiedades << que también es una query válida 
Debes plantearte bien en qué momentos y de qué forma insertar esos "AND"; si quedan "volando" tu query ya no es válida.

La mejor forma de saber si algo funciona es probarlo ... http://www.forosdelweb.com/f18/hacer-consulta-multiple-267358/

Un saludo y suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 26/09/2005, 05:44
 
Fecha de Ingreso: mayo-2005
Mensajes: 11
Antigüedad: 12 años, 6 meses
Puntos: 0
Ya está, lo conseguí. Puse el AND porque después hay más campos.

Al final puse esto:

Código PHP:
    if (isset($localidad) == 0) {
        
$localidad "*";
    }

...

$sql "SELECT * FROM propiedades WHERE localidad = '$localidad' and dormitorios >= '$dormitorios' and banhos >= '$banhos'"
Con esto funciona, no se porqué le dí tantas vueltas.

EDITADO: Pues ahora no me funciona xDDDD


Gracias a todos
Neverwolf.

Última edición por Neverwolf; 26/09/2005 a las 06:56
  #6 (permalink)  
Antiguo 26/09/2005, 07:20
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 15 años, 5 meses
Puntos: 0
Creo que te complicas más de la cuenta. No se si entendí bien lo que quieres hacer pero creo que esto funcionará.

Código PHP:
if (!empty($_GET['localidad'])) {
        
$localidad "localidad='".$_GET['localidad']."' AND";
}else{
        
$localidad "";
}


$sql "SELECT * FROM propiedades WHERE ".$localidad." dormitorios >= '$dormitorios' and banhos >= '$banhos'"
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 00:51.