Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/04/2002, 14:30
Avatar de urjose
urjose
 
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 10 meses
Puntos: 1
Re: Buscar en una base de datos (E-Commerce)

es cierto bueno no puedo poner todo por que es un poco extenso.

Busqueda=Split(Replace(Request.Form("busqueda "),"'","''"))
SQL="SELECT * FROM PRODUCTOS WHERE INSTR(NOMBRE,'"&Busqueda(0)&"')& quot;
For i=1 to Ubound(Busqueda)
SQL=SQL&" OR INSTR(NOMBRE,'"&Busqueda(I)&"')& quot;
Next
SET RS=oConnProductos.Execute(SQL)

Bueno primero que nada debemos tener una pagina con cualquier nombre que vaya a la pagina donde tenemos el codigo de arriba, a esta ultima le llamaremos resultados.asp

La pagina que apunta a resultados.asp la llamaremos formulario.asp

En formulario.asp debemos tener un formulario con un Textbox llamado Busqueda.

Ahora viene lo bueno jeje

Busqueda=Split(Replace(Request.Form("busqueda "),"'","''"))

Con la linea anterior primero limpiamos el contenido del textbox, es decir le quitamos los ' con el Replace, una vez que se limpia la cadena cortamos el contenido del campo por medio de la función Split lo cual nos convertira la variable busqueda en un Arreglo de n elementos dependiendo del numer de palabras que introdujo el usuario.

Supongamos que el usuario ingreso "PHP ASP" en el formulario el arreglo quedaría.

Busqueda(0)="PHP"
Busqueda(1)="ASP"


Ahora bien, con el codigo que mande se genera la Query de forma dinámica, ya que depende del numero de palabras.

SQL="SELECT * FROM PRODUCTOS WHERE INSTR(NOMBRE,'"&Busqueda(0)&"')& quot;

Lo anterior es la primera parte de la query ya que suponemos que al menos el usuari ingreso una palabra.

Ahora con lo siguiente se crea la query dinámica.

For i=1 to Ubound(Busqueda)
SQL=SQL&" OR INSTR(NOMBRE,'"&Busqueda(I)&"')& quot;
Next

Lo anterior: Desde el elemento 1, es decir el segundo, hasta el final del arreglo agrega otro INSTR. Con lo que supusimos que introdujo el usuario quedaría:

SELECT * FROM PRODUCTOS WHERE INSTR(NOMBRE,'php') OR INSTR(NOMBRE,'mysql')

Y por ultimo ejecutamos el query

SET RS=oConnProductos.Execute(SQL)

Continua...

<center><img src="http://www.pcmasmas.com.ar/foro/images/avatars/043.gif"><br>
Urjose</center>