Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/02/2010, 07:35
efelix
 
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.