Foros del Web » Programando para Internet » PHP »

[Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Estas en el tema de [Aporte] Como hacer un buscador sencillo usando PHP y MySQL en el foro de PHP en Foros del Web. Muy buenos dia. Este buscador es genial y agradezco el aporte, solo que tengo un problema con el. El problema es ya una vez realizada ...

  #31 (permalink)  
Antiguo 27/10/2011, 07:55
 
Fecha de Ingreso: octubre-2011
Mensajes: 2
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Muy buenos dia.

Este buscador es genial y agradezco el aporte, solo que tengo un problema con el.

El problema es ya una vez realizada la busqueda, como puedo lograr que los resultados de la busqueda tenga su propio link, solo en el codigo se muestra esta parte

echo "<strong><a href='#'>$row[noticiaTitulo]</a></strong> <em>" ."</em><br />";

La parte de echo "<strong><a href='#'> el codigo para que al darnos resultados este puedan vincular cada registro a una pagina. Adicionalmente en mi base de datos ya he creado una tabla con estos datos y adicional una que es la de url donde coloco las paginas para cada registro. Mi detalle es como lo enlazo.

Saludos


Sigo con este problema, alguien que me pueda ayudar.

Gracias
  #32 (permalink)  
Antiguo 29/12/2011, 11:40
Avatar de aleksdj  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

una opción es que uses sphinx y te quites de problemas (si es que puedes instalarlo sin problemas): www.sphinx.com
__________________
Las mantas más chulas y baratas en tiradelamanta.com, creada en palbin.com, servicio web para crear tienda online.
  #33 (permalink)  
Antiguo 09/01/2012, 17:54
Avatar de waldragon  
Fecha de Ingreso: mayo-2010
Mensajes: 735
Antigüedad: 14 años
Puntos: 55
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Muy bueno el buscador, vi que algunos querian resaltar las palabras buscadas cuando aparecen en los resultados, le agregue algunos for para hacerlo:

esto va en la linea 32 entre el inicio del while y el echo que muestra el titulo:

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($sqlBuscar)){
  2. //-------------
  3. //iluminando coincidencias en el titulo
  4. $titulo=$row[noticiaTitulo];
  5. //--
  6. $texto=" ".$titulo." ";
  7. $partir=explode(" ",$texto);
  8. for($i=0; $i < count($partir); $i++){
  9. //---------SEGUNDO FOR PARA COMPARAR LAS PALABRAS
  10. $buscadas=" ".$frase." ";
  11. $busc=explode(" ",$buscadas);
  12. $aaa=0;
  13. for($e=0; $e < count($busc); $e++){
  14. if($partir[$i]==$busc[$e]){$aaa=$aaa+1;}else{echo"";}
  15. if($aaa>=1){$partir[$i]="<font color=#ff0000>".$partir[$i]."</font>";}else{echo"";}
  16. }//fin segundo for
  17. $texto1.=" ".$partir[$i];
  18. //---------
  19. }//fin primer for
  20.  echo "<strong><a href='#'>$texto1</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";
  21. $texto1="";//limpiamos la variable para el proximo resultado

esto es para mostrar en rojo, las palabras del titulo que coincidan con las ingresadas en la busqueda, tienen que agregar otro igual para hacer lo mismo con los resultados de noticias, pero cambiando esta parte $titulo=$row[noticiaTitulo];
por $titulo=$row[noticiaNoticia];
eso es todo, saludos.
  #34 (permalink)  
Antiguo 09/01/2012, 17:59
Avatar de waldragon  
Fecha de Ingreso: mayo-2010
Mensajes: 735
Antigüedad: 14 años
Puntos: 55
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Cita:
Iniciado por beyakus Ver Mensaje
Muy buenos dia.

Este buscador es genial y agradezco el aporte, solo que tengo un problema con el.

El problema es ya una vez realizada la busqueda, como puedo lograr que los resultados de la busqueda tenga su propio link, solo en el codigo se muestra esta parte

echo "<strong><a href='#'>$row[noticiaTitulo]</a></strong> <em>" ."</em><br />";

La parte de echo "<strong><a href='#'> el codigo para que al darnos resultados este puedan vincular cada registro a una pagina. Adicionalmente en mi base de datos ya he creado una tabla con estos datos y adicional una que es la de url donde coloco las paginas para cada registro. Mi detalle es como lo enlazo.

Saludos


Sigo con este problema, alguien que me pueda ayudar.

Gracias
eso se hace enviando una variable por _GET
buscalo en las faqs de fdw
  #35 (permalink)  
Antiguo 23/01/2012, 18:48
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 7
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

me tira este error :/
Parse error: syntax error, unexpected T_STRING in C:\.............\buscar.php on line 5
y lo copie tal cual, solo modifique la conexio a la bd y mis tablas
  #36 (permalink)  
Antiguo 25/07/2015, 18:19
Avatar de Rag_Doll  
Fecha de Ingreso: julio-2015
Ubicación: Colombia
Mensajes: 20
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Hola a todos!!!

buscando y buscando me tope con este buscador que me viene de perlas!!!, ya tengo una base de datos pero no es de datos tipo MyISAM, hasta ahora intente hacer uno muy sencillo

esta es la tabla de la cual quiero sacar los datos:
__________________________________________________ ________
CREATE TABLE IF NOT EXISTS `gym`.`clientes` (
`idcliente` INT NOT NULL AUTO_INCREMENT,
`tipo` VARCHAR(50) NOT NULL,
`numero` VARCHAR(50) NOT NULL,
`nombre` VARCHAR(50) NOT NULL,
`apellido` VARCHAR(50) NOT NULL,
`telefono` VARCHAR(45) NULL,
`celular` VARCHAR(45) NULL,
`correo` VARCHAR(45) NULL,
`nacimiento` DATE NOT NULL,
`ocupacion` VARCHAR(45) NOT NULL,
`convenio` VARCHAR(50) NULL,
`inscripcion` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`idcliente`))
ENGINE = InnoDB;
__________________________________________________ ________________

