Foros del Web » Programando para Internet » PHP »

optimizar búsqueda en Base de datos

Estas en el tema de optimizar búsqueda en Base de datos en el foro de PHP en Foros del Web. Hola a todos .... tengo una bd muy simple con solo campos de texto que se guardan de acuerdo a una id que va en ...
  #1 (permalink)  
Antiguo 02/01/2007, 15:56
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
Pregunta optimizar búsqueda en Base de datos

Hola a todos .... tengo una bd muy simple con solo campos de texto que se guardan de acuerdo a una id que va en incremento .

He encontrado por un sitio un buscador que me funciona ... pero no comoyo quisiera, ya que la busqueda es muy restringida y solo me muestra el valor de un campo. Me explico:

"EJEMPLO"

- Si en la BD tengo un nombre que está guardado como : Pablo Andrés Arraño Salas, y yo lo busco por Pablo ... todo bien, aparece. Pero si coloco en la búsqueda, Pablo Arraño, NO ME APARECE NADA !!! ajajajajaj ...

Ese es el primer problema.

Lo otro ... aquí dejo el código:

Código PHP:
//Aquí busco en el campo que quiera la palabra que coloqué.
$data mysql_query("SELECT * FROM archivos WHERE html LIKE '%$find%'");

//Y aquí muestro el resultado
while($result mysql_fetch_array$data ))  
{  
echo 
$result['html'];  
echo 
" ";  


Como ven el problema es que me muestra todo el campo html (donde guardo texto que sigue siendo texto html), por lo que es como si buscara una página hmtl y la mostrara.

Pero si tuviese 2 o más resultados ... como los muestro para poder seleccionar cualquiera de ellos .

Estoy intentando cambiar el $result ... luego les cuento como me fue ...

Y ultima cosa xD ... algun lugar donde aprender MySql xD

Muchas Gracias.- !!!
Pablo Araya.-
__________________
Adios ...!!!!

Última edición por BLAH !!; 04/05/2008 a las 14:26
  #2 (permalink)  
Antiguo 02/01/2007, 15:59
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
De acuerdo Re: optimizar búsqueda en Base de datos

Quiero mostrar algo así en el resultado de la búsqueda.

Código PHP:
$qry "SELECT id, titulo, cliente, fecha, RUN, html FROM archivos";
$res mysql_query($qry);

while(
$fila mysql_fetch_array($res))
{
print 
"<b>Factura Nº:</b> &nbsp; &nbsp;$fila[titulo]
<br>
<b>Cliente:</b> &nbsp; &nbsp; &nbsp; &nbsp; $fila[cliente]
<br>
<b>RUT:</b> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$fila[RUN]
<br>
<b>Fecha:</b> &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; $fila[fecha]
<form OnSubmit=\"return borrar()\" name='listas' action='borrar_archivo.php?id=$fila[id]' method='POST'>
 <input type='hidden' name='nfact' value='$fila[titulo]'>
 <input type='button' name='ver' value='Ver Archivo' OnClick=\"javascript: top.window.self.location.href='descargar_archivo.php?id=$fila[id]'\" style='color: #003366; background-color: #FFFFFF; font-family:verdana; font_size:xx-small'>&nbsp; &nbsp; 
 <input type='submit' name='delete' value='Borrar Archivo' style='color: #003366; background-color: #FFFFFF; font-family:verdana; font_size:xx-small'>
</form>
<br>
<br>"
;

__________________
Adios ...!!!!
  #3 (permalink)  
Antiguo 02/01/2007, 16:10
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Re: optimizar búsqueda en Base de datos

Movido a PHP, por favor lee la Función de la sección de Base de Datos, para que sepas el motivo por el cual se realizó dicho movimiento.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #4 (permalink)  
Antiguo 02/01/2007, 16:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: optimizar búsqueda en Base de datos

Para realizar una busqueda asi en lugar de usar el operador LIKE, tienes que usar el MATCH () AGAINST() para poder realizar una consulta de la forma que quieres.
  #5 (permalink)  
Antiguo 02/01/2007, 16:31
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
De acuerdo Re: optimizar búsqueda en Base de datos

buena !!!


http://www.programacion.net/php/articulo/adr_buscador/
http://es.tldp.org/Manuales-LuCAS/ma...uscador_bd.htm


SELECT * FROM archivos WHERE MATCH(titulo, cliente, html, fecha, RUN) AGAINST ('$find')
__________________
Adios ...!!!!

Última edición por BLAH !!; 02/01/2007 a las 16:47
  #6 (permalink)  
Antiguo 02/01/2007, 22:34
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
Re: optimizar búsqueda en Base de datos

la verdad .... no me funciono -.- jijijiji
__________________
Adios ...!!!!
  #7 (permalink)  
Antiguo 03/01/2007, 01:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 72
Antigüedad: 18 años, 10 meses
Puntos: 1
De acuerdo Re: optimizar búsqueda en Base de datos

buenas,

porlo que te he leido lo que quieres es que busques en cada palabra que ingreses en el campo no importa cual... pues aqui te va como lo puedes hacer:

str_replace(mixsea,mixrep,sub

Código PHP:
// Recibes el campo ya sea por $_POST o $_GET / en este caso usare POST

$find str_replace(" ","%",$_POST['find']); // lo que hago aqui es remplazar los espacios en blanco por wildcards " % ", entonces si pones " Pablo Araya " esto buscara por " Pablo " y por " Araya " individualmente.

$data mysql_query("SELECT * FROM archivos WHERE html LIKE '%$find%'");

// ya aqui TU le das formato.
while($result mysql_fetch_array$data ))  
{  
echo 
$result['html'];  
echo 
" ";  


bye.
__________________
Diseñador Gráfico / Programador PHP / Cisco Certified Network Associate (CCNA) / CSS / Java Scripting / SQL / C-Scripting / Entre otros...

:cool:
BOX
  #8 (permalink)  
Antiguo 03/01/2007, 10:15
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
Re: optimizar búsqueda en Base de datos

claro claro !!!! ahi si funciona !!! =)
__________________
Adios ...!!!!
  #9 (permalink)  
Antiguo 05/01/2007, 14:43
Avatar de BLAH !!  
Fecha de Ingreso: septiembre-2003
Ubicación: Región Metropolitana, Santiago, Chile
Mensajes: 706
Antigüedad: 20 años, 7 meses
Puntos: 16
Pregunta una pregunta :

Disculpen nuevamente los molesto ....

Alguien me puede decir si es que este php tiene algún error por favor ???

La verdad, funciona de maravilla sin ningún problema ... pero viendo el código me surgieron unas dudas !
le dejo el código con mis observaciones

Código PHP:
<?
// con esto me conecta a la bd
require("dbconnect.inc.php");

//esto esta todo bien
$buscar str_replace(" ","%",$_POST['buscar']);
$tiempo substr(microtime() - $T_inicio,0,5);

$sql "SELECT * FROM archivos WHERE titulo LIKE '%$buscar%' OR cliente LIKE '%$buscar%' OR RUN LIKE '%$buscar%' OR fecha LIKE '%$buscar%'"
$result mysql_query($sql$SQLid); 

//aca comienza mi duda, fijense en los parentesis de llave  {}
if ($row mysql_fetch_array($result)){
echo 
"Búsqueda realizada en <b>$tiempo</b> segundos \n";
echo 
"<table border='0' cellpadding='0' cellspacing='5' width='550'>
  <tr>"


mysql_field_seek($result,0); 

//por qué este while abre y cierra de inmediato ???
while ($field mysql_fetch_field($result)){ 


//abajo todo bien a no ser de que este algo mal en las llaves{}
echo "</tr> \n"
do { 
echo 
"
<tr>
 <td width='110'><font face='Arial, Verdana' size='2' color='#000000'><b>Factura Nº:</b></font></td>
 <td><font face='Arial, Verdana' size='2' color='#000000'># "
.$row["titulo"]."</font></td>
</tr>
<tr>
 <td width='110'><font face='Arial, Verdana' size='2' color='#000000'><b>Cliente:</b></font></td>
 <td><font face='Arial, Verdana' size='2' color='#000000'>"
.$row["cliente"]."</font></td>
</tr>
<tr>
 <td width='110'><font face='Arial, Verdana' size='2' color='#000000'><b>RUT:</b></font></td>
 <td><font face='Arial, Verdana' size='2' color='#000000'>"
.$row["RUN"]."</font></td>
</tr>
<tr>
 <td width='110'><font face='Arial, Verdana' size='2' color='#000000'><b>Fecha Emisión:</b></font></td>
 <td><font face='Arial, Verdana' size='2' color='#000000'>"
.$row["fecha"]."</font></td>
</tr>
<tr>
 <td colspan='2'>
  <form OnSubmit=\"return borrar()\" name='listas' action='borrar_archivo.php?id="
.$row["id"]."' method='POST'>
   <input type='hidden' name='nfact' value='"
.$row["titulo"]."'>
   <input type='button' name='ver' value='Ver Archivo' OnClick=\"javascript: top.window.self.location.href='descargar_archivo.php?id="
.$row["id"]."'\" style='color: #003366; background-color: #FFFFFF; font-family:verdana; font_size:xx-small'>&nbsp; &nbsp; 
   <input type='submit' name='delete' value='Borrar Archivo' style='color: #003366; background-color: #FFFFFF; font-family:verdana; font_size:xx-small'>
  </form><br><br>
 </td>
</tr>"

} while (
$row mysql_fetch_array($result)); 
echo 
"</table>"
} else { 
echo 
"<p>&nbsp;</p><p align='center'>¡NO SE HA ENCONTRADO NINGÚN REGISTRO!</p>\n"

?>
__________________
Adios ...!!!!
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 00:08.