Foros del Web » Programando para Internet » PHP »

Buscador en PHP y MySQL

Estas en el tema de Buscador en PHP y MySQL en el foro de PHP en Foros del Web. Muy buenos días a todos y antes de nada gracias por su colaboración! Buscador: Estoy trabajando en una herramienta en PHP y MySQL, y necesitaba ...
  #1 (permalink)  
Antiguo 05/04/2011, 11:35
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
Pregunta Buscador en PHP y MySQL

Muy buenos días a todos y antes de nada gracias por su colaboración!

Buscador:
Estoy trabajando en una herramienta en PHP y MySQL, y necesitaba programar un buscador que sea capaz de buscar por varios campos de diferentes formatos.

El tema es que puede no se rellenen todos los campos para realizar la busqueda.

Los datos por los que sería necesario buscar por ejemplo:

Titulo(texto) país(codigo relacionado con tabla paises) fecha inicio(fecha).

En principio iba a trabajar con un ejemplo que he encontrado que funciona con MATCH AGAINST, pero en el artículo comentan que solo funciona con campos de tipo texto.

¿Alguna opción o ejemplo sobre el que pueda trabajar el buscador?

Muchas grácias de antemano! Un saludo a todos!
  #2 (permalink)  
Antiguo 05/04/2011, 11:45
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
Respuesta: Buscador en PHP y MySQL

Saludos

Debes ir concatenando las condiciones a consultar, dependiendo de el campo a filtrar no se encuentre vació por ejemplo:

Código PHP:
Ver original
  1. //Siendo un filtro por nombre , apellido y fecha (la fecha como es requerida entonces siempre ira en la condicion)
  2.  
  3. $condicion="fecha='$fecha'";
  4. if($nombre!=""){
  5. $condicion.=" AND nombre='$nombre'";
  6. }
  7. if($apellido!=""){
  8. $condicion.=" AND apellido='$apellido'";
  9. }
  10.  
  11. $sentencia="SELECT * FROM TABLA $condicion";

Hasta Pronto!.
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 07/04/2011, 11:17
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
Pregunta Respuesta: Buscador en PHP y MySQL

Me surgen 2 dudas...

La primera y de la que dependen todas las demas es si mostrar los resultados en una página específica para ello o si mostrarla en la página donde se muestra el listado completo.

Claro que, si muestro los resultados en la página que utilizo para listar todos los resultados debería usar si no me equivoco
Código PHP:
 action="<?php $_SERVER['PHP_SELF'?>"
La primera duda que tengo es que no lo he usado nunca y no he programado como recoger los datos que son enviados de esta forma...

Y la segunda duda es que por medio tengo el paginator.inc.php pero entiendo que modifando la sentencia SQL que se le pasa al archivo no encontraría mayor problema no?

Me gustaría hacerlo asi, simplemente por el hecho de probar...

De la otra forma, usando una página exclusiva para mostrar los resultados, lo tendría mas facil ya que simplemente utilizando el consejo de tu post anterior podría componer la sentencia SQL y buscar en cada caso segun los datos introducidos. (Esto tambien lo haría asi en el otro caso). Corrigeme si me equivoco please!

Muchas gracias por vuestra atención! un saludo!
  #4 (permalink)  
Antiguo 08/04/2011, 10:27
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
Pregunta Respuesta: Buscador en PHP y MySQL

Ya no puedo maaaaasss... no consigo que el formulario me envíe los datos!!!
Ni usando <?php echo $_server['php_sefl']; ?>...
Ni enviado los datos a una página donde mostrarlos!!!

Posteo el código que de las páginas que entran en juego.

Desde esta página se cargan las demas:
asistentes.php
Código PHP:
<div id="contenidos">
        <h3>GESTI&Oacute;N ASISTENTES</h3>
    <?php
            
require_once("includes/buscador_asistentes.php");
            require_once(
"includes/link_asistente_add.php");
            require_once(
"queries/listado_asistentes.php");
    
?>
<div class="nav_pag"><?php echo $_pagi_navegacion ?></div>
</div>
En esta página esta cargado el formulario para realizar en envío de los datos:
buscador_asistentes.php
Código PHP:
<div class="buscador">
    <strong>Buscar por:</strong>
    <table class="table_buscador">
        <form name="buscador_ass" action="asistente_search.php" method="post">
        <tr>
            <td width="60px">Nombre:</td>
            <td width="190px"><input type="text" name="as_nom_busc" /></td>
            <td width="60pxpx">Apellidos:</td>
            <td width="190px"><input type="text" name="as_ape_busc" /></td>
            <td width="40px">Pa&iacute;s:</td>
            <td width="190px"><select name="as_pas_busc" id="as_pas_busc">
                <option>Selecione un pa&iacute;s...</option>
                <?php
                $query_pa 
"SELECT cod_pais, pa_nombre FROM pais ORDER BY pa_nombre";
                
