Foros del Web » Programando para Internet » PHP »

busque de varios caracteres con MATCH() AGAINST()

Estas en el tema de busque de varios caracteres con MATCH() AGAINST() en el foro de PHP en Foros del Web. hola bueno la verdad es que necesito hacer una búsqueda de caracteres, para una sola palabra funciona Cuando intento ingresar mas de dos palabras es ...
  #1 (permalink)  
Antiguo 17/11/2011, 14:43
 
Fecha de Ingreso: agosto-2011
Ubicación: la paz
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 4
Pregunta busque de varios caracteres con MATCH() AGAINST()

hola bueno la verdad es que necesito hacer una búsqueda de caracteres,
para una sola palabra funciona
Cuando intento ingresar mas de dos palabras es ahi cuando me da el problema:


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\SADU\buscador\buscar_nombres.php on line 86

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\SADU\buscador\buscar_nombres.php on line 88

MATCH() AGAINST() es lo que no funciona ahi esta el error no se si es en la consulta es una tabla usuario con campos nombre pat mat solo eso es lo que necesito que busque

Código PHP:
<?php
include("../admin/conexion.php");
?>
<html> 
<head> 
<title>Buscador simple en PHP</title> 
</head> 
<body> 
<form action="buscar_nombres.php" method="post"> 
Buscar: <input name="palabra"> 
<input type="submit" name="buscador" value="Buscar"> 
</form> 
<div align="left"> 
  <? 
if ($_POST['buscador']) 

// Tomamos el valor ingresado 
$buscar $_POST['palabra']; 
// Si está vacío, lo informamos, sino realizamos la búsqueda 
if(empty($buscar)) 

echo 
"No se ha ingresado una cadena a buscar"
}else{ 
//vemos el numero de la frase
$trozos=explode(" ",$buscar); 
$numero=count($trozos);
if(
$numero==1){
    
    
// Conexión a la base de datos y seleccion de registros 
$result mysql_query("SELECT * FROM usuario WHERE nombre LIKE '%$buscar' OR pat LIKE '%$buscar' OR mat LIKE '%$buscar' ORDER BY id_sistema ASC");

 
    
// Tomamos el total de los resultados 
    
$total mysql_num_rows($result); 
    
// Imprimimos los resultados
    
?>
      <table width="729" border="1"> 
    <tr> 
      <td width="30" height="26">id</td> 
      <td width="184">nombre y apellido</td> 
      <td width="121">direccion</td> 
      <td width="61">Pat </td>
      <td width="61">Mat </td> 
     </tr> 
   
    <?php 
    
if ($row mysql_fetch_array($result)){ 
    echo 
"Resultados para: <b>$buscar</b>"
    do { 
    
?> 
   
   
 
    <tr> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['id_sistema'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['ci_usuario'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['nombre'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['pat'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['mat'];?> 
      </a></b></td> 
   
    </tr> 
  </table> 
</div> 
    <? 
        
} while ($row mysql_fetch_array($result)); 
        echo 
"<p>Resultados: $total</p>"
        } else { 
        
// En caso de no encontrar resultados 
        
echo "No se encontraron resultados para: <b>$buscar</b>"
        }     
}else{
     
    
$result mysql_query("SELECT * , MATCH (nombre,pat,mat) AGAINST ('$buscar') FROM usuarios WHERE MATCH (nombre,pat,mat) AGAINST ('$buscar') ORDER BY id_sistema DESC");
 
    
// Tomamos el total de los resultados 
    
$total mysql_num_rows($result); 
    
// Imprimimos los resultados 
    
if ($row mysql_fetch_array($result)){ 
    echo 
"Resultados para: <b>$buscar</b>"
    do { 
    
?> 
   
   
  <table width="729" border="1"> 
    <tr> 
      <td width="30" height="26">id</td> 
      <td width="184">nombre y apellido</td> 
      <td width="121">direccion</td> 
      <td width="61">Pat </td>
      <td width="61">Mat </td> 
     
    </tr> 
    <tr> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['id_sistema'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['ci_usuario'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['nombre'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['pat'];?> 
      </a></b></td> 
      <td><b><a href="busprueba.php?id=<?=$row['id_alumno'];?>"> 
        <?=$row['mat'];?> 
      </a></b></td> 
   
    </tr> 
  </table> 
</div> 
    <? 
        
} while ($row mysql_fetch_array($result)); 
        echo 
"<p>Resultados: $total</p>"
        } else { 
        
// En caso de no encontrar resultados 
        
echo "No se encontraron resultados para: <b>$buscar</b>"
        }     
        }
                 
}     

?>
  #2 (permalink)  
Antiguo 17/11/2011, 14:55
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: busque de varios caracteres con MATCH() AGAINST()

Cuando hagas esta parte del código que pertenece a la consulta

Código PHP:
Ver original
  1. $result = mysql_query("SELECT * , MATCH (nombre,pat,mat) AGAINST ('$buscar') FROM usuarios WHERE MATCH (nombre,pat,mat) AGAINST ('$buscar') ORDER BY id_sistema DESC");

Agregale esto al final:

Código PHP:
Ver original
  1. $result = mysql_query("SELECT * , MATCH (nombre,pat,mat) AGAINST ('$buscar') FROM usuarios WHERE MATCH (nombre,pat,mat) AGAINST ('$buscar') ORDER BY id_sistema DESC") or die(mysql_error());

para asi podemos encontrar el error que tira...
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 17/11/2011, 14:57
 
Fecha de Ingreso: agosto-2011
Ubicación: la paz
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: busque de varios caracteres con MATCH() AGAINST()

okas man gracias lo intentare
  #4 (permalink)  
Antiguo 17/11/2011, 15:05
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: busque de varios caracteres con MATCH() AGAINST()

De nada campeón ;)
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #5 (permalink)  
Antiguo 17/11/2011, 15:05
 
Fecha de Ingreso: agosto-2011
Ubicación: la paz
Mensajes: 83
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: busque de varios caracteres con MATCH() AGAINST()

ya lo solucione gracias
  #6 (permalink)  
Antiguo 17/11/2011, 15:09
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: busque de varios caracteres con MATCH() AGAINST()

Excelente ;) me alegro que lo hayas solucionado.

Saludos!
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: caracteres, html, match, mysql, registro, tabla, usuarios
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 07:09.