Foros del Web » Programando para Internet » PHP »

Problemas con buscador

Estas en el tema de Problemas con buscador en el foro de PHP en Foros del Web. Hola a todos. Saludos y Gracias adelantadas. Tengo el siguiente problema: Tengo una tabla mysql sobre la cual realizo una búsqueda, la estructura de la ...
  #1 (permalink)  
Antiguo 16/02/2010, 07:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Problemas con buscador

Hola a todos.
Saludos y Gracias adelantadas.
Tengo el siguiente problema: Tengo una tabla mysql sobre la cual realizo una búsqueda, la estructura de la tabla es la siguiente: la misma tiene 10 campos, todos son varchar, lo que por supuesto no todos tienen la misma longitud. En ella almaceno el código de clientes en un campo llamado codigo_emp y el nombre del cliente (empresa) en un campo llamado descripcion. La clave principal de esta tabla es el campo codigo_emp, mientras que tengo un indice de tipo FULLTEXT formado por el codigo_emp y la descripcion.
De manera tal que la búsqueda se puede realizar tanto por el código del cliente, como por la descrpción del mismo, esto funciona bien, pero evidentemente tiene problemas, no se genera error alguno pero es incorrecto desde el punto de vista funcional.
Cuando la búsqueda es por el código no hay ningún tipo de problemas, pero cuando se hace por el nombre es cuando surgen las dificultades. Me explico:
Supongan que en la tabla hay almacenado varios clientes cuya descripción sea Frutas Selectas, Empresa Frutas Selectas, Establecimiento Frutas Selectas, y que el criterio de búsqueda seleccionado sea frutas selectas, cuando se hace esto salen juntos todos los registros, no salen por separado el de cada una de las empresas. Lo que deseo es que salgan los compradores de cada uno de ellas con sus respectivos no. de identidad, pues así está almacenado en la base de datos, pero como les repito todo sale. Aquí está el código a ver si me entienden:
Código PHP:

<h1><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Buscador</a></h1>
<form name="buscar" action="<?php $_SERVER['PHP_SELF'?>" method="get">
 Buscar: <input type="text" size="50" value="<?php echo $_GET['frase']; ?>" name="frase" />
 <input type="submit" name="buscar" value="Buscar" />
</form>
<?php
// conectar al servidor
$server_link mysql_connect("localhost""root""2009er&my&ine/*-");
if(!
$server_link){
die(
"Falló la Conexión "mysql_error());
}
// seleccionamos la base de datos
$db_selected mysql_select_db("empresas"$server_link);
if(!
$db_selected){
 die(
"No se pudo seleccionar la Base de Datos "mysql_error());
}
// verificamos que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
$frase addslashes($_GET['frase']);
// hacemos la consulta de busqueda
// ver explicación mas abajo
$sqlBuscar mysql_query("SELECT codigo_emp, descripcion, comprador1, identidad1, comprador2, identidad2, comprador3, identidad3, comprador4, identidad4,
MATCH (codigo_emp, descripcion)
AGAINST ('$frase' IN BOOLEAN MODE) AS coincidencias
FROM datos
WHERE MATCH (codigo_emp, descripcion)
AGAINST ('$frase' IN BOOLEAN MODE)
ORDER BY coincidencias DESC"
$server_link)
or die(
mysql_error());
$totalRows mysql_num_rows($sqlBuscar);
// Enviamos un mensaje
// indicando la cantidad de resultados ($totalRows)
// para la frase busada ($frase)
if(!empty($totalRows)){
echo 
stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>"); 
// mostramos los resultados
echo "<table border = 1>"//EMPIEZA A CREAR LA TABLA CON LOS ENCABEZADOS DE TABLA
echo "<tr bgcolor = #FFFFCC>";//CREA UNA NUEVA FILA
echo "<td>Nombre y Apellidos</td>";
echo 
"<td>Carné de Identidad</td>";
echo 
"</tr>";
while(
$row mysql_fetch_array($sqlBuscar)){
echo 
"<marquee behavior = scroll direction = right>Los compradores para ".strtoupper($frase)." son:</marquee>";  
echo 
"<br>"
echo 
"<strong><a href='#'>$row[codigo_emp]</a>:</strong> <em>Coincidencias: "round($row['coincidencias']) ."</em><br />";
echo 
"<br>";
echo 
"<tr bgcolor = #FFFFCC>";
echo 
"<td>"."<p>".strip_tags($row['comprador1'])."</p>"."</td>";
echo 
"<td>"."<p>".strip_tags($row['identidad1'])."</p>"."</td>";
echo 
"</tr>";
echo 
"<tr bgcolor = #FFFFCC>";
echo 
"<td>"."<p>".strip_tags($row['comprador2'])."</p>"."</td>";
echo 
"<td>"."<p>".strip_tags($row['identidad2'])."</p>"."</td>";
echo 
"</tr>";
echo 
"<tr bgcolor = #FFFFCC>";
echo 
"<td>"."<p>".strip_tags($row['comprador3'])."</p>"."</td>";
echo 
"<td>"."<p>".strip_tags($row['identidad3'])."</p>"."</td>";
echo 
"</tr>";
echo 
"<tr bgcolor = #FFFFCC>";
echo 
"<td>"."<p>".strip_tags($row['comprador4'])."</p>"."</td>";
echo 
"<td>"."<p>".strip_tags($row['identidad4'])."</p>"."</td>";
echo 
"</tr>";
}
}
// si se ha enviado vacio el formulario
// mostramos un mensaje del tipo Oops...!
elseif(empty($_GET['frase'])){
echo 
"Debe introducir el criterio de búsqueda.";
}
// si no hay resultados
// otro mensaje del tipo Oops...!
elseif($totalRows == 0){
echo 
stripslashes("Su búsqueda no arrojo resultados para <strong>$frase</strong>");
}
}
?>
Muchas gracias y disculpen lo tedioso y denso que he sido en la explicación.
  #2 (permalink)  
Antiguo 16/02/2010, 07:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problemas con buscador

No entendí muy bien. ¿Podrías mostrar un ejemplo de los datos que te genera esa consulta y cuál es la salida que quieres que muestre?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/02/2010, 07:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Problemas con buscador

Mira estos son los resultados:

Su búsqueda arrojó 2 resultados para empresa frutas selectas
Los compradores para EMPRESA FRUTAS SELECTAS son:
12325: Coincidencias: 3

Los compradores para EMPRESA FRUTAS SELECTAS son:
121315: Coincidencias: 2

Nombre y Apellidos Carné de Identidad

Fulano


70031416183

Mengano


70031416183

Perencejo


70031416183

Zultanejo


70031416183

Fulano


70031416183

Mengano


70031416183

Para que entiendas mejor, aquí me sale una tabla html donde muestro los resultados, según la coincidencia con el criterio de búsqueda, estos son datos de prueba que he ido intruduciendo en la tabla, en vez de salir por separado por cada emprsa, por ejemplo en la tabla tengo Empresa Frutas Selectas y Frutas Selectas, cada una de ellas con sus correspondientes comparadores y sus respectivos no. de identidad de cada uno de ellos, me imagino que lo ideal es que salga por separado para cada una de ellas y no junto, pues no se sabe a que empresa corresponden los compradores autorizados.
Espero me hayas entendido.
Muchas Gracias.

Etiquetas: buscadores
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 21:23.