ENTOLUNDO EN ESTADO: IIS
Lenguaje de script: VBScript
Base de datos: Access/SQL Server
Lenguaje de la base de datos: SQL
1. resumen:
Independientemente de los sitios web dinámicos como el foro, el sistema de noticias o el sistema de descarga, todos a menudo ven la función de búsqueda: publicaciones de búsqueda, usuarios de búsqueda, software de búsqueda (en las palabras clave de búsqueda en resumen), etc. Este artículo presenta cómo establecer un eficiente Eficiencia práctica, búsqueda de búsqueda de valor múltiple basada en ASP.
Este artículo se enfrenta a múltiples condiciones y una búsqueda de coincidencia vaga, que comprende la condición múltiple, y una búsqueda de una sola condición no es un pastel. En términos generales, hay dos formas de buscar múltiples condiciones: enumeración y métodos progresivos. La condición de búsqueda no es demasiado larga (n <= 3), y el método de enumeración se puede usar. Obviamente, cuando se incrementan las condiciones, el método de progreso debe adoptarse en ambos procedimientos y se puede lograr. Cabe señalar que el método de enumeración es muy simple, ya sea que la condición del juicio esté vacía y luego se busque de acuerdo con condiciones no vacías. Con muchas condiciones (creo que nadie va a hacer este tipo de cosas en 4 condiciones, ya tenemos que escribir 16 conjuntos de oraciones); Ese es usar la posición del logotipo (FLAG), y el segundo es usar la cadena en SQL String Connection Connection. Explicemos el establecimiento del motor con el ejemplo.
2. Ejemplo:
Hemos establecido un motor de consulta de libros de direcciones.
Nombre de identificación Tel School
1 tres 3333333333 Universidad de Ciencias Electrónicas y Tecnología Universidad de Ciencia Electrónica y Tecnología
2 Li 4444444444 Departamento de biología de la Universidad de Sichuan
3 Wang 2222222222 Southwest Jiaotong University Departamento de Arquitectura
... ... ... ...
La interfaz de búsqueda web es la siguiente:
Nombre: Tel: Escuela: Botón de búsqueda
El procedimiento fuente del método de enumeración es el siguiente:
< %@ CodePage = 936 %>
'Base de datos de conexión
<%
Dim CONN
Dim dboath
Dim RS
Dim SQL
Establecer conn = server.createObject (ADODB.Connection)
Dbpath = server.mappath (Directebook.mdb)
Conn.open Driver = {Microsoft Access Driver (*.mdb)};
Establecer RS = Server.CreateObject (ADODB.oldset)
'Obtenga el nombre, el teléfono, el valor escolar de la página web
nombre atenuante
Dim Tel
Dim Schol
Nombre = solicitud (nombre)
Tel = solicitud (Tel)
Escuela = solicitud (escuela)
'El núcleo del método de enumeración, debido a que hay 3 condiciones, debe escribir 8 grupos de declaraciones de juicio if
if trim (nombre) = y TRIM (Tel) = y TRIM (escuela) = entonces
Sql = seleccionar * de orden de dirección por ID ASC
final si
if trim (name) = y TRIM (Tel) = y TRIM (escuela) <> entonces
SQL = Seleccionar * Desde la dirección donde la escuela me gusta '%& TRIM (escuela) y%orden por ID ASC
final si
if trim (name) = y TRIM (Tel) <> y TRIM (escuela) = entonces
SQL = SELECT * Desde la dirección donde Tel Like '%& TRIM (TEL) &%' pedido por ID ASC
final si
if trim (name) = y TRIM (Tel) <> y TRIM (escuela) <> entonces
SQL = SELECT * Desde la dirección donde Tel Like '%& Trim (Tel) &%' y la escuela como '%& Trim (escuela) y%orden por ID ASC
final si
Si TRIM (nombre) <> y TRIM (Tel) = y TRIM (escuela) = entonces
SQL = SELECT * de la dirección donde el nombre como '%& trim (nombre) y%' pedido por ID ASC
final si
Si TRIM (nombre) <> y TRIM (Tel) = y TRIM (escuela) <> entonces
SQL = Seleccionar * De la dirección donde el nombre como '%& TRIM (nombre) y%' y escuela como '%& TRIM (escuela) y%' pedido por ID ASC
final si
Si TRIM (Nombre) <> y TRIM (Tel) <> y TRIM (School) = entonces
Sql = seleccionar * de la dirección donde el nombre como '%& trim (nombre) y%' y tel como '%& trim (tel) y%' pedido por ID ASC
final si
Si TRIM (nombre) <> y TRIM (Tel) <> y TRIM (escuela) <> entonces
SQL = Seleccionar * De la dirección donde Nombre como '%& Trim (nombre) y%' y Tel Like '%& Trim (Tel) &%' y escuela como '%& Trim (escuela) y%orden por AD SC
final si
Rs.oopen SQL, Conn, 1,1
'Mostrar resultados de búsqueda
Si Rs.Eof y Rs.Bof entonces
Respuesta.Write no se registra en la libreta de direcciones actualmente
demás
haz mientras no rs.eof
Respuesta. Nombre de escritura: & RS (Nombre) y Tel: & RS (Tel) y Escuela: & RS (Escuela) y <br>
Rs.Movenext
bucle
final si
'Romper la base de datos
establecer RS = nada
Conn.clar
establecer conn = nada
%>
Al comprender los procedimientos anteriores, concéntrese en la parte central, 8 conjuntos de oraciones uno por uno correspondiente a los 8 estados de los 3 cuadros de búsqueda uno por uno
Nombre de la escuela de tel
Vacío
Vacío y vacío
Vacío y vacío
Vacío no vacío no vacío
No vacío
No vacío no vacío
No vacío no vacío
No vacío no vacío no vacío
Además, TRIM () es una función de VB, elimine el espacio antes y después de la cadena de entrada;%es el paso de múltiples caracteres del lenguaje SQL (_ es un solo pase de caracteres), que muestra que%& Trim () &%Entrada en el cuadro de búsqueda Entrada Las palabras clave coinciden con la izquierda y la derecha;
Echemos un vistazo al método de progreso.
'El núcleo del método de búsqueda, la condición del juicio está vacía y el no vacío lo agregará a la condición de búsqueda
Sql = seleccionar * de la dirección donde
si nombre <> entonces
Sql = sql & name Like '%& name &%'
Bandera = 1
final si
Si Tel <> y Flag = 1 el
SQL = SQL y Tel Like '%& Tel &%'
Bandera = 1
Elseif Tel <> entonces
SQL = SQL & Tel Like '%& Tel &%'
Bandera = 1
final si
Si la empresa <> y flag = 1 entonces
SQL = SQL y Company como '%& Company &%'
Bandera = 1
otra empresa <> entonces
SQL = SQL y Company Like '%& Company &%'
Bandera = 1
final si
Si bandera = 0 entonces
Sql = seleccionar * de orden de dirección por ID ASC
final si
Rs.oopen SQL, Conn, 1,1
El método de progreso es un algoritmo sabio, que se puede ver solo desde la duración de la declaración. La dificultad y la esencia de este algoritmo se encuentra en la bandera y &. En primer lugar, debe ser claro y en SQL es un símbolo de conexión de cadena, que cose los caracteres alrededor del símbolo juntos. Volver al programa, cuando el nombre no está vacío, SQL = SELECT * de la dirección donde el nombre Like '%& name &%' simultáneamente Flag = 1; Tel <> y de When Flag = 1, SQL = Seleccionar * Desde la dirección donde Nombre como '%& name &%' y Tel Like '%& Tel &%' al mismo tiempo, de lo contrario, cuando el nombre está vacío, SQL = Seleccione * de la dirección W aquí Tel como '%& Tel &%' en el mismo indicador de tiempo = 1; Por supuesto, cuando las condiciones están vacías, es decir, Flag = 0 seleccionará todos los elementos de la tabla.
3. verificar:
En este punto, se establece un motor de búsqueda. Aquí hay algunos ejemplos de uso:
Nombre: Zhang Tel: Escuela: Botón de búsqueda
Los resultados de la búsqueda son:
Nombre: Zhang San Tel: 33333333 Unidad: Departamento de Computación de la Universidad de Ciencia Electrónica y Universidad de Tecnología
Nombre: Tel: Escuela: Botón de búsqueda de la universidad
Los resultados de la búsqueda son:
Nombre: Zhang San Tel: 33333333 Unidad: Departamento de Computación de la Universidad de Ciencia Electrónica y Universidad de Tecnología
Nombre Li SI Tel: 44444444 Unidad: Departamento de Biología de la Universidad de Sichuan
Nombre: Wang Er Tel: 22222222 Unidad: Departamento de Arquitectura, Southwest Jiaotong University
Nombre: Tel: 4444 Escuela: Botón de búsqueda de Sichuan
Los resultados de la búsqueda son:
Nombre Li SI Tel: 44444444 Unidad: Departamento de Biología de la Universidad de Sichuan
Nombre: Teléfono: Escuela: Botón de búsqueda de%de pago
Los resultados de la búsqueda son:
Nombre: Wang Er Tel: 22222222 Unidad: Departamento de Arquitectura, Southwest Jiaotong University
4. mejorar:
De hecho, este motor todavía tiene algunos defectos. Por un lado, se debe a que las personas generalmente usan*como canal, y por otro lado, si aparece en el hipervínculo, se comerá al obtenerlo a través de la solicitud, de la siguiente manera:
-Pest.htm--
Siega
<A href = test.asp?
Siega
-Pest.asp--
<%
contenido = solicitud (contenido)
Respuesta. Contenido de escritura
%>
Cuando navegue por Test.htm en IE, haga clic en el hipervínculo y se muestra como:
TestThiseñe
Se puede ver que el%es ignorado directamente por el hipervínculo. ¿Cómo podemos resolver este problema? Es muy simple, hagamos un poco de vigas de robo de mano y pies y cambiando columnas.
Agregue el siguiente código antes del núcleo de búsqueda:
Nombre = reemplazar (nombre,*,%)
Tel = reemplazar (Tel,*,%)
Compañía = Reemplazar (Compañía,*,%)
Agregue el siguiente código al núcleo de la búsqueda:
Nombre = reemplazar (nombre,%,*)
Tel = reemplazar (Tel,%,*)
Compañía = Reemplazar (Compañía,%,*)
Analicemos estas oraciones. Reemplazar () es una función de reemplazo de cadena en VB. En otras palabras, reemplazamos las tres condiciones de las tres condiciones al%, de modo que las primeras tres oraciones se cambiarán a*. Las últimas 3 oraciones pueden evitar que se coman%. Todos los problemas se resolverán.
Nombre: Teléfono: Escuela: Botón de búsqueda de%de pago
Los resultados de la búsqueda son:
Nombre: Wang Er Tel: 22222222 Unidad: Departamento de Arquitectura, Southwest Jiaotong University
Cambie las declaraciones anteriores y reemplace*con la cuadrícula vacía.
Función complementaria: si queremos consultar el título y el contenido en la misma tabla, pero queremos organizarlos en el orden de estos dos, como descubrir la primera pantalla que cumple con el título, ¿cómo se puede realizar detrás del título? Intersección
SQL = SELECCIONAR * DEL PRODUCTO DONDE TITE LOGO '%& PALABRA CLAVE &%'
SQL = SQL + Union Select * Desde el producto donde el contenido me gusta '%& Keyword &%' Orden por ID DESC
Agregue uno en el medio de las dos declaraciones SQL, y la Unión puede estar preguntando en combinación, pero la columna debe ser la misma, y también hay una.
Utilizaremos las consultas conjuntas de Union, que logrará las funciones anteriores.
Análisis: La consulta de la base de datos se consultará de acuerdo con los datos con el título, y luego la realización de la consulta de datos del contenido se divide.