Foros del Web » Programando para Internet » PHP »

busqueda en php y mysql

Estas en el tema de busqueda en php y mysql en el foro de PHP en Foros del Web. buenas a todos...tengo un pequeño problema...tengo una base de datos, en mysql, y quiero hacer un php para que busque en esa base de datos...la ...
  #1 (permalink)  
Antiguo 13/05/2008, 08:36
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
busqueda en php y mysql

buenas a todos...tengo un pequeño problema...tengo una base de datos, en mysql, y quiero hacer un php para que busque en esa base de datos...la cosa es que la busqueda la hace, pero muestra todos los datos de la tabla y no los que se seleccionan en busqueda, nose cual es el fallo ya que para mi esta bien(algunas veces me funciona y otras no) nose si tendre que ponerle algo mas o que...

os dejo el codigo para ver si alguien puede ayudarme. muchas gracias de antemano!

Código PHP:
$sql="select * from $tabla where codigo='$a' or equipo like '%$b%' or incidencia like'%$c%'
     or solucion like '%$d%' or tiempo_empleado like '%$e%' or fecha like '%$f%' or avisador like '%$g%';"
;
   
$res=mysql_query$sql$conexion);
     if ( !
$res) {
       echo
"Error de consulta";
       exit;
   }
   else
   {
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;

        } 
      echo
"</table>";
   } 
  #2 (permalink)  
Antiguo 13/05/2008, 09:16
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 17 años
Puntos: 6
Re: busqueda en php y mysql

Hola fercuervo,

Prueba poner un echo $sel despues de que hayas hecho tu consulta pára que veas que valores estas comparando, puedes también generar la consulta desde el mysql para que te guies de como debe de estar estructurada para que te muetsre los resultados que necesitas,

saludos
__________________
"Eres grande por que caminas entre gigantes"
  #3 (permalink)  
Antiguo 13/05/2008, 09:22
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: busqueda en php y mysql

el like que estas usando verifica que en cada campo este el parametro $a $b $c $d $e y $f. Seguramente la letra o no se que debe estar en todos, proba con otra form del like.

Saludos
__________________
http://www.rollermountain.com
  #4 (permalink)  
Antiguo 13/05/2008, 09:33
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Re: busqueda en php y mysql

ferbux...probe lo que me dijiste y me dice esto "Resource id #3"

y carlosmbrizuela...nose a que te refieres exactamente...pero las variables estan bien declaradas arriba(no lo puse por no poner un codigo demasiado largo). y tambien decirte que probe a ir poniendo codigo like '%$a%' y realizar la busqueda y funciona...despues con el siguiente campo y asi...y al principio con 2 o 3 campos iba bien...pero despues ya nada...solo iba con un campo.

mirare otra forma de usar el like, pero aun asi...aun poniendole codigo=$a nombre='$b'...etc pasa lo mismo, asi que no creo que sea del like

aun asi gracias a los 2
  #5 (permalink)  
Antiguo 13/05/2008, 16:31
 
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona
Mensajes: 249
Antigüedad: 16 años
Puntos: 1
Re: busqueda en php y mysql

Soy novato en esto y nose si te puedo ayudar, pero por probar. Yo tengo una busqueda parecida y lo estoy poniendo asi

.$fila["codigo"].

Prueba a ver

Saludo
  #6 (permalink)  
Antiguo 14/05/2008, 00:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Re: busqueda en php y mysql

lo probare dentro de unrato y te digo como me fue...los estas concatenando??? yo prefiero todo de golpe es menos lioso...prueba como lo haces tu pero con mi forma, es decir, echo" $fila['codigo'](las doble comillas no te sirven porque estan las del echo asi que son simples) espero que te sirva tambien esta forma si no la usas...y gracias marcvilap no me acordaba de las comillas y creo que con eso funcionara, nose si en todos los casos(tengo mas tablas donde buscar y uso el split...pero probare.

en fin gracias a todos por vuestro tiempo
  #7 (permalink)  
Antiguo 14/05/2008, 02:32
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Re: busqueda en php y mysql

