Foros del Web » Programando para Internet » PHP »

mostrar resultados segun criterio de busqueda

Estas en el tema de mostrar resultados segun criterio de busqueda en el foro de PHP en Foros del Web. Hola amigos, he hecho un mini buscador que funciona muy bien a excepcion que cuando uno de los campos es referente a todos los registros ...
  #1 (permalink)  
Antiguo 23/03/2005, 06:57
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
Pregunta mostrar resultados segun criterio de busqueda

Hola amigos, he hecho un mini buscador que funciona muy bien a excepcion que cuando uno de los campos es referente a todos los registros de ese campo, no se como hacer la consulta, os pongo mi codigo y voy comentanto:
Código PHP:
$sql "SELECT * FROM anuncio WHERE categoria='".$_POST['categoria']."' AND provincia='".$_POST['provincia']."' AND act='1' ORDER BY id DESC"
por ejemplo cuando quiero que aparezcan de una categoria concreta, digamos coches, en todas las provincias no sé que parametro pasarle a provincia para que muestre todos los coches de todas las provincias.
Un saludo y gracias
__________________
Seguro que ahora me sale mejor!
  #2 (permalink)  
Antiguo 23/03/2005, 07:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... perdona.. personalmente no entiendo... se un poco mas explicativo y claro por favor...
Gracias

Edito: Por favor!!! hablen en términos generales! coches?? de dónde salen los coches???... De pronto me da la impresión de que hablan como si hubiera forma de saber cómo trabaja y para qué su aplicación. No sé, por ejemplo: "Necesito encuentre solo aquellas filas donde en Xcolumna se encuentre cierta palabra/frase" ... ... bueno, no exactamente así pero por ahí va
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 23/03/2005 a las 07:06
  #3 (permalink)  
Antiguo 23/03/2005, 07:14
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
bien perdona eske habeces me lio al querer decir cosas sencillas.
Tengo una tabla con categorias, coches, casas, informatica...
y otra tabla con provincias, alicante, albacete, madrid...
y quiero que mi buscador cuando indique por ejemplo, buscar - coches - madrid, me da los resultados sin problemas, pero no sé como preguntarle a la consulta sql buscar - coches - todas_provincias,
me comprendes ahora? muchas gracias
__________________
Seguro que ahora me sale mejor!
  #4 (permalink)  
Antiguo 23/03/2005, 07:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Pues segun tu query anterior categorias y provicia entan en una sola tabla.. no dos...

Pero si bien entendí... tienes tu buscador ahora que te regresa resultados que contengan los dos criterios de busqueda ¿cierto?... y quieres que se disminuya a solo un criterio de busqueda.. ¿cierto?... Prueba con:
Código PHP:
 $sql "SELECT * FROM anuncio WHERE categoria='".$_POST['categoria']."' AND act='1' ORDER BY id DESC"
.. solo eliminé de la busqueda el campo "provincia".. pero seguirá buscando act=1 ... ...

Te preguntarás ¿y debo de tener una query para cada caso???... no, puedes irla construyendo... Dejo busco algo...
__________________
٩(͡๏̯͡๏)۶
» 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 23/03/2005, 07:41
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Me parece que podrias usar algo como esto:
Código PHP:
$agregado="";
if(
$_POST['categoria']!="")
    
$agregado "categoria='".$_POST['categoria']."'";
if(
$_POST['provincia']!=""){
    if(
$agregado=="")
        
$agregado="provincia='".$_POST['provincia']."'";
    else 
        
$agregado .=" and provincia='".$_POST['provincia']."'";    
}
$sql "SELECT * FROM anuncio WHERE ".$agregado." AND act='1' ORDER BY id DESC"
Espero que te ayude.
Suerte
  #6 (permalink)  
