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: 18 años, 3 meses
Puntos: 22
Respuesta: Me ayudan con esta consulta

Hola tu tabla quedaria mejor asi:

Código PHP:
CREATE TABLE IF NOT EXISTS `posts` (
  `
idint(11NOT NULL AUTO_INCREMENT,
  `
nombretext NOT NULL,
  `
mensajetext NOT NULL,
  `
nicktext NOT NULL,
  `
avatartext NOT NULL,
  `
categoriatext NOT NULL,
  `
puntosint(11NOT NULL,
  `
lockvarchar(3) DEFAULT NULL,
  `
no_commvarchar(3) DEFAULT NULL,
  `
lecturaslongtext NOT NULL,
  `
tagsvarchar(100NOT NULL,
  `
id_usuarioint(11NOT NULL,
  `
fechadatetime NOT NULL,
  `
post_numerovarchar(255NOT 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.