Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/02/2005, 10:33
Avatar de sjam7
sjam7
 
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 23 años, 5 meses
Puntos: 16
y para que crear una tabla por cada busqueda???? te imaginas un sitio con muchos usuarios haciendo busquedas al mismo tiempo?

este es un codigo de un lenguaje que dependiendo de 1 variable busca en 2 diferentes tablas

la variable en recibe la indicacion de en que tabla buscar
checa la linea

if en="articulos" then

ahi se define en que tabla se busca, si pones otro if con la variable en o cambias esa solo cambias la sentencia SQL
SQL="SELECT * FROM articulos where " &Sacar(cadena, campos)

por la tabla que necesites

Código:
<%
cadena = request.form("busca")
en=request.form("en")

if en = "" then
en=request.querystring("en")
end if

pagina = Request.servervariables("HTTP_REFERER")
if pagina = "" then pagina=en&".asp"

if cadena="" then cadena =request.QueryString("busca")

if cadena="" then
response.redirect pagina
end if
base = request.form("base")
function Sacar(cadena,campos)

dim i
dim SacarAux
while InStr(cadena," ")
   Cadena=Replace(Cadena," ","+")
wend

if len(cadena)>0 then
   if InStr(cadena," ")>0 then 
	  Sacar= Sacar(left(cadena,InStr(cadena," ")-1),campos) & " OR " & Sacar(right(cadena,len(cadena)-InStr(cadena," ")),campos)
   elseif InStr(cadena,"+")>0 then 
	  Sacar=Sacar(left(cadena,InStr(cadena,"+")-1),campos) & " AND "& Sacar(right(cadena,len(cadena)-InStr(cadena,"+")),campos)
   elseif InStr(cadena,"-")>0 then 
Sacar=Sacar(left(cadena,InStr(cadena,"-")-1),campos) & " AND NOT " & Sacar(right(cadena,len(cadena)-InStr(cadena,"-")),campos)
   else
   'fijamos la sentencia
   SacarAux=""

i=1
SacarAux= "( " & campos(i) & " Like '%" & cadena & "%'"
i=i+1

   while len(campos(i))>0
	  SacarAux= SacarAux & " OR " & campos(i) & " Like '%" & cadena & "%'"
	  i=i+1
   wend

   SacarAux=SacarAux & " )"
   Sacar=SacarAux
   end if

else

sacar=""

end if 
end function


Set conexion = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")

if en="articulos" then
basedatos = Server.MapPath("base.mdb")
dim campos(3)
campos(1)="titulo"
campos(2)="contenido"
SQL="SELECT * FROM articulos where " &Sacar(cadena, campos)

else 

basedatos = Server.MapPath("base.mdb")
dim campos3(3)
campos3(1)="nombre"
campos3(2)="descripcion"
SQL="SELECT * FROM productos where producto=True And " &Sacar(cadena, campos3)
end if

conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & basedatos & ";"

RS.CursorType=1
RS.LockType=2

RS.Open SQL, conexion

If not RS.EOF then
%>
				  <p> 
				  <table width="97%" border="0" cellpadding="3" cellspacing="0" bgcolor="#f2f2f2" class="bordeTODO">
					<tr> 
					  <td height="23" class="fondotoptabla"> <font size=2 face=Verdana, Arial, Helvetica, sans-serif color=#FFFFFF>Se 
					    encontraron: <b><%=Rs.recordcount%></b> resultados Con el texto: <b><%=cadena%></b></font> <%
if en="articulos" then
Do while Not RS.EOF
titulo = RS("titulo")
comentario = RS.Fields("contenido")
clicks = RS.Fields("vistas")
id = RS("id")
%> 
					<tr> 
					  <td valign="top" align="left"> <font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000099"> 
					    <a href="articulos.asp?nota=<%=id%>&t=t06" class="liga1"> 
					    <b><%=titulo%></b></a></font> </td>
					</tr>
					<tr> 
					  <td> <font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000099"> 
					    <%=contenido%></font><font color="#000099" face="Verdana, Arial, Helvetica, sans-serif"><br>
					    </font></td>
					</tr>
					<tr> 
					  <td> <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000099"> 
					    <i>Visitas: <%=clicks%></i></font> <p> </td>
					</tr>
					<% 
RS.MoveNext
loop

else

Do while Not RS.EOF
nombre = RS.Fields("nombre")
descripcion = RS.Fields("descripcion")
precio = RS.Fields("precio")
id = RS("id")

nombre = replace(nombre,cadena,"<b>"&cadena&"</b>")
descripcion = replace(descripcion,cadena,"<b>"&cadena&"</b>")

%>
					<tr> 
					  <td valign="top" align="left"> <font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000099"> 
					    <a href="productos.asp?id=<%=rs("id")%>&t=t03" class="liga1" > 
					    <b><%=nombre%></b></a></font> </td>
					</tr>
					<tr> 
					  <td> <font size="2" face="Verdana, Arial, Helvetica, sans-serif" color="#000099"> 
					    <%=descripcion%></font><font color="#000099" face="Verdana, Arial, Helvetica, sans-serif"><br>
					    </font></td>
					</tr>
					<tr> 
					  <td> <font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#000099"> 
					    Precio: <%=formatcurrency(precio,2)%>&nbsp;<%=moneda%></font> <p>
<% 
RS.MoveNext
if not rs.eof then%><hr width="100%" size="1" noshade ><% end if%>
				    </td></tr>
					<%
loop
end if
else
%>
				    <p> <font size="3" face="verdana, arial" color="#5A6A83"> 
					  <center>
					    <b>Datos no encontrados</b> 
					  </center>
					  </font> 
				    <p> <font size="1" face="verdana, arial" color="#5A6A83"> 
					  Para realizar otra busqueda intente usando "+" para buscar 
					  varios datos dentro de un mismo registro o "-" para omitir 
					  algunos datos</font> 
				    <p> <a href="javascript:history.back()" class="a2">Regresar</a> 
					  <%
end if
'end if
RS.Close
Conexion.Close
%>
				  </table>	  <br>