Ver Mensaje Individual
  #27 (permalink)  
Antiguo 24/02/2009, 17:58
Avatar de ginitofl
ginitofl
 
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 19 años, 11 meses
Puntos: 22
Respuesta: Me ayudan con esta consulta

Hola tu tabla quedaria mejor asi:

Código PHP:
CREATE TABLE IF NOT EXISTS `posts` (
  `
id` int(11) NOT NULL AUTO_INCREMENT,
  `
nombre` text NOT NULL,
  `
mensaje` text NOT NULL,
  `
nick` text NOT NULL,
  `
avatar` text NOT NULL,
  `
categoria` text NOT NULL,
  `
puntos` int(11) NOT NULL,
  `
lock` varchar(3) DEFAULT NULL,
  `
no_comm` varchar(3) DEFAULT NULL,
  `
lecturas` longtext NOT NULL,
  `
tags` varchar(100) NOT NULL,
  `
id_usuario` int(11) NOT NULL,
  `
fecha` datetime NOT NULL,
  `
post_numero` varchar(255) NOT NULL,
  
PRIMARY KEY  (`id`),
   
FULLTEXT KEY `busqueda`(
  `
nombre` ,
  `
mensaje`
  )
) 
TYPE = MYISAM ; 
y tu busqueda asi:

Código PHP:
//CUENTA EL NUMERO DE PALABRAS
$busqueda = $_GET['search'];
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if (
$numero==1)
{
    
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
    
    
$resultado="SELECT * FROM posts WHERE  nombre LIKE  '%$busqueda%' OR mensaje LIKE  '%$busqueda%' ORDER BY coincidencias DESC";
    
}
else
{  
    
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
    
    
    
$resultado="SELECT *, MATCH ( nombre, mensaje )AGAINST (  '$busqueda' ) AS resultado FROM posts WHERE MATCH (nombre, mensaje ) AGAINST (  '$busqueda' ) ORDER BY coincidencias DESC";
    
} 

Saludos.