Antiguo 23/03/2005, 08:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... sí... en escensia así es... y esto es fácil al tener solo dos criterios de busqueda... pero si son más???... Alguna vez hice un bucle para crear la query...
http://www.forosdelweb.com/f18/hacer-consulta-multiple-267358/
... así solo al principio se agregan los campos y se despreocupa de lo demás (ojo, solo hablo de construir la query). Esto se puede optimizar mucho más... pero por ahí ví una forma que me pareció interezante... utilizaba impode()... pero no la hayo... :(
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 23/03/2005, 08:07
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
Bueno ya lo tengo, para que ver el contenido de todas las provincias según la categoria (coches):
Código PHP:
if ($_POST['provincia']=='99'){
$sql "SELECT * FROM anuncio WHERE categoria='".$_POST['categoria']."' AND act='1' ORDER BY id DESC";
}else{
$sql "SELECT * FROM anuncio WHERE categoria='".$_POST['categoria']."' AND provincia='".$_POST['provincia']."' AND act='1' ORDER BY id DESC";

Ya esta, no se que se ve que antes de comer me ha faltado lucidez mental, siento no haber sido claro pero estaba atascado, gracias por vuestra paciencia.
un saludo
__________________
Seguro que ahora me sale mejor!

Última edición por benti; 23/03/2005 a las 08:15
  #8 (permalink)  
Antiguo 23/03/2005, 08:16
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... Pues sigo entendiendo lo mismo...
SQL es un lenguaje aparte de PHP... PHP solo manda a ejecutar consultas... pero los criterios de las consultas dependen del SQL... es por eso que según lo entendido... debes MODIFICAR el SQL para obtener otro tipo de resultado...

Probaste con la query que te dí???... ... si de verdad no es eso... de plano no cacho... Quizá y si dibujas tu tabla

Editastes:YoEdito

Vale... bien por tí... pero trata de entender lo que se te posteó aquí.. quizá en un futuro lo ocupes (casi seguro)

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 23/03/2005 a las 08:20
  #9 (permalink)  
Antiguo 23/03/2005, 08:21
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
dale así... creo q es más "lindo"
Código PHP:
if($_POST['categoria']!="")
    
$agregado[] = "categoria='".$_POST['categoria']."'";
}
if(
$_POST['provincia']!=""){
    
$agregado[]="provincia='".$_POST['provincia']."'";
}
// coche es el otro campo, no? arreglalo según sea
if($_POST['coche']!=""){
    
$agregado[]="coche='".$_POST['coche']."'";
}
if (
count($agregado) > 0) {
$sql "SELECT * FROM anuncio WHERE ".implode(" AND ",$agregado)." AND act='1' ORDER BY id DESC";


Última edición por Seppo; 23/03/2005 a las 08:48
  #10 (permalink)  
Antiguo 23/03/2005, 08:22
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Cita:
Iniciado por jam1138
... sí... en escensia así es... y esto es fácil al tener solo dos criterios de busqueda... pero si son más???... Alguna vez hice un bucle para crear la query...
http://www.forosdelweb.com/showthread.php?t=267358
... así solo al principio se agregan los campos y se despreocupa de lo demás (ojo, solo hablo de construir la query). Esto se puede optimizar mucho más... pero por ahí ví una forma que me pareció interezante... utilizaba impode()... pero no la hayo... :(

De alguna manera esto es factible si se utilizan varibles con prefijos como nombres. Es decir, campo1, campo2, campo3... etc. Ahora cuando los campos son nombres totalmente distintos, es otro tema, porque no podes saber de que campo estas hablando... BUeno igualmente me intereso lo del implode, seguramente lo que hace es usar como string divisor el " and ", con lo cual armas el string.

Por otro lado y volviendo a la consulta de este post, en el codigo que te mande esta la forma de que si por post le pasas la variable provincia="" te haria la consulta para todas .
Suerte


Mientras escribia esto Seppo se me adelanto. Muy bueno el codigo... Gracais
(Deberia de ir implode sin el signo $ al inicio).

Última edición por MartinTandil; 23/03/2005 a las 08:26
  #11 (permalink)  
Antiguo 23/03/2005, 08:47
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Ese Seppo.. siempre adelantandose .
Cita:
Iniciado por MartinTandil
De alguna manera esto es factible si se utilizan varibles con prefijos como nombres. Es decir, campo1, campo2, campo3... etc. Ahora cuando los campos son nombres totalmente distintos, es otro tema, porque no podes saber de que campo estas hablando...
No entiendo tu comentario... te refieres a que le estamos diciendo "manualmente" en qué campos buscas???.... Pues lo debemos hacer... ya que estos campos deben de coincidir con el formulario anterior...

La manera para no hacer eso... sería asignarle desde el formulario un "name" adecuado... que sea identico a el nombre del campo a buscar... y así quizá con un foreach podremos counstruir una query de una mejor forma.. donde el indice será el campo a buscar y el valor lo que hay que buscar ¿no?... De echo desde el formulario se podrian sacar los nombres de los campos e insertarlos en el "name"...

Qué os pensais??? Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 23/03/2005, 08:49
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Cita:
Iniciado por MartinTandil
De Mientras escribia esto Seppo se me adelanto. Muy bueno el codigo... Gracais
(Deberia de ir implode sin el signo $ al inicio).
¿Qué signo $?
Nadie vio nada...
  #13 (permalink)  
Antiguo 23/03/2005, 08:59
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Por suerte se pueden editar los mensajes. JAJAJAJAJAJA

y Jam, es complicado automatizar con un bucle la construccion de la sentencia sql. Pero lo que planteas esta bien, hacer coincidir los nombres de los campos con las variables. Igualmente no deja de ser complejo.
$hasta luego, total los signos $ no se ven :)
Saludos
  #14 (permalink)  
Antiguo 23/03/2005, 09:14
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
Voy a ver la opcion de Seppo puesto que ahora se me antoja, que se puedan presentar los resultados con o sin foto y a ver si los puedo paginar..
ya os ire contando
__________________
Seguro que ahora me sale mejor!

Última edición por benti; 23/03/2005 a las 09:15
  #15 (permalink)  
Antiguo 28/03/2005, 15:04
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
La solucion de Seppo esta muy maja, pero no se porque no me rula, si a alguno le sirve lo he dejado así:
Código PHP:
    if ($_POST['foto']=='1'){ 
    
$foto ="AND foto";
    }else{
    
$foto ="";
    }
    
// imgaino que puedo añadirle tantos if a una variable para ir completando las posibilidades de la busqueda.
    
if ($_POST['provincia']=='99'){
        
$sql "SELECT * FROM anuncio WHERE categoria='".$_POST['categoria']."' $foto AND act='1' ORDER BY id DESC";
    }else{
        
$sql "SELECT * FROM anuncio WHERE categoria='".$_POST['categoria']."' $foto AND provincia='".$_POST['provincia']."' AND act='1' ORDER BY id DESC";
    } 
Ahora me funciona como quiero, pero no obstante quiero ver si esto lo puedo mejorar para otras aplicaciones.
gracias por la ayuda.
__________________
Seguro que ahora me sale mejor!

Última edición por benti; 28/03/2005 a las 15:05
  #16 (permalink)  
Antiguo 28/03/2005, 16:52
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por benti
imgaino que puedo añadirle tantos if a una variable para ir completando las posibilidades de la busqueda.
... sí... pero para qué añadir 20 líneas repidiendo lo mismo si se puede hacer en 3?? (cantidades solo sugestivas).

.... Recuerdo que te dejé un link en un post anterior donde empleo un blucle para que se vaya armando mi query...
Imaginate que agregas 3 nuevos campos en tu formulario... tendrías que crear 3 nuevas querys con sus respectivos if-elseif-else... en el caso que propúse yo.. solo tendrías que indicar que recibirás esos campos...

Ojo.. eso lo propúse hace tiempo... ahora veo que puede mejorarse pero por mucho... pero eso no significa que este mal aquello...

Intenta hacer algo similar... Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #17 (permalink)  
Antiguo 29/03/2005, 04:11
Avatar de benti  
Fecha de Ingreso: octubre-2001
Ubicación: Benidorm
Mensajes: 413
Antigüedad: 22 años, 5 meses
Puntos: 0
Lo hare, a ver si asi tengo un scrip completo para mi poco nivel.
__________________
Seguro que ahora me sale mejor!
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 17:25.