probe lo que me dijiste y no funciona, me da errores, he probado a en vez de usar el like a ponerle el =, es decir, en la consulta sql ...where codigo=$a or nombre='$b'...y asi si funciona, pero me gustaria poder usar el like ya que algunos campos tiene muchos datos y claro acordarte de todos es dificil, y mas cuando en algunos hay varias ip..mac...asi que si alguien sabe alguna forma de poder hacerlo le estaria muy agradecido

aun asi gracias por las sugerencias

saludos!
  #8 (permalink)  
Antiguo 14/05/2008, 03:42
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Re: busqueda en php y mysql

voy a ser un poquito pesado...

he encontrado algo que creo que me puede servir, pero le doy vueltas y no hay forma de colocarlo...es el match...against...alguien sabe su uso??? tengo creado el indice...solo me queda el php que nose como hacerlo...

me dice esto...Can't find FULLTEXT index matching the column list...

en fin...gracias a todos

saludos!
  #9 (permalink)  
Antiguo 14/05/2008, 07:10
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Re: busqueda en php y mysql

solucion encontrada!!!!!!!!

posteo el codigo para quien le sirve(no recomendable para tablas con muchos campos)

Código PHP:
   $sql="select*from $tabla where codigo like '%$a%';";
     
$sql1="select*from $tabla where equipo like '%$b%';";
     
$sql2="select*from $tabla where incidencia like '%$c%';";
     
$sql3="select*from $tabla where solucion like '%$d%';";
     
$sql4="select*from $tabla where tiempo_empleado like '%$e%';";
     
$sql5="select*from $tabla where fecha like '%$f%';";
     
$sql6="select*from $tabla where avisador like '%$g%';";
     
$res=mysql_query$sql$conexion);
     
$res1=mysql_query$sql1$conexion);
     
$res2=mysql_query$sql2$conexion);
     
$res3=mysql_query$sql3$conexion);
     
$res4=mysql_query$sql4$conexion);
     
$res5=mysql_query$sql5$conexion);
     
$res6=mysql_query$sql6$conexion);
     if (
$res){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
      }
      
      else if (
$res1){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res1))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
   }
   
   else if (
$res2){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res2))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
   }
   
   else if (
$res3){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res3))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
   }
   
   else if (
$res4){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res4))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
   }
   
   else if (
$res5){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res5))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
   }
   
   else if (
$res6){

     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res6))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"
;
//mysql_close($conexion);
        

      echo
"</table>";
   }


si lo se...es muy largo...pero funciona que es de que sirve.

PD: al final lo de toda la vida funciona mejor que lo nuevo xDD

gracias atodos por vuestra atencion y ayuda
  #10 (permalink)  
Antiguo 14/05/2008, 07:16
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 7 meses
Puntos: 18
Re: busqueda en php y mysql

Cita:
Iniciado por fercuervo Ver Mensaje
voy a ser un poquito pesado...

he encontrado algo que creo que me puede servir, pero le doy vueltas y no hay forma de colocarlo...es el match...against...alguien sabe su uso??? tengo creado el indice...solo me queda el php que nose como hacerlo...

me dice esto...Can't find FULLTEXT index matching the column list...

en fin...gracias a todos

saludos!
para ésto tienes que tener definido un índice FULLTEXT

La SQL sería algo así como SELECT * FROM tabla WHERE MATCH (campofulltext) AGAINST (busqueda)
http://dev.mysql.com/doc/refman/5.0/...xt-search.html
  #11 (permalink)  
Antiguo 14/05/2008, 08:39
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Re: busqueda en php y mysql

trasgukabi gracias, estoy intentando lo que dices. tengo creado el indice fulltext. el nombre de la clave es busqueda. hasta aqui creo que todo lo tengo bien. el error de antes es porque ponia el campo codigo que no es fulltext ya que es clave primaria...pero aun asi sigue sin ir

te pongo el codigo para que le veas por si pongo algo mal

Código PHP:
$sql="select*from $tabla where match(equipo,incidencia,solucion,tiempo_empleado,fecha,avisador) against('$a') ;"// a traves de $a se mete la palabra/s a buscar.
   