$result_pa mysql_query($query_pa) or die(mysql_error());
                while (
$row_pa mysql_fetch_array($result_pa)){?>
                <option><?php echo $row_pa['pa_nombre'];?></option>
                <?php ?>
            </select></td>
            <td><input type="submit" value="Buscar" /></td>
        </tr>
        </form>
    </table>
</div>
<div class="separador"></div>
Y por último la página que tratará los datos que son enviados por el form, ahora solo los muestra pero despues se hará una consulta para obtener los registros que coincidan:
asistente_search.php
Código PHP:
<div id="contenidos">
        <h3>BUSQUEDA DE ASISTENTES</h3>
    <?php            
        
if(isset($_post['as_nom_busc'])){
        
$as_nom $_post['as_nom_busc'];
        echo 
$as_nom;}
        if(isset(
$_post['as_ape_busc'])){
        
$as_ape $_post['as_ape_busc'];
        echo 
$as_ape;}
        if(isset(
$_post['as_pas_busc'])){
        
$as_pas $_post['as_pas_busc'];
        echo 
$as_pas;}
    
?>
</div>
Espero que encontréis el error por que yo estoy ya saturado y contaminado... y no consigo encontrarlo!!!

Gracias de antemano por vuestra ayuda, un saludo a todos!
  #5 (permalink)  
Antiguo 08/04/2011, 10:31
Avatar de anacona16  
Fecha de Ingreso: marzo-2010
Ubicación: Bogota DC
Mensajes: 610
Antigüedad: 9 años, 11 meses
Puntos: 52
Respuesta: Buscador en PHP y MySQL

Ya viste esta clase Buscador
__________________
Aprendiendo!!!
  #6 (permalink)  
Antiguo 08/04/2011, 10:58
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: Buscador en PHP y MySQL

Gracias anacona16 por tu aporte... pero he mirando cientos de scripts de buscadores...

Estube pensando en incluir la posibilidad de usar el FULLTEXT pero como en otro apartado de la Web voy a usar un formulario muy similar pero con campos de tipo fecha lo descarte...

El problema que tengo es que no me llegan los datos a la pagina de recogida o no los estoy enviado correctamente.

He llegado a un nivel de saturacion que ya no se ni por donde me da el aire!

Gracias por vuestra ayuda, un saludo!
  #7 (permalink)  
Antiguo 08/04/2011, 11:36
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
Respuesta: Buscador en PHP y MySQL

Saludos

El primer error que noto es que no es $_post sino $_POST
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #8 (permalink)  
Antiguo 08/04/2011, 11:42
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Buscador en PHP y MySQL

Cita:
Iniciado por Nano_ Ver Mensaje
Saludos

El primer error que noto es que no es $_post sino $_POST
AAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaa!!! DIOS MIOOOO!!!

Era ese el error!! llevo todo el santo dia cambiando cosas de un lado para otro... y resulta que era el maldito $_POST!!

Gracias Nano... esto no se me va a olvidar en la vida!
Muchas gracias!
  #9 (permalink)  
Antiguo 08/04/2011, 11:51
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 14 años
Puntos: 96
Respuesta: Buscador en PHP y MySQL

Con mucho gusto!

Hasta Pronto!
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #10 (permalink)  
Antiguo 08/04/2011, 11:57
Avatar de Unxky28  
Fecha de Ingreso: marzo-2006
Mensajes: 82
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Buscador en PHP y MySQL

Chale, me ganaron. Si es $_post por $_POST.

Saludos.1
__________________
El Futuro esta en Tus Manos...
  #11 (permalink)  
Antiguo 19/04/2011, 04:58
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
Pregunta Respuesta: Buscador en PHP y MySQL

Buenas de nuevo a todos:

Me surge otra duda... En el primer post de Nano_ la concatenación de la sentencia, se simplificaba, por que la fecha era obligatoria.

¿Pero que pasa si no lo es? ¿Como realizo la concatenación si ninguno de los campos es obligatorio?

Las variables que uso son las siguientes:
Nombre -> $nom_busc;
Apellido -> $ape_busc;
Pais -> $pas_busc;

El problema que veo, es con los "AND" de la consulta...

Estoy atascado y no encuentro la solución... no me viene la inspiración
  #12 (permalink)  
Antiguo 19/04/2011, 06:23
 
Fecha de Ingreso: abril-2009
Ubicación: Vitoria
Mensajes: 160
Antigüedad: 10 años, 10 meses
Puntos: 1
De acuerdo Respuesta: Buscador en PHP y MySQL

He conseguido solucionar la papeleta...

En este tema, he encontrado una solución para conseguir ir añadiendo filtros a una consulta MySQL sin necesidad de preocuparse por los "AND" y comprobar si es la primera vez que se añade...

Postéo el código de mi solución por si a alguien le puede interesar.
Código PHP:
// Recogida de datos enviados del formulario de busqueda.
if(isset($_POST['as_nom_busc'])){$nom_busc $_POST['as_nom_busc'];}
if(isset(
$_POST['as_ape_busc'])){$ape_busc $_POST['as_ape_busc'];}
if(isset(
$_POST['as_pas_busc'])){$pas_busc $_POST['as_pas_busc'];}

// Construccion de los filtros para la sentencia SQL.
$condicion "WHERE 1 = 1";
if(
$nom_busc != ""){
    
$condicion .= " AND as_nombre = '".$nom_busc."'";
}
if(
$ape_busc != ""){
    
$condicion .= " AND as_apellidos = '".$ape_busc."'";
}
if(
$pas_busc != ""){
    
$query_pa "SELECT cod_pais, pa_nombre FROM pais WHERE pa_nombre = '$pas_busc'";
    
$result_pa mysql_query($query_pa) or die(mysql_error());
    
$data_pa mysql_fetch_array($result_pa);
    
$condicion .= " AND as_pais = '".$data_pa['cod_pais']."'";
}
            
// Sentencia SQL añadiendole los posible filtros obtenidos.
$query_busqueda_as "SELECT cod_asistente, as_nombre, as_apellidos, as_direccion, as_pais, as_tlf, as_email, as_foto, as_notas FROM asistente $condicion";
$result_busqueda_as mysql_query($query_busqueda_as) or die(mysql_error());

while(
$row_busqueda_as mysql_fetch_array($result_busqueda_as)){
// Muestra de datos.

Por lo menos he conseguido lo que estaba buscando, no se si será muy correcto o no, pero funciona.

Muchas gracias por vuestra ayuda!

Última edición por tokero; 19/04/2011 a las 06:26 Razón: Se desmontaba el codigo PHP.

Etiquetas: buscadores
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 12:55.