Foros del Web » Programando para Internet » PHP »

PHP OO Optimizacion de un buscador web

Estas en el tema de Optimizacion de un buscador web en el foro de PHP en Foros del Web. Hola a todos Amigos, . Me toca hacer un sistema sin embargo tengo un problema por medio de variables envio consultas a una base de ...
  #1 (permalink)  
Antiguo 06/08/2013, 14:39
 
Fecha de Ingreso: julio-2013
Mensajes: 9
Antigüedad: 10 años, 9 meses
Puntos: 0
Exclamación Optimizacion de un buscador web

Hola a todos Amigos, . Me toca hacer un sistema sin embargo tengo un problema por medio de variables envio consultas a una base de datos y se lo muestro al cliente, es un buscador que funciona correctamente, Ahora me sale algunos herrores por que Si busco por ejemplo "casaca blanca" y muestro las columnas de esa fila que me interesan, OK SI FUNCIONA BIEN el problema es que si al cliente le voy a mostrar una consulta q la variable es la palabra "casaca" si me muestra lo que quiero pero mas abajo tambien me muestra resultados con casaca blanca con casaca negra con casaca azul. Y eso me perjudicaria bastante, Lo que necesito es un buscador que me busque solo la palabra exacta si es bien o no pues no me lo muestra, que no me muestre palabras parecidas, por que peor aun si el cliente envia la variable una palabra "casa" me muestra lo que quiero pero tambien me muestra los valores de casaca y de casaca blanca y de casaca de todos los colores y todo lo que tenga casa. ESPERO QUE ME HAYGAN ENTENDIDO aca dejo mi codigo de buscador. Lo quedeseo es que me ayuden a arreglarlo para que busque la palabra exacta que le envie en la variable, quien les habla esta aprendiendo php recien felizmente ya trabajo en esto pero por favor no me hablen como si fuera un profesional ya que no fui a ninguna academia todo lo aprendi por mi cuenta.


Código:
<?php
	$busca="";
	$busca=$_POST['busca'];
	mysql_connect('servidor','usuario','contrasena')or die ('Ha fallado la conexión: '.mysql_error()); 
	mysql_select_db('basededatos')or die ('Error al seleccionar la BD: '.mysql_error()); 
	 if($busca!=""){
		$busqueda=mysql_query("SELECT * FROM tabla WHERE titulo LIKE '%".$busca."%'")or die(mysql_error()); 
		while($f=mysql_fetch_array($busqueda)){
			
			echo $f['titulo'] ;
			
			 
		}
	 }
	?>
  #2 (permalink)  
Antiguo 06/08/2013, 15:12
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Optimizacion de un buscador web

Cita:
Iniciado por andritow Ver Mensaje
Hola a todos Amigos, . Me toca hacer un sistema sin embargo tengo un problema por medio de variables envio consultas a una base de datos y se lo muestro al cliente, es un buscador que funciona correctamente, Ahora me sale algunos herrores por que Si busco por ejemplo "casaca blanca" y muestro las columnas de esa fila que me interesan, OK SI FUNCIONA BIEN el problema es que si al cliente le voy a mostrar una consulta q la variable es la palabra "casaca" si me muestra lo que quiero pero mas abajo tambien me muestra resultados con casaca blanca con casaca negra con casaca azul. Y eso me perjudicaria bastante, Lo que necesito es un buscador que me busque solo la palabra exacta si es bien o no pues no me lo muestra, que no me muestre palabras parecidas, por que peor aun si el cliente envia la variable una palabra "casa" me muestra lo que quiero pero tambien me muestra los valores de casaca y de casaca blanca y de casaca de todos los colores y todo lo que tenga casa. ESPERO QUE ME HAYGAN ENTENDIDO aca dejo mi codigo de buscador. Lo quedeseo es que me ayuden a arreglarlo para que busque la palabra exacta que le envie en la variable, quien les habla esta aprendiendo php recien felizmente ya trabajo en esto pero por favor no me hablen como si fuera un profesional ya que no fui a ninguna academia todo lo aprendi por mi cuenta.


Código:
<?php
	$busca="";
	$busca=$_POST['busca'];
	mysql_connect('servidor','usuario','contrasena')or die ('Ha fallado la conexión: '.mysql_error()); 
	mysql_select_db('basededatos')or die ('Error al seleccionar la BD: '.mysql_error()); 
	 if($busca!=""){
		$busqueda=mysql_query("SELECT * FROM tabla WHERE titulo LIKE '%".$busca."%'")or die(mysql_error()); 
		while($f=mysql_fetch_array($busqueda)){
			
			echo $f['titulo'] ;
			
			 
		}
	 }
	?>
en principio parece ser una duda que va en el foro mysql.

el problema es que en tu consulta utilizas el caracter comodín '%', eso significa que devolverá "Coincidencia de cualquier número de caracteres, incluso cero caracteres".

para una búsqueda literal deberás utilizar en vez de '%' la barra baja '_'.

puedes leer aquí

saludos.

Etiquetas: buscador, mysql, select, sql, tabla, variable
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 15:53.