$res=mysql_query($sql$conexion);
     if (!
$res){
        echo
"error".mysql_error();
        }
     else
     {
     
     echo
"<table align='center' border=2 cellpadding=2 bordercolor=blue>";
     echo
"<tr><TD><b>CODIGO</b></TD><td><b>equipo</b></td><td><b>incidencia</b></td>
         <TD><b>solucion</b></TD><TD><b>tiempo</b></TD><TD><b>fecha</b></TD>
         <TD><b>avisador</b></TD></tr>"
;
     while(
$fila mysql_fetch_array($res))
            {

     
echo 
"<h3><tr><td><b>$fila[codigo]</b></td><td><b>$fila[equipo]</b></td><td><b>$fila[incidencia]</b></td> 
                 <td><b>$fila[solucion]</b></td><td><b>$fila[tiempo_empleado]</b></td><td><b>$fila[fecha]</b></td>
               <td><b>$fila[avisador]</b></td></tr></h3>"

en fin...yo sigo sin verle el fallo...

aun asi gracias por tu aporte y ayuda
  #12 (permalink)  
Antiguo 14/05/2008, 09:50
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 7 meses
Puntos: 18
Re: busqueda en php y mysql

equipo,incidencia,solucion,tiempo_empleado,fecha,a visador. ¿en todos estos campos tienes fulltext definido?
  #13 (permalink)  
Antiguo 19/05/2008, 01:06
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: busqueda en php y mysql

si esos campos tienen fulltext, ya consegui que me funcione,era porque la cadena que ponia era de 3 caracteres y me he enterado que el minimo son 4, alguien sabe como cambiar esos parametros?. se que los comandos son ft_min_word_len y ft_max_word_len.

en fin...muchas gracias a todos por la ayuda y el tiempo empleado
  #14 (permalink)  
Antiguo 19/05/2008, 01:27
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: busqueda en php y mysql

el ft_min_word_len lo encontre...para quien le sirva(tengo instalado el wamp nada mas) esta en el archivo my-innodb-heavy-4G

el ft_max_word_len...no lo encuentro en ningun archivo de opciones de configuracion.

CUIDADO!! cuanto mas pequeña sea la palabra minima mas grande sera el indice y mas lenta la busqueda

espero que al menos el otro le sirva a alguien.
  #15 (permalink)  
Antiguo 19/05/2008, 02:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 20
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: busqueda en php y mysql

Hola. No se si te podré ayudar. Si a veces te funciona y otras no supongo que será porque los datos que introduces no son correctos o no los filtras bien. Por ejemplo, puede que los datos que comparas con el campo fecha no tenga formato fecha y al compararlo con los datos de la bd no encuentre nada parecido.
Un Saludo.
  #16 (permalink)  
Antiguo 19/05/2008, 02:34
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: busqueda en php y mysql

sarika no es por eso, los datos estan bien metidos, y al final lo estoy haciendo de otra manera porque de esa no hay manera...

aun asi gracias por tu ayuda
  #17 (permalink)  
Antiguo 19/05/2008, 03:07
 
Fecha de Ingreso: octubre-2007
Mensajes: 20
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: busqueda en php y mysql

No tiene que ser codigo==$a ????
  #18 (permalink)  
Antiguo 19/05/2008, 03:59
 
Fecha de Ingreso: mayo-2008
Mensajes: 22
Antigüedad: 16 años
Puntos: 0
Respuesta: busqueda en php y mysql

no hace falta sarika, al menos en este caso...eso se usa mas en programacion con if, en este caso creo que no hay ninguna igualdad. aun asi pongo el codigo que use y funciona

Código PHP:
$sql="select*from incidencias where";
     if (
$a != '')
   
$sql .= " codigo like '%$a%' and ";
     if (
$b != '')
   
$sql .= " equipo like '%$b%' and " 
   if (
$c != '')
   
$sql .= " incidencia like '%$c%' and " ;
     if (
$d != '')
   
$sql .= " nombre solucion '%$d%' and " ;
   if (
$e != '')
   
$sql .= " tiempo_empleado like '%$e%' and ";
     if (
$f != '')
   
$sql .= " fecha like '%$f%' and "  ;
     if (
$g != '')
   
$sql .= " avisador like '%$g%' and";
     
$sql .= " 1 = 1 order by codigo" ;
     
   
$res=mysql_query($sql$conexion); 
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:18.