el formulario y el que recibe los datos:
__________________________________________________ ________________
<form name='formulario' action='buscarclientes.php' method='get'>
Buscar: <input type='text' size='50' name='busca' />
<input type='submit' name='submit' value='buscar' />
</form>

<?php
$busca="";
$busca = $_GET['buscar'];
echo $busca;
$conexion=mysql_connect("localhost","root","");
$busque=mysql_select_db("bd_gym");

mysql_query($busque,$conexion) or die("Error en: $busqueda: " . mysql_error());

if($busca!=" "){
$busqueda=mysql_query("SELECT * FROM clientes WHERE nombre LIKE '%".$busca."%' ");
while($f=mysql_fetch_array($busqueda)){
echo $f['numero']." ".$f['nombre'];
}
}


?>
__________________________________________________ _______

El caso esque me aparece este error "Error en: : Query was empty", de antemano agradezco enormemente que me puedan colaborar con esto.
  #37 (permalink)  
Antiguo 26/07/2015, 21:50
 
Fecha de Ingreso: noviembre-2008
Ubicación: Cochabamba Bolivia
Mensajes: 519
Antigüedad: 15 años, 5 meses
Puntos: 26
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

Ese caso lo he pasado yo, MATCH AGAINS es muy efectivo, sin embargo no cubre busquedas que contengan palabras de hasta solo 4 letras, por lo cual seria bueno agregar condicionales para ver si el string a buscar contiene palabras pequeñas, o en caso de que sea un string de una sola palabra, mejor un LIKE.
Para ello este codigo que habia hecho yo contiene una unas condicionales, a ver si ayuda a mejorar el codigo.

Código PHP:
Ver original
  1. function ResultMp3s($frase, $ini=0, $max){
  2.     $frase = mysql_real_escape_string($frase);
  3.     $trozos= explode(" ",$frase);
  4.     $numero= count($trozos);
  5.     if($numero==1){
  6.         $cadbusca= mysql_query("SELECT id, genero, artista, titulo FROM music_local WHERE titulo LIKE '$frase' OR artista LIKE '$frase' ORDER BY id DESC LIMIT $ini,$max");
  7.         if(mysql_num_rows($cadbusca)>0){
  8.             while($mp = mysql_fetch_assoc($cadbusca)){
  9.                 $artista = ucwords(str_replace("_"," ",str_replace("-"," ",limp($pl[artista]))));
  10.                 $artistaurl = str_replace("_","-",str_replace(" ","-",limp($pl[artista])));
  11.                 $url = "http://music-strike.net/".$pl[genero_url]."/".$artistaurl."/";
  12.    
  13.                 $img = "http://biografias.music-strike.net/img_bio.php?q=".$pl[artista];
  14.                 $title = limp($mp[titulo])." - ".limp($mp[artista]);
  15.                 $id = $mp[id];
  16.                 $url = "http://mp3.music-strike.net/00".$mp[id]."/".str_replace(' ','+',str_replace('-','+',$mp[artista]))."+-+".str_replace(' ','+',str_replace('-','+',$mp[titulo]))."/";
  17.    
  18.                 $mp3[] = array(
  19.                     genero => $mp[genero],
  20.                     title => $mp[titulo],
  21.                     artista => $mp[artista],
  22.                     titulo => $title,
  23.                     id => $id,
  24.                     url => $url,
  25.                     img => "http://music-strike.net/images/icons/speaker_2.png",
  26.                     coincidencias => "1",
  27.                     );
  28.             }
  29.         }else{
  30.             $cadbusca= mysql_query("SELECT id, genero, artista, titulo FROM music_local WHERE (titulo LIKE '%$frase%' OR artista LIKE '%$frase%') OR (titulo LIKE '% $frase %' OR artista LIKE '% $frase %') ORDER BY id DESC LIMIT $ini,$max");
  31.             while($mp = mysql_fetch_assoc($cadbusca)){
  32.                 $artista = ucwords(str_replace("_"," ",str_replace("-"," ",limp($pl[artista]))));
  33.                 $artistaurl = str_replace("_","-",str_replace(" ","-",limp($pl[artista])));
  34.                 $url = "http://music-strike.net/".$pl[genero_url]."/".$artistaurl."/";
  35.    
  36.                 $img = "http://biografias.music-strike.net/img_bio.php?q=".$pl[artista];
  37.                 $title = limp($mp[titulo])." - ".limp($mp[artista]);
  38.                 $id = $mp[id];
  39.                 $url = "http://mp3.music-strike.net/00".$mp[id]."/".str_replace(' ','+',str_replace('-','+',$mp[artista]))."+-+".str_replace(' ','+',str_replace('-','+',$mp[titulo]))."/";
  40.    
  41.                 $mp3[] = array(
  42.                     genero => $mp[genero],
  43.                     title => $mp[titulo],
  44.                     artista => $mp[artista],
  45.                     titulo => $title,
  46.                     id => $id,
  47.                     url => $url,
  48.                     img => "http://music-strike.net/images/icons/speaker_2.png",
  49.                     coincidencias => "1",
  50.                     );
  51.             }
  52.         }
  53.         $repons = $mp3;
  54.     }else{
  55.         $where = "";
  56.         $peque = FALSE;
  57.         foreach($trozos as $t){
  58.             if(strlen($t)<=3){
  59.                 $peque = TRUE;
  60.                 $agregar[] = $t;
  61.             }
  62.         }
  63.         if($peque==TRUE){
  64.             if(count($agregar)==$numero){
  65.                 foreach($agregar as $ag){
  66.                     $veces++;
  67.                     if($veces==1){
  68.                         $where .= "(artista LIKE '%$ag %' OR titulo LIKE '%$ag %')";
  69.                     }else{
  70.                         $where .= " AND (artista LIKE '% $ag %' OR titulo LIKE '% $ag %')";
  71.                     }
  72.                 }
  73.                 $sqlBuscar = mysql_query("SELECT id, genero, artista, titulo FROM music_local WHERE ".$where." ORDER BY id DESC LIMIT $ini,$max");
  74.             }else{
  75.                 foreach($agregar as $ag){
  76.                     $veces++;
  77.                     if($veces==1){
  78.                         $where .= "AND ((artista LIKE '% $ag %' OR titulo LIKE '% $ag %')";
  79.                     }else{
  80.                         $where .= " OR (artista LIKE '% $ag %' OR titulo LIKE '% $ag %')";  
  81.                     }
  82.                 }
  83.                 $where .= ")";
  84.                
  85.                 $sql = "SELECT id, genero, artista, titulo,
  86.                MATCH (artista, titulo)
  87.                AGAINST ('$frase' IN BOOLEAN MODE) AS c
  88.                FROM music_local
  89.                WHERE MATCH (artista, titulo)
  90.                AGAINST ('$frase' IN BOOLEAN MODE)
  91.                 ".$where." ORDER BY c DESC LIMIT $ini, $max";
  92.                 $sqlBuscar = mysql_query($sql);
  93.             }
  94.         }else{
  95.             $sql = "SELECT id, genero, artista, titulo,
  96.                MATCH (artista, titulo)
  97.                AGAINST ('$frase' IN BOOLEAN MODE) AS c
  98.                FROM music_local
  99.                WHERE MATCH (artista, titulo)
  100.                AGAINST ('$frase' IN BOOLEAN MODE)
  101.                ORDER BY c DESC LIMIT $ini, $max";
  102.             $sqlBuscar = mysql_query($sql);
  103.         }
  104.         // Para los resultados
  105.         while($mp = mysql_fetch_assoc($sqlBuscar)){
  106.             $title = limp($mp[titulo])." - ".limp($mp[artista]);
  107.             $id = $mp[id];
  108.             $url = "http://mp3.music-strike.net/00".$mp[id]."/".str_replace(' ','+',str_replace('-','+',$mp[artista]))."+-+".str_replace(' ','+',str_replace('-','+',$mp[titulo]))."/";
  109.             $mp3[] = array(
  110.                 genero => $mp[genero],
  111.                 title => $mp[titulo],
  112.                 artista => $mp[artista],
  113.                 titulo => $title,
  114.                 id => $id,
  115.                 url => $url,
  116.                 img => "http://music-strike.net/images/icons/speaker_2.png",
  117.                 coincidencias => round($mp[c])
  118.                 );
  119.         }
  120.         $repons = $mp3;
  121.     }
  122.     return $repons;
  123. }


En link donde lo he tratado es aqui:
http://www.forosdelweb.com/f18/error...uedas-1133209/

Ahi tambien hablo un poco sobre codificaciones UTF8, los cuales sin darnos cuenta puede causarnos prob
  #38 (permalink)  
Antiguo 06/06/2016, 09:13
 
Fecha de Ingreso: octubre-2012
Ubicación: Rio Cuarto,Cordoba,Argentina
Mensajes: 139
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: [Aporte] Como hacer un buscador sencillo usando PHP y MySQL

hola te hago una consulta, si tuviese los datos de una de las columnas comprimidos en la bd para ahorrar espacio,hay alguna forma de hacerlo directo en el sql?o hay que hacer otro trato en php como obtenerlos pasarlos a un array u otra cosa, desde ya gracias por el aporte.
__________________
Juan Pablo A. S.
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 8 personas




La zona horaria es GMT -6. Ahora son las 20:19.