| Artículos | 01 ABR 1999

Bases de datos con JavaScript

Compartir

Faustino Forcén.

Por Faustino Forcén (forcen@mail.ddnet.es)

¿Cómo publicar bases de datos en Internet?

Algunas posibilidades ya las hemos visto en anteriores artículos, publicando los datos de forma estática, generando las páginas HTML con los listados y los registros. Esta es una solución que puede servir en muchos casos; por ejemplo, para publicar catálogos de libros o películas.

Pero ¿qué pasa cuando se quieren hacer búsquedas sobre esos datos, si tenemos un catálogo de productos y queremos hacer búsquedas según las características de cada producto? Imaginemos un caso: un catálogo de ascensores. El usuario quiere buscar un ordenador que cumpla con una serie determinada de requisitos; por ejemplo, 5 plazas, con apertura lateral de las puertas. Siguiendo el sistema ya comentado de hacer listas estáticas esto es casi imposible, porque requeriría hacer un listado por cada combinación posible. Si se quiere buscar por varias características salen muchas combinaciones.

Otra posibilidad, la que parece más lógica, es tener una base de datos en el servidor y realizar las búsquedas contra esa base de datos. Estas bases de datos pueden ser desarrolladas utilizando distintos sistemas: desde el simple script en Perl que hace búsquedas en un archivo de texto hasta bases de datos en Oracle, pasando por el siempre fiel FileMaker Pro.

En un mundo ideal, sólo tendríamos que instalar en el servidor el CGI adecuado o la aplicación correspondiente y dedicarnos a otra cosa. En un mundo real tendríamos que pelearnos con el servicio técnico de nuestro proveedor para que configurase el CGI y para que realmente funcionase como necesitamos y, seguidamente, para que actualice los datos que han cambiado.

Si queremos añadirle más problemas al caso, supongamos que el cliente no quiere sólo una página web sino que, además, quiere distribuir su página web en un CD-ROM. Rasquémonos la cabeza un momento buscando la solución al dilema: si no hay servidor, ¿cómo funciona la base de datos?

El problema

Parece ser otra misión para JavaScript, el defensor de los débiles. Es hora de centrar el caso, y enunciar el problema para que podamos dárselo a nuestro sufrido programador. Queremos publicar nuestro catálogo de ascensores, con una pantalla de búsquedas donde el usuario pueda elegir entre cuatro variables: número de pasajeros, apertura de puertas, tipo de embarque y tipo de marco. Tenemos en torno a 60 modelos, por lo que el volumen de datos es manejable, por no decir ínfimo.

La solución propuesta es crear una función en JavaScript que busque dentro de un juego de datos que se incluyan en el documento HTML. Es sencillo de proponer, y aún más sencillo de implementar. El truco, como en muchos sistemas de bases de datos y, por extensión, en muchos programas de ordenador, consiste en hacer trampas, jugar con los datos y adaptarlos a nuestras necesidades en lugar de pensar cómo adaptarnos nosotros a los datos.

El proceso de dsarrollo de esta base de datos se divide en tres partes: preparar los datos, crear la página con las búsquedas, e incorporar la función de búsqueda.

Nuestros amigos
los datos

Adaptemos pues los datos. Sabemos que las búsquedas que podemos hacer están claramente acotadas, y que consisten en menús desplegables, con las posibles opciones. Sabemos, pues, que un registro determinado tiene, por así decirlo, cuatro índices y que cada uno puede tener un valor que va desde 1 al número máximo de opciones para ese criterio de búsqueda. Si en uno de los criterios podemos elegir entre tres opciones, el índice correspondiente a ese criterio puede contener los valores 1, 2 y 3. Sencillo, ¿no? Tenemos, por tanto, que cada registro tiene cuatro índices (tantos como criterios de búsqueda) y, además, tantos campos como valores queramos representar en la lista de resultados. En este caso, seis campos: las dimensiones, número de pasajeros, puertas, tipo de marco, apertura y el enlace a la página del producto.

Con Excel o FileMaker es sencillo hacer una pequeña base de datos para tabular los datos de los productos y, además, componer los índices en función de los valores de los campos. En este caso en concreto, se usó Excel por la sencilla razón de que no hay que definir campos ni estructuras, sólo introducir los datos y las fórmulas y exportar los resultados.

Los valores de los índices se obtuvieron mediante cálculos, aplicando la función "SI" (hay que ser positivos en esta vida) de la siguiente manera:

 

=SI(M4="Marco";1;SI(M4="Frontal";2;SI(M4=¬

"Frontal Completo";3)))

Esta función de Excel equivale, en pseudocódigo, a:

Si (el contenido de la celda M4 es "Marco")
  El contenido de esta celda es 1
Si no
Si (el contenido de la celda M4 es "Frontal")
    El contenido de esta celda es 2
Si no
Si (el contenido de la celda M4 es "Frontal Completo")
      El contenido de esta celda es 3
    Fin si
Fin si
Fin si

Esta fórmula se aplicó en todos los campos, para obtener cuatro columnas de valores adaptados a los criterios de búsqueda; es decir, de 1 a N. Usando la función "CONCATENAR" se obtuvo una única celda conteniendo nuestro campo clave o índice. El nombre es lo de menos, lo que importa es que esta cadena de cuatro dígitos es la base de nuestro sistema de búsqueda.

Para acabar con el procesado de los datos, se unió este campo al resto, añadiendo separadores entre cada campo. Para ello se utilizaron caracteres que sabemos que no se usan dentro de los campos:

=CONCATENAR("á";H2;"|";K2;"#";C2;"$";L2;"%";M2;¬

"&";N2;"ñ")

Dando como resultado la siguiente cadena:

á1111|4 Pasajeros#750x1100$Simple%Marco&Lateralñ

El uso de caracteres especiales nos permite dos cosas. En primer lugar, una vez exportada esta columna como texto, se sustituyen los caracteres "á" y "ñ" por comillas y comillas-coma, respectivamente. En segundo lugar, los restantes caracteres sirven como separadores entre campos y nos ayudarán a encontrar el principio y el fin de cada campo dentro de un registro.

HTML, divino tesoro

Una vez tenemos clara la estructura de datos, necesitamos crear la página en la que se realizará la búsqueda y en la que se mostrarán los resultados de la misma. Para no preocuparnos con los problemas que puede suponer pasar parámetros de una página a otra, colocaremos todas las partes, las búsquedas y los resultados dentro de un único frameset (un conjunto de documentos que forman una página dividida en marcos o frames). Esto nos permite compartir datos entre los documentos HTML, ya que todas las variables que definamos están dentro de la jerarquía del objeto ventana, padre de ambos documentos, y, por tanto, accesibles desde cual

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información