Creando Sitios de Comercio Electrónico 1 Creando Sitios de Comercio Electrónico Edición 1.0 Prohibida la reproducción total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET 2 Creando Sitios de Comercio Electrónico Presentación del Caso a Desarrollar Objetivos En este primer módulo se desarrollaran los siguientes puntos: ü ü ü ü ü ü ü Presentación del escenario de trabajo. El modelo de la base de datos. Tipos de archivo que compone el Proyecto. Sectorizando Hojas de Estilo Tecnologías disponibles ASP vs. PHP 3 Creando Sitios de Comercio Electrónico Presentación del escenario de trabajo Peru Adventure & Trips Antecedentes Peru Adventure Trips, es una empresa dedicada a la venta de paquetes turisticos con cede en la capital. En la actualidad elabora y vende paquetes turisticos en sociedad con empresas amigas (socios de negocio) en las principales ciudades del Pais. Sus principales clientes son extranjeros y una minoria nacionales. Sus contactos en otras ciudades del mundo se encargan de promocionar sus paquetes turisticos. Las operaciones de reserva, información y contactos lo realizan de forma convencioinal usando un telefono. El dueño de la empresa, don Guino Castillo, conocer de las ventajas del uso de las tecnologias, decide cambiar a su Gerente General: Edgard Campos y decide contratar a Cesar Suarez, un joven profesional desarrollador de Sites de Comercio Electronico, quien a su vez sugiere contratar a una Profesional en Marketing y Diseño Grafico: Tamara Fernandez. El dueño le manifiesta, que por la recesion economica del Pais, el presupuesto destinado a la promocion de los paquetes turisticos, asi como la cuenta por el uso de telefono se debe reducir. Asi mismo le comenta que las comisiones obtenidas por los contactos con sus socios en el extranjero es muy reducido y que tiene intensiones de ser el mismo quien establezca contacto directo con los turistas. Tamara sugiere cambiar los distintivos de la empresa, plantea elaborar una pagina en Internet que refleje el espiritu de la empresa, usando el nombre de la empresa como dominio (www.PeruAdventure.com) y asignar cuentas de correo con dicho dominio a todos los empleados (Tamara@PeruAdventure.com, Cesar@PeruAdventure.com), además para aplicar el Marketing directo y el realizar las campañas de Mailing, señala que se requiere una conexión permanente a Internet. 4 Creando Sitios de Comercio Electrónico El presupuesto Cesar, indica que puede iniciarse comprando el dominio PeruAdventure.com y creando el Sitio en Internet y publicando en ella una Pagina Estatica presencial, mientras se elabore la solucion final. La inversion para la solucion en la parte tecnologica, asciende: Acceso a Internet, 128 Kb de ancho de banda, las 24 horas del dia Compra de Dominio en GrapPeru.com, incluye mantenimiento Servicio en Hosting en GrapPeru.com, 60 Mb soporte para ASP y Access o SQL Server 25 cuentas de correo POP3 US$ 65 mes US$ 20 año US$ 180 año La inversion por todo el año asciente a 980 dolares, lo que equivale a la mitad de uno de los recibos de telefono que suele llegar a la empresa (llamadas internacionales). Cesar, propone que se debe crear una pagina que no solamente muestre una lista de paquetes turisticos, sino un lugar inteligente que permita discretamente almacenar el perfil de cada visitante y asi preparar paquetes turisticos personalizados. Por ejemplo a muchos les agrada realizar canotaje, parapente, es decir les agrada la aventura, otros prefieren algo mas conservador como visitar los diversos centros arqueologicos y actividades culturales como el arte, la musica y las danzas autoctonas. EN cambio otros buscan la parte mistica. Cesar dice que tratar a todos los visitantes de la misma forma no seria conveniente, debemos buscar tratar a cada visitante de una forma muy personalizada y tener para ellos paquetes que vayan de acuerdo a sus gustos y preferencias (el pilar del CRM) El Sitio a diseñar deberá cumplir con las condiciones señaladas, la información de cada visitante deberá guardarse en una Base de Datos, en este caso usaremos Access, la dinamicidad de la pagina la conseguiremos mediante ASP. 5 Creando Sitios de Comercio Electrónico Descripción general Peru Adventure & Trips El Sitio a desarrollar debe ser capaz de: • Registrar a cada visitante Se debe almacenar como minimo su nombre, apellido, correo electronico y pais, puede consignarse informacion adicional como fecha de nacimiento, y algunos datos de su preferencia. • Catalogo de Paquetes turisticos Deberá mostrarse un catalogo general de paquetes turisticos organizado por categorias, por ejemplo Turismo de aventura, Turismo ecologico, Turismo mistico, etc. Posteriormente de acuerdo a las preferencias del visitante, la pagina podria priorizar un catalogo de acuerdo a su perfil. • Registrar una solicitud de reserva Se deberá crear un modulo de reserva, por un determinado tiempo, con posibilidad de reconfirmar o anular una reserva. • Disponer de una pasarela de pago Se dispondrá de una pasarela de pago, de manera que el visitante usando su tarjeta de credito pueda cancelar el importe del paquete turistico. • Disponer de un modulo de administracion del sitio Para la empresa será necesario contar con un modulo de administracion del Sitio web, por ejemplo para dar de alta a nuevos paquetes turisticos, para remover reservas, etc. 6 Creando Sitios de Comercio Electrónico La Base de Datos Descripcion de las tablas Tabla: DESTINO La tabla contiene la relacion de ciudades Llave primaria: IdDestino El Id del destino es un numero correlativo. IDDESTINO CIUDAD Entero Carácter 4 20 Tabla: PAQUETE La tabla paquete contiene la descripcion de un paquete turistico, su costo, el inicio y termino, la cantidad de cupos. Llave primaria: IdPaquete El Id del paquete tiene un prefijo “P” seguido de un numero correlativo, por ejemplo: P0001, P0002. Llave foránea: IdDestino IDPAQUETE Carácter IDDESTINO Entero TIPO Carácter NOMBRE Carácter PRECIOCOSTO Monetario PRECIOVENTA Monetario FECHAINICIO DateTime FECHATERMINO DateTime CATEGORIA Carácter FECHACONFIRMACION DateTime CUPOS Entero VIGENTE Entero 5 4 1 100 8 8 8 8 1 8 4 4 4 4 Tabla: ACTIVIDAD Contiene las actividades que compone un paquete turistico: recojo del aeropuerto, hospedaje, visitas guiadas, etc., para cada actividad habrá un proveedor. Llave primaria: IdActividad El Id de la actividad es un numero correlativo Llaves foránea: IdProveedor, IdPaquete IDACTIVIDAD IDPROVEEDOR IDPAQUETE NOMBRE PRECIOCOSTO FECHA Entero Entero Carácter Carácter Monetario DateTime 4 4 5 100 8 8 4 7 Creando Sitios de Comercio Electrónico Tabla: PROVEEDOR Contiene la relacion de proveedores Llave primaria: IdProveedor El Id del proveedor es un numero correlativo IDPROVEEDOR NOMBRE CIUDAD TIPO EMAIL URL Entero Carácter Carácter Carácter Carácter Carácter 4 50 20 2 40 80 Tabla: CLIENTE Contiene la lista de clientes suscritos Llave primaria: IdCliente El Id del cliente consta de un prefijo “C” y un numero correlativo, por ejemplo: C0001, C0002 IDCLIENTE APELLIDO NOMBRE EMAIL CLAVE FECHANAC SEXO PAIS CIUDAD TIPOS Carácter Carácter Carácter Carácter Carácter DateTime Carácter Carácter Carácter Carácter 5 40 40 40 20 8 1 20 20 10 Tabla: RESERVA Contiene la reserva de paquete efectuado por un determinado cliente Llave primaria: IdReserva El Id de la reserva consta de un prefijo “R” y un numero correlativo, por ejemplo: R0001, R0002 IDRESERVA IDCLIENTE IDPAQUETE FECHA CANTIDAD TIPOPAGO TOTALVENTA DESCUENTO TOTALNETO CONFIRMADO ANULADO Carácter Carácter Carácter DateTime Entero Carácter Monetario Monetario Monetario Lógico Lógico 5 5 5 8 4 1 8 8 8 1 1 4 4 4 8 Creando Sitios de Comercio Electrónico Tabla: PARAMETRO Contiene el ultimo numero correlativo usado en los Ids de las tablas. El Campo CAMPO, contiene el nombre del campo y VALOR el ultimo numero usado CAMPO VALOR Carácter Carácter 20 20 J La BD en Access se adjunta al libro, en la siguiente edición se ampliará el tema de Base de Datos. La aplicación PeruAdventure, lo hallará en: www.LibrosDigitales.NET/PeruAdventure 9 Creando Sitios de Comercio Electrónico Tipos de archivos que compone un proyecto Una aplicación web está compuesta por distintos tipos de archivos, los que pueden ser: .htm o .html Paginas HTML, pueden contener formularios y controles, texto estatico, referencias a graficos e hipervinculos .asp Archivo de tipo Active Server Page, contiene instrucciones HTML dentro de los cuales se encuentran instrucciones VBScript que se ejecutan en el servidor, los que interactuan con una Base de Datos .css Hojas de Estilo, contienen informacion sobre como optimizar los elementos de una pagina .gif, .jpg Graficos que se mostrarán en la pagina Global.asa Cada proyecto puede contener un archivo Global.asa, este archivo contiene la definicion de variables globales, conecciones a bases de datos, asi como el codigo de inicializacion y cierre J Por comodidad, podemos crear carpetas para separar los distintos archivos de la aplicación 10 Creando Sitios de Comercio Electrónico Sectorización Antes de iniciar el proyecto, conviene definir los sectores que presentará nuestros Sitio. La pantalla la podemos dividir en: Encabezado: En ella podemos situar el logotipo de la empresa, el nombre del site, una banda de menu Pie: En ella podemos situar los datos de la empresa, los derechos, y quizas algunos banners Izquierda: En ese sector podemos situar un menu de opciones, hipervinculos, y minibanners Derecha: Para mostrar informacion adicional o publicidad, mediante minibanners En nuestro caso será: J Sugerimos no usar Marcos (Frames), en su lugar usaremos Tablas 11 Creando Sitios de Comercio Electrónico Definiendo Hojas de Estilo Durante el desarrollo aun no estableceremos atributos de fuente o color, lo dejaremos para el final, esto puede solucionarse facilmente, mediante el uso de hojas de estilo, asi podemos definir: Colores.css H1 {font: 17pt “Arial”; Font-weight: bold; Color: Blue} H2 {font: 13pt “Arial”; Font-weight: bold; Color: Green} P {font: 17pt “Arial”; Color: Yellow} Asi el archivo Colores.HTM, será: <HEAD> <TITLE>Aquí no hay Hojas de Estilo</TITLE> </HEAD> <BODY> <H1>Este es un ejemplo</H1> <H2>del uso de hojas de estilo</H2> <P>Personaliza cada uno de los elementos que forma parte una pagina</P> </BODY> 12 Creando Sitios de Comercio Electrónico Una vez creada la hoja de estilo, agregue a la pagina el link en la seccion <HEAD>: <LINK Rel=”stylesheet” TYPE=“text/css” HREF= “”colores.css> La pagina debe quedar asi: <HEAD> <TITLE>Aquí si se usa Hojas de Estilo</TITLE> <LINK Rel="stylesheet" TYPE="text/css" HREF= "colores.css"> </HEAD> <BODY> <H1>Este es un ejemplo</H1> <H2>del uso de hojas de estilo</H2> <P>Personaliza cada uno de los elementos que forma parte una pagina</P> </BODY> Al colocar la referencia a la hoja de estilo y volver a ejecutar la pagina queda: J En el presente libro no nos preocuparemos mucho por el aspecto de nuestra página, sino mas bien incidiremos en la parte funcional, para la parte artistica dentro de muy poco estará disponible el libro “para el WebMaster profesional” 13 Creando Sitios de Comercio Electrónico Tecnologias para el diseño de Páginas Las paginas en Internet las podemos dividir en grupos: Tecnologías del lado del cliente: Paginas estáticas Corresponde a las instrucciones que se ejecutarán en el Navegador, el codigo HTML, scripts basadas en JavaScript o VBScript. Representan la primera generacion de paginas en el web, por lo general de tipo presencial, a manera de un anuncio en un periodico. Caracteristicas: • • • • • Estan basadas en HTML, JavaScript, VBScript, CSS. Son sencillas de crear, las podemos hacer incluso desde MS-Word, simplemente grabando el documento como HTML. Para su construccion, como minimo necesitamos un editor de texto, claro que existen productos que nos permiten diseñar paginas muy vistosas y nos ahorran tiempo en diseño, tales como MS-FrontPage, Flash y DreamWeaver de Macromedia. A pesar de utilizar tales programas es necesario tener conocimiento de las instrucciones HTML y de JavaScript, para optimizar el codigo generado (en muchos casos se inserta codigo innecesario que debe removerse a fin de obtener un archivo ligero) Estas paginas no realizan gestion con Base de Datos. Ejemplos: Basado en solo HTML: <HEAD> <TITLE>Ejecutando HTML en el Cliente</TITLE> </HEAD> <BODY> <H2>Usando HTML</H2> <P>El dia de hoy es 18/02/2002 </BODY> 14 Creando Sitios de Comercio Electrónico Usando JavaScript: <HEAD> <TITLE>Ejecutando un script JavaScript en el Cliente</TITLE> </HEAD> <BODY> <H2>Usando JavaScript</H2> <P>El dia de hoy es <SCRIPT LANGUAGE=JavaScript RUNAT=Client> <!-dHoy = new Date(); document.write (dHoy); //--> </SCRIPT> </BODY> 15 Creando Sitios de Comercio Electrónico Usando VBScript: <HEAD> <TITLE> Ejecutando un script VBScript en el Cliente </TITLE> </HEAD> <BODY> <H2>Usando VBScript</H2> <P>El dia de hoy es <SCRIPT LANGUAGE=VBScript RUNAT=Client> <!-Document.Write (Date) --> </SCRIPT> </BODY> 16 Creando Sitios de Comercio Electrónico 17 Creando Sitios de Comercio Electrónico Tecnologias del lado del Servidor: Páginas dinámicas Son paginas mas inteligentes, actualmente la mayoria de sites son de este tipo. El codigo, se almacena en un Servidor Internet. Cuando se accede desde un navegador, el Servidor interpreta el código, lo ejecuta, y envía al navegador el resultado en formato HTML. Esto hace un navegador independiente a la solución. Caracteristicas: • • • • Estan basadas en ASP o en PHP Para su construccion solo se requiere un sencillo editor de texto, aunque existen productos que alivian dicho trabajo como MS-Visual InterDev para ASP o EditPlus (www.editplus.com) un pequeño pero gran editor de codigo ASP. Permite la creacion de paginas con contenido dinamico, por ejemplo podemos crear sites que permitan realizar reservas de hoteles, controlar ventas en linea, etc. Estas paginas hacen uso de una Base de Datos. Basado en ASP: <HEAD> <TITLE> Ejecutando un script VBScript en el Servidor </TITLE> </HEAD> <BODY> <H2>Usando VBScript </H2> <P> El dia de hoy es: <%Response.Write Date%> </BODY> 18 Creando Sitios de Comercio Electrónico Que debo usar ASP o PHP? Para empezar ambos son gratuitos, es decir no necesita comprar licencia de uso a ninguna empresa, claro Microsoft es quien a explorado mas y muchos de sus productos estan basados en ASP, mientras que es la corriente Linux quien apuesta por PHP. Como entornos de trabajo, ambos son muy buenos y tienen mucho en comun. Lo que los difieren es el sistema operativo sobre el que operan, Windows para ASP y Linux para PHP. EN cuanto a la gestion de Base de Datos, para el sistema operativo Windows, podemos usar Access, SQL Server, Visual FoxPro, Oracle, que son gestores de bases de uso comercial muy conocidos. En cambio por el lado de Linux podemos usar MySQL, SQLPostgree que a diferencia de los productos Microsoft, son Bases de Datos gratuitas. Hay que señalar que MySQL y SQLPostgree presentan ciertas limitaciones para quienes estamos acostumbrados a las cosas faciles, por ejemplo no permiten Procedimientos Almacenados ni Desencadentes , no siempre será asi, la corriente Linux avanza rapidamente, quiza mas adelante contemos con un gestor de Base de Datos mas potente, sin embargo hay que señalar que muchas soluciones profesionales estan basadas en el uso de esta tecnologia, por tanto su construccion ya es, ingenio del desarrollador. 19 Creando Sitios de Comercio Electrónico Conceptos generales de ASP Objetivos En este segundo módulo se desarrollaran los siguientes puntos: ü ü ü ASP Que necesito para ejecutar ASP El modelo de objetos 20 Creando Sitios de Comercio Electrónico Active Server Pages ü ü ü ü ü Active Server Pages (ASP) es el aporte de Microsoft, al desarrollo de páginas dinámicas. CGI y Perl, son tecnologias predecesoras a ASP. Otras tecnologías que compiten con ASP son ColdFusion (Allaire), JavaServer Pages (Sun Microsystems) y PHP (de libre distribución bajo Open System). ASP no es un lenguaje de programación, sino un marco de trabajo, donde se puede construir la aplicación web. Con ASP podemos construir aplicaciones que accedan a Base de Datos como Access, SQL Server u Oracle. Ventajas Las principales ventajas que ofrece ASP son: ü ü ü ü ü Permite acceder a bases de datos de una forma sencilla y rápida. Las páginas se generan dinámicamente. El código de script se ejecuta en el servidor, y no depende del navegador que se use. Desde una página ASP se pueden ejecutar servidores OLE en el servidor de web y filtros ISAPI: acceso a base de datos, acceso a ficheros, log en el sistema, envío de correo, etc. La tecnología ASP se emplea principalmente para crear aplicaciones interactivas Cómo funciona? ü ü ü ü Las páginas ASP comienzan a ejecutarse cuando un usuario solicita un archivo .asp al servidor Web a través del explorador. El servidor web llama a ASP, que lee el archivo solicitado, ejecuta las secuencias de comandos que encuentre y envía los resultados al explorador del cliente. Puesto que las secuencias de comandos se ejecutan en el servidor, y NO en el cliente, es el servidor el que hace todo el trabajo necesario para generar las paginas que se envían al explorador. Las secuencias de comandos quedan ocultas a los usuarios, estos solo reciben el resultado de la ejecución en formato HTML. Desaparece por tanto el problema de si el cliente puede o no ejecutar sentencias de comandos, el servidor Web solo envía el resultado en código HTML standard el cual puede ser interpretado por cualquier explorador. 21 Creando Sitios de Comercio Electrónico Como se usa ASP? Existen dos formas de incluir scripts en una página web: 1. Escribiéndolo entre las etiquetas <SCRIPT> y </SCRIPT>. En el atributo LANGUAGE podemos indicar en que lenguaje se está programando. Para distinguir el código de script que se ejecuta en el servidor del que se ejecuta en el cliente, se emplea el atributo RUNAT=”Server”: <SCRIPT LANGUAGE=”VBScript” RUNAT=”Server”> ‘instrucciones </SCRIPT> 2. Escribiéndolo entre los delimitadores <% y %>. <% instrucciones %> Ejemplo: <HEAD> <TITLE> Ejecutando un script VBScript en el Servidor </TITLE> </HEAD> <BODY> <H2>Usando VBScript </H2> <P> El dia de hoy es: <SCRIPT LANGUAGE=VBScript RUNAT=Server> Response.Write Date </SCRIPT> </BODY> Una forma mas practica es encerrar el codigo VBScript dentro <% y%>. <HEAD> <TITLE> Ejecutando un script VBScript en el Servidor </TITLE> </HEAD> <BODY> <H2>Usando VBScript </H2> <P> El dia de hoy es: <%Response.Write Date%> </BODY> 22 Creando Sitios de Comercio Electrónico Que necesito para ejecutar un programas en ASP? Para el desarrollo de nuestras paginas podemos usar el PWS de Windows 95/98, para la publicacion debemos usar el IIS en un Servidor Windows NT o 2000. Veamos ambas opciones en detalle: Personal Web Server (PWS) Instalacion • Windows 95: Primero debe actualizar Windows. Esta actualizacion está con el Service Pack 1. Esta actualizacion se llama Windows Socket 2 (WinSock2), el cual, puede bajar el WinSock2 de: http://www.microsoft.com/windows/downloads/bin/w95ws2setup.exe Esta actualizacion corrige los problemas con el protocolo TCP/IP de Windows 95. Luego se podrá instalar el PWS correctamente. • Windows 98: el PWS lo encontrará en el CD de instalacion de Windows 98 en la carpeta PWS que se encuentra dentro de la carpeta Add-Ons, de no hallarse puede obtener una copia de forma gratuita del sitio de descarga de www.Microsoft.com. Ejecución: 1. Una vez instalado, ejecute el PWS desde: Botón Inicio Programas Microsoft Personal Web Server Administrador personal de Web Le mostrará el panel Principal, donde se muestra el nombre de la pagina principal, en el ejemplo: http://Grap Asi mismo indica el nombre del directorio local, que en este caso es c:/InetPub/wwwroot Si en esta carpeta situa los archivos de su proyecto, entonces bastará que en el navegador anote: http://Grap y se iniciará (el archivo que de inicio al proyecto debe llamarse Default.asp o Default.htm) 23 Creando Sitios de Comercio Electrónico 2. Para registrar una carpeta distinta, vaya a a la opcion Avanzada 24 Creando Sitios de Comercio Electrónico 3. Luego haga click en Agregar. El dialogo Agregar directorio, asocie el directorio donde se encuentra su proyecto con un alias, en el ejemplo Capitulo3. 4. Para ejecutar el proyecto deberá anotar: http://Grap/Capitulo3 Siempre que el proyecto empiece con Default.asp o Default.htm, en su caso debera anotar: http://Grap/Capitulo3/ejemplo.asp 25 Creando Sitios de Comercio Electrónico Internet Information Server (IIS) ü ü ü ü Presente en las versiones 3.0/4.0/5.0 para Windows NT 4.0 o Windows 2000 IIS es el entorno de desarrollo y ejecución de las páginas ASP para servidores web de Microsoft. En Windows NT, IIS significaba Internet Information Server, en Windows 2000, IIS opera como un servicio, recibiendo el nombre de Internet Information Services. La ultima version de Internet Information Server fue 4.0, la reciente version 5.0 aparece como parte de la plataforma Windows 2000, la version 4.0 se sigue utilizando debido a su gran estabilidad y tiempo que se lleva funcionando y es utilizada en servidores NT. La ultima version de IIS 5.0 aparece formando parte de la nueva version de sistema operativo de Microsoft, Windows 2000, se encuentra completamente integrado con el sistema operativo y supone una mejora de IIS 4.0, no presenta un salto radical como de la version 3.0 a la 4.0. J En conclusion: Si vamos a rentar un servicio de hosting será suficiente con Windows 98 (por razones de costo de licencia). Concluida la labor de desarrollo, podemos colocar la aplicación en el espacio rentado en el servicio de hosting, via FTP o mediante la consola que el servicio de hosting nos provea. Si vamos a implementar un Servidor Web en nuestra oficina, conviene adquirir una licencia de Windows 2000 Advanced Server. A efectos de crear los programas ASP, será suficiente un simple editor de textos como el Bloc de notas de Windows, o adquirir un Editor mas practico como el EditPlus (www.editplus.com), por unos 30 dolares. 26 Creando Sitios de Comercio Electrónico Ahora si se puede adquiera MS-Visual InterDev (no crea que lo hará todo, de todos modos hay que echarle mano al codigo). Si se quiere acceder a una base de datos, se puede usar una conexión ODBC, una conexión OLE-DB, o una ruta física. Como plataforma de bases de datos, una simple base de datos hecha en Microsoft Access puede ser suficiente. Hay diversos recursos en el web que son gratuitos y nos ayudarán a crear soluciones muy profesionales, a lo largo del texto se irá indicando. 27 Creando Sitios de Comercio Electrónico Modelo de Objetos en ASP ASP consta de seis objetos, entre estos no existe una relacion jerarquica, sino una relacion logica, a continuacion se hace una descripcion general de cada una de ellas: El Objeto Response Este objeto se usará para enviar información a mostrar en el navegador o para redireccionar a un URL diferente. Ejemplo: Response.Write "Hola a todos” Esto imprimirá en el navegador "Hola a todos". También puede incluirse instrucciones HTML como para indicar el salto de linea. <HEAD> <TITLE> Un saludo </TITLE> </HEAD> <BODY> <H2>Hola a todos</H2> <% Response.Write ("Esta cadena <BR> ha sido generada en el <B>Servidor. </B>") %> </BODY> 28 Creando Sitios de Comercio Electrónico El Objeto Request El Objeto Request se usará para obtener la información incluida en un formulario HTML o a partir de los datos enviados mediante la instrucción QueryString. Un ejemplo del uso del Objeto Request es recuperar un valor de un formulario html. El nombre de la variable viene del dispositivo de entrada de html. <HEAD> <TITLE>Formulario entrada de datos </TITLE> </HEAD> <BODY> <FORM ACTION="VerDatos.asp" METHOD="POST"> <INPUT TYPE=Text NAME=txtNombre> <INPUT TYPE=Text NAME=txtDireccion> <INPUT TYPE="Submit" VALUE="Ver"> <INPUT TYPE="Reset" VALUE="Borrar"> </FORM> </BODY> Ahora haremos que el valor de "txtNombre" sea asignado a una variable: VerDatos.asp <HEAD> <TITLE> Visualizando resultados </TITLE> </HEAD> <BODY> <% strNom strDir = Request.Form ("txtNombre") = Request.Form ("txtDireccion") Response.Write ("Nombres: " & strNom & “<BR>” ) Response.Write ("Direccion: " & strDir ) %> </BODY> J Ahora podemos usar la variable, por ejemplo para almacenar el contenido en una Base de Datos, realizar alguna calculo, imprimirla como parte de un mensaje, etc. 29 Creando Sitios de Comercio Electrónico El Objeto Application El Objeto Application se usa para guardar la información que deba ser compartido simultáneamente por todos los usuarios de la aplicación. Un ejemplo de esto podria la cadena de conexión a una Base de Datos, el nombre de los directorios comunes, etc. Application("Impuesto") = 0.18 El Objeto Session El Objeto Session se usa para conservar datos durante una sesion. Puede almacenarse en un Objeto Session, el Id del usuario, y asi poder verificar sus datos y filtrar la informacion. Session("autorizado") = "sí" Cuando el usuario acceda a una pagina interior, para verificar si tiene permiso, solo tendriamos que acceder y verificar que el valor de la variable de sesion “autorizado” sea “si”. J Hay un Objeto Application para todos los usuarios, y un Objeto Session para cada usuario El Objeto Server El Objeto Server se usa para definir la cantidad máxima de tiempo que se esperará para realizar una escritura, crear instancias a componentes COM y poder usarlas en nuestras paginas ASP, etc. Por ejemplo podemos usar este objeto para crear una instancia del objeto de ADODB.Connection y establecer una conexión a una Base de Datos. Cn = Server.CreateObject ("ADODB.Connection") En el código anterior se define "Cn" como una instancia del objeto de ADODB.Connection. Luego se invocaria al método Open de este objeto, para pasarle los parámetros apropiados (el nombre de fuente de datos, id del usuario, la contraseña, etc) y establecer una conexión a una Base de Datos. 30 Creando Sitios de Comercio Electrónico Variables de Memoria Objetivos En este módulo se desarrollaran los siguientes puntos: ü ü ü ü Que es una variable de memoria? Subtipos Cómo verificar los subtipos Funciones de conversión 31 Creando Sitios de Comercio Electrónico Variables ü ü ü ü En ASP (VBScript) hay sólo un tipo de variable: Variant. Todas las variables son del tipo Variant. Cada variable puede tener un subtipo diferente. Hay 10 subtipos diferentes del tipo Variant (que se describe mas adelante). Cómo declarar las variables: Dim miVar ü ü Cuando se declara una variable no es necesario especificar el subtipo. Se puede convertir una variable a un subtipo especifico. Nombrando variables Al dar un nombre a una variable debe tener en cuenta: ü ü ü ü Debe empezar con un caracter alfabético No debe usarse nombres de comandos Debe ser único dentro del mismo alcance La longitud del nombre debe ser menor a 255 carácteres o menos Sugerencias para nombrar variables: ü ü Una convencion es usar un prefijo de 3 letras que indiquen el tipo de datos, como strNombre para las cadenas, intEdad para los enteros, etc. Puede usted definir un estilo propio usando prefijos que le guste y le sea practico. La idea de usar prefijos es facilitar la lectura de sus programas. Usando variables Simplemente asigne valores a las variables: Num1 = 3.4142 Num2 = FormatNumber(Num1, 2) strFrase = "Bienvenido..." strNombre = “Cesar” strSaludo = strFrase + strNombre K Una variable tiene por alcance el modulo donde fue definido. Es decir si define una variable en una función, sólo en esa función se podrá usar dicha variable. Para que la variable esté disponible a nivel de toda la página, debe definirla al principio y fuera de cualquier función o subprogramas. 32 Creando Sitios de Comercio Electrónico Cuando se asigna un valor numerico a una variable y usted no le ha asignado un subtipo especifico, sera considerada como cadena al intentar sumar. Así al realizar 2+2 y querer obtener 4, se conseguiría 22 (cancatenación), salvo sea una operación de multiplicación o división, donde automáticamente el valor será convertido a número. Suma.asp <HEAD> <TITLE>Intentando sumar numeros </TITLE> </HEAD> <BODY> <FORM ACTION="Neto.asp" METHOD="POST"> <INPUT TYPE=Text NAME=txtSueldo> <BR> <INPUT TYPE=Text NAME=txtBoni> <BR> <INPUT TYPE="Submit" VALUE="Calcular Neto"> </FORM> </BODY> Neto.asp <HEAD> <TITLE>Deberia sumar, pero concatena </TITLE> </HEAD> <BODY> <% strSueldo = Request.Form ("txtSueldo") strBoni = Request.Form ("txtBoni") Response.Write ("Neto: " & strSueldo+strBoni ) %> </BODY> Al ejecutar obtenemos: 33 Creando Sitios de Comercio Electrónico 34 Creando Sitios de Comercio Electrónico Veamos otro ejemplo, donde se calcula impuestos: <HEAD> <TITLE>Declarando Variables</TITLE> </HEAD> <BODY> <% Dim intMonto, intIGV, intTotal intMonto = 900 intIGV = 18 intTotal = intMonto - ((intMonto/100)*intIGV) %> <P>Monto inicial <% = intMonto %> soles</P> <B><P>El total es <% = intTotal %> soles</B></P> </BODY> 35 Creando Sitios de Comercio Electrónico Option Explicit Las variables en ASP no necesitan ser declaradas, sin embargo es un buen hábito declarar las variables que usemos, una forma de forzar su definición es mediante la orden Option Explicit, la cual debe insertarse al principio del código ASP de cada pagina. <%Option Explicit Dim a,b,c .. %> Documentando Es bueno documentar las secciones de codigo con cierta complejidad, nos sera de ayuda a nosotros (en el futuro), como a los otros desarrolladores del equipo de trabajo. Para ubicar un comentario use En VBScript: el apóstrofe, ( ' ) En JavaScript: la doble ( // ) En HTML: <!-- comentario --> Se puede comentar en cualquier lado. Arriba de la linea o al final. <HEAD> <TITLE>Declarando Variables</TITLE> </HEAD> <BODY> <% Dim intMonto, intIGV, intTotal ‘Declaramos variables intMonto = 900 ‘Monto en soles intIGV = 18 ‘Impuesto intTotal = intMonto - ((intMonto/100)*intIGV) %> <!—Imprimimos los resultados à <P>Monto inicial <% = intMonto %> soles</P> <B><P>El total es <% = intTotal %> soles</B></P> </BODY> 36 Creando Sitios de Comercio Electrónico La funcion TypeName Esta funcion devuelve el tipo de dato, de una variable o expresion. <HEAD> <TITLE>Usando TypeName</TITLE> </HEAD> <BODY> <%Dim dblPi, TipoPi, datFNac, TipoFNac, strFrase, TipoFrase dblPi = 3.142 TipoPi = TypeName(dblPi) datFNac = #11/08/02# TipoFNac = TypeName(datFNac) strFrase = "Esta es una frase" TipoFrase = TypeName(strfrase) Dim emp emptyVar = TypeName(emp) %> <P>dblPi devuelve <%= TipoPi %></P> <P>datToday devuelve <%= TipoFNac %></P> <P>strText devuelve <%= TipoFrase %></P> <P>emp devuelve <%= emptyVar %></P> </BODY> Al ejecutar obtenemos: 37 Creando Sitios de Comercio Electrónico Los Subtipos Veamos un resumen de los subtipos disponibles: Subtipo Byte Rango 0-255 Integer -32,768 a 32,767 Long -2,147,483,648 a 2,147,483,647 Single -3.402823E38 a-1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos Double -1.79769313486232E308 a -4.94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1.79769313486232E308 para valores positivos Currency -922,337,203,685,477.5808 a 922,337,203,685,477.5807 Date 1 de enero de 100 al 31 de diciembre de 9999 String De 0 a 2 mil millones caracteres Boolean True o False Objeto Cualquier referencia del Objeto Los subtipos mas usados son String, Integer, y Boolean. 38 Creando Sitios de Comercio Electrónico Funciones de conversión Las siguientes funciones se acostumbrar usar para convertir las variables a un subtipo específico: Funcion Cbool Cbyte Ccur Cdate CDbl Cint CSng CStr Convierte un dato al tipo: Boolean Byte Currency Date Double Int Sigle String Todas estas funciones toman como parámetro una variable, y devuelven el subtipo pedido que puede luego ser retenida en la misma variable, por ejemplo: var1 = CStr(var1) 39 Creando Sitios de Comercio Electrónico <HEAD> <TITLE>Definiendo SubTipos</TITLE> </HEAD> <BODY> <% Dim strPi, dblPi, intPi, strPi2 Dim TipoPi1, TipoPi2, TipoPi3, TipoPi4 strPi = "3.142" TipoPi1 = TypeName(strPi) dblPi = CDbl(strPi) TipoPi2 = TypeName(dblPi) intPi = CInt(dblPi) TipoPi3 = TypeName(intPi) strPi2 = CStr(intPi) TipoPi4 = TypeName(strPi2) %> <P>Pi <P>Pi <P>Pi <P>Pi </BODY> es es es es <%= <%= <%= <%= TipoPi1 TipoPi2 TipoPi3 TipoPi4 %> %> %> %> y y y y Pi Pi Pi Pi retorna retorna retorna retorna 40 <%= <%= <%= <%= strPi %> </P> dblPi %> </P> intPi %> </P> strPi2 %> </P> Creando Sitios de Comercio Electrónico Verificando los Subtipos Hay seis funciones diferentes que ayudarán a determinar si una variable corresponde a un Subtipo específico. IsArray(var) IsDate(var) IsEmpty(var) IsNull(var) IsNumeric(var) IsObject(var) Estas funciones retornan un valor lógico (verdadero o falso). Veamos el uso de cada uno de ellos: IsEmpty(var) Esta función indica si una variable está vacía. Una variable está vacía cuando la variable se ha creado, pero no se ha asignado aún un valor. Esto es distinto a una cadena vacía ("") o a un valor NULO. IsNull(var) Esta funcion determina si el contenido de una variable contiene un valor numol. Una variable es nula cuando se iguala a un valor nulo. IsNumeric(var) Devolverá verdadero si la variable contiene un valor numerico. Ejemplo: <HEAD> <TITLE>Averiguando si es un numero</TITLE> </HEAD> <BODY> <% miVar = "Hola" If IsNumeric(miVar) Then Response.Write ("la Variable es numérica".) Else Response.Write ("la Variable no es numérica".) End If %> </BODY> 41 Creando Sitios de Comercio Electrónico La función VarType() Otra manera de determinar el Subtipo es usando la funcion VarType () La sintaxis: VarType(var) La función anterior devolverá un número que representa los distintos subtipos. Subtipo vbEmpty vbNull vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString VbObject VbError VbBoolean vbVariant vbDataObject vbDecimal vbByte vbArray Valor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 8192 Descripcion no asignaron un valor Contiene valor nulo Entero Largo Single Double Currency Date String Object Error Boolean Variant Acceso de los Datos Decimal Byte Arreglo 42 Creando Sitios de Comercio Electrónico Analizando las cadenas Hay 7 funciones disponibles en ASP que le ayudara a analizar las cadenas: InStr(CadenaDondeBuscar, CadenaABuscar) La funcion retorna: 0 si la CadenaDondeBuscar es de longitud cero 0 si la CadenaABuscar no se encuentra en la CadenaDondeBuscar Nulo, Si la CadenaABuscar y la CadenaDondeBuscar es nulo. Ejemplo: str1 = "Hola" str2 = "ol" If InStr(str1,str2)> 0 Then Response.Write ("str1 contiene a str2") Else Response.Write ("str2 no está contenido en str1") End If Se imprimirá: str1 contiene a str2" Left(Cadena,num) Extrae caracteres por la izquierda strProd = "Active Server Page" Response.Write ("Los primeros seis carácteres son" & Left(strProd,6)) Se mostrará: Los primeros seis carácteres son Active 43 Creando Sitios de Comercio Electrónico Right(Cadena,num) Extrae caracteres por la derecha strProd = "Active Server Page" Response.Write("Las 4 últimas letras son"&Right(strProd,4)) Se mostrará: Las 4 últimas letras son Page Mid(Cadena, NumInicio[, NumCantidad]) Extrae cierta cantidad de caracteres (NumCantidad) de una cadena, a partir de la posicion NumInicio. Si se omite NumCantidad, extrae los caracteres desde la posicion NumInicio hasta el final de la cadena Ejemplo: strProd = "Active Server Page" Response.Write ( Mid(strProd, 1, 1) & Mid(strProd, 8, 1) & Mid(strProd,15,1)) El resultado: ASP Replace(Cadena, BuscarEsto, ReemplazaCon [, Inicio]) Reemplaza los caracteres (ReemplazaCon) buscados (BuscarEsto), dentro de una cadena desde la posicion indicada en Inicio. Si omite Inicio, la busqueda comienza desde el carácter inicial Ejemplo: str1 = "Cesar-Augusto-Bustamante-Gutierrez" Response.Write ("con espacios :" & Replace(str1," -","")) Se imprimirá: 44 Creando Sitios de Comercio Electrónico Con espacios: Cesar Augusto Bustamante Gutierrez Len(cadena) Devuelve la longitud de una cadena strProd = "Active Server Page" Response.Write (Left(strProd, Len(strProd)-5)) El resultado: Active Server 45 Creando Sitios de Comercio Electrónico Convirtiendo a mayúsculas y minúscula Las funciones: LCase() y UCase(), convierte una cadena a masyúsculas y minúsculas respectivamente. Ejemplo: miNomr= "CESAR" Response.Write(LCase(miNom)) Se imprimirá: Cesar miApe = "bustamante" Response.Write(UCase(Left(miNom,1)) & LCase(Mid(miNom,2))) Response.Write(UCase(Left(miApe,1)) & LCase(Mid(miApe,2))) Se imprimirá: Cesar Bustamante 46 Creando Sitios de Comercio Electrónico Buscando dentro de una cadena Instr(Comienzo, Cadena1, Cadena2, Comparacion) Devuelve la posicion de la ocurrencia de una cadena dentro de otra. El argumento Comienzo indica la posicion a partir de la cual se iniciará la búsqueda (por defecto desde el primer carácter). Cadena2 es el argumento que se va a buscar en la Cadena1. Comparacion, es opcional indica si la comparacion será: 0 vbBinaryCompare (por defecto) 1 vbTextCompare, realiza comparacion textual Por ejemplo: Response.Write( InStr(7, “Cesar Bustamante”, “m”) ) Se imprimirá: 12 InstrRev(Comienzo, Cadena1, Cadena2, Comparacion) Hace lo mismo que la funcion anterior, solo que en lugar de contar la ocurrencia por la izquierda lo efectuara contando por la derecha. 47 Creando Sitios de Comercio Electrónico Manipulando Fechas y Horas Definiendo el formato de Fecha y Hora Para establecer el formato de fecha y hora utilice la función: FormatDateTime (). FormatDateTime(Fecha[,Formato]) El parámetro del formato puede tener uno de los valores siguientes: 0 1 2 3 4 vbGeneralDate vbLongDate vbShortDate vbLongTime vbShortTime Formato normal. Formato de fecha largo Formato de fecha corta Hora en formato largo Hora en formato de 24 horas(el hh:mm) Ejemplo: dHoy = Now() Response.Write ("dHoy antes de estructurar: " & dHoy &" <BR>") Response.Write ("dHoy estructurado en 0 =" & FormatDateTime(dHoy,0) &" <BR>") Response.Write ("dHoy estructurado 1 =" & FormatDateTime(dHoy,1) &" <BR>") Response.Write ("dHoy estructurado 2 =" & FormatDateTime(dHoy,2) &" <BR>") Response.Write ("dHoy estructurado 3 =" & FormatDateTime(dHoy,3) &" <BR>") Response.Write ("dHoy estructurado 4 =" & FormatDateTime(dHoy,4) &" <BR>") El resultado: dHoy dHoy dHoy dHoy dHoy dHoy antes de estructurar: 26/02/2002 11:47:18 AM estructurado en 0 =26/02/2002 11:47:18 AM estructurado 1 =Martes 26 de Febrero de 2002 estructurado 2 =26/02/2002 estructurado 3 =11:47:18 AM estructurado 4 =11:47 J En los servidores con Windows en ingles, la funcion: <%=FormatDateTime(Now, vbLongDate)%> la fecha en inglés. Puede solucionar el problema, colocando antes: <% @LCID = 1034 %> 48 Creando Sitios de Comercio Electrónico Extrayendo partes de una fecha DatePart(Parte, Fecha [, PrimerDiaSemana, PrimerDiaAño]) Esta funcion devuelve una parte de una fecha PrimerDiaSemana, es un parámetro opcional devuelve uno de los valores siguientes: 1 2 3 4 5 6 7 - domingo (valor predefinido) lunes martes miércoles jueves viernes sábado El parámetro de Parte, puede tomar uno de los valores siguientes: yyyy - Año q - Cuarto m - Mes y - Día del año d - Día w - Día de la semana ww - Semana de año h - Hora n - Minuto s - Segundo El argumento PrimerDiaAño, es una valor opcional, especifica la primera semana del año, por defecto considera la primera semana del año. Los argumentos que se puede pasar son: Constante VbUseSystem Valor 0 VbFirstJan VbFirstFourDays 1 2 VbFirstFullWeek 3 Descripcion Utiliza el soporte de Lenguaje Nacional (NLS), señalada en la API Inicia la semana el 1 de enero (por defecto) Comienza con la semana que tiene al menos, cuatro dias en la primera semana. Comienza con la primera semana completa del año J Por lo general, se obvian los parametros opcionales: PrimerDiaSemana y PrimerDiaAño, por tanto se asume que el primer dia de la semana es domingo y el año comienza con el 1ro de enero 49 Creando Sitios de Comercio Electrónico Ejemplo: dHoy = Now() Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write Response.Write ("dHoy =" & dHoy &" <BR>") ("yyyy =" & DatePart ("yyyy", dHoy) &" <BR>") ("m =" & DatePart ("m", dHoy) &" <BR>") ("q =" & DatePart ("q", dHoy) &" <BR>") ("y =" & DatePart ("y", dHoy) &" <BR>") ("d =" & DatePart ("d", dHoy) &" <BR>") ("w =" & DatePart ("w", dHoy) &" <BR>") ("ww =" & DatePart ("ww", dHoy) &" <BR>") ("h =" & DatePart ("h", dHoy) &" <BR>") ("n =" & DatePart ("n", dHoy) &" <BR>") ("s =" & DatePart ("s", dHoy) &" <BR>") Al ejecutar se mostraria: dHoy =26/02/2002 11:42:43 AM yyyy =2002 m =2 q =1 y =57 d =26 w =3 ww =9 h =11 n =42 s =43 50 Creando Sitios de Comercio Electrónico Agregando valores a una Fecha u Hora DateAdd(Parte, Cantidad, Fecha) Con esta función puede agregar o substraer una cantidad a una fecha o tiempo. Cantidad, es el número que se quiere añadir o restar a una fecha (1, -4, 10, etc). Ejemplo: dHoy = Now() Response.Write ("dHoy Response.Write ("dHoy " <BR>") Response.Write ("dHoy dHoy) &" <BR>") Response.Write ("dHoy <BR>") Response.Write ("dHoy & " <BR>") Response.Write ("dHoy <BR>") Response.Write ("dHoy &" <BR>") =" & dHoy &" <BR>") más 10 días =" & DateAdd ("d", 10, dHoy) & menos 10 días =" & DateAdd ("d", -10, más 3 meses =" & DateAdd ("m", 3, dHoy) &" menos 3 meses =" & DateAdd ("m", -3, dHoy) más 2 horas =" & DateAdd ("h", 2, dHoy) &" menos 2 horas =" & DateAdd ("h", -2, dHoy) Al ejecutar se obtiene: dHoy dHoy dHoy dHoy dHoy dHoy dHoy =26/02/2002 11:44:59 AM más 10 días =08/03/2002 11:44:59 AM menos 10 días =16/02/2002 11:44:59 AM más 3 meses =26/05/2002 11:44:59 AM menos 3 meses =26/11/2001 11:44:59 AM más 2 horas =26/02/2002 01:44:59 PM menos 2 horas =26/02/2002 09:44:59 AM 51 Creando Sitios de Comercio Electrónico Calculando la cantidad de tiempo entre dos fechas DateDiff(Parte, Fecha1, Fecha 2 [, PrimerDiaSemana, PrimerDiaAño]) Esta función es útil para encontrar la cantidad de tiempo entre una fecha y otra. Parte es la cantidad de tiempo entre las dos fechas Ejemplo: var1 = #30/08/1970# var2 = Date Response.Write ("var1 =" & var1 &" <BR>") Response.Write ("var2 =" & var2 &" <BR>") Response.Write ("var1 al var2 es" & DateDiff ("d", var1, var2) &" días <BR>") Response.Write ("var1 al var2 es" & DateDiff ("m", var1, var2) &" meses <BR>") Response.Write ("var1 al var2 es" & DateDiff ("yyyy", var1, var2) &" el año(s) <BR>") Los resultados: var1 var2 var1 var1 var1 =30/08/1970 =26/02/2002 al var2 es 11503 días al var2 es 378 meses al var2 es 32 el año(s) 52 Creando Sitios de Comercio Electrónico Generando fechas validas DateSerial(año, mes, dia) Devuelve una fecha, a partir del año, mes y dia especificado. El Año puede ser un numero de 100 a 9999 El mes un numero de 1 a 12 El dia un numero de 1 a 31 Response.Write ( DateSerial(1970,08,10) ) Response.Write ( DateSerial(2002,02,31) ) Muestra como resultado: 10/08/1970 03/03/2002 Dado que en el mes de enero del 2002 hay solo 28 dias, y se ha especificado 31, la funcion adaptara los dias restantes al mes siguiente, es decir 3 de marzo. DateValue(Fecha) Devuelve una fecha, pasada como argumento en formato de fecha larga. Ejemplo: Response.Write ( DateValue(“10”,”Setiembre”,”2002”) ) Muestra como resultado: 10/09/2002 53 Creando Sitios de Comercio Electrónico Obteniendo las partes de una fecha Hay cinco funciones que le permitirá obtener una determinada parte de una fecha: Day(Fecha) Retorna el dia de una fecha, un número entre 1 y 31, Month(Fecha) Retorna el numero del mes de una fecha, un número entre 1 y 12, Year(Fecha) Retorna el numero del año de una fecha, un número como 2002 Weekday(Fecha) Retorna el numero del dia en la semana, un numero entre 1-7, dónde 1 es domingo MonthName(mes, abreviado) Devuelve el mes en forma abreviada o larga WeekDayName(DiaSemana, Abrevie, PrimerDia) DiaSemana, es un número que representa el día de la semana (1-7) Abrevie es un valor logico que indica si la función retornará el nombre abreviado o no PrimerDia, si es 1 corresponde a domingo Ejemplo: var1 = "30/08/1970" Response.Write ("var1 =" & Response.Write ("Para var1 Response.Write ("Para var1 Response.Write ("Para var1 Response.Write ("Para var1 WeekDay(var1, 1) &" <BR>") Response.Write ("Para var1 WeekDayName(WeekDay(var1), var1 &" <BR>") el día es" & Day(var1) &" <BR>") el mes es" & Month(var1) &" <BR>") el año es" & Year(var1) &" <BR>") el día de la semana es" & el nombre del dia es" & falso, 1) &" <BR>") 54 Creando Sitios de Comercio Electrónico Al ejecutar se obtiene: var1 Para Para Para Para Para =30/08/1970 var1 el día es var1 el mes es var1 el año es var1 el día de var1 el nombre 30 8 1970 la semana es 1 del dia es Domingo 55 Creando Sitios de Comercio Electrónico Obteniendo la hora, minuto, segundos Time() Devuelve la hora del sistema Hour(Hora) Devuelve la hora Minute(Hora) Devuelve los minutos Second(Hora) Retorna los segundos de la Hora especificada en el argumento. Timer() Devuelve el numero de segundos transcurridos desde las 12 horas (medianoche) TimeSerial(Horas, Minutos, Segundos) Genera un dato Hora, con las Horas, Minutos y Segundos especificados TimeValue(Hora) Devuelve un dato tipo fecha 56 Creando Sitios de Comercio Electrónico Ejemplo: <% Dim hora hora = Hour(Time()) 'Empezamos la comprobaciones de tiempo. If hora > 6 and hora < 13 then Response.Write ("<B>Buenos Dias</B>, son las: " ElseIf hora > 12 and hora < 20 then Response.Write ("<B>Buenas Tardes</B>, son las: ElseIf hora > 19 and hora < 24 then Response.Write ("<B>Buenas Noches</B>, son las: ElseIf hora >= 0 and hora < 7 then Response.Write ("<B>Buenas Noches</B>, son las: End If %> Al ejecutar obtenemos: Buenos Dias, son las: 12:00:11 PM 57 & Time()) "& Time()) "& Time()) "& Time()) Creando Sitios de Comercio Electrónico Generando números aleatorios Rnd() La funcion Rnd(), genera un número aleatorio entre 0 y 1. Requiere que en nuestro código pongamos la instrucción Randomize. <% Dim aleatorio Randomize ' Generamos un numero entre 1 y 10. Aleatorio = Int (Rnd*10) + 1 response.write "Numero aleatorio "& numero_azar %> 58 Creando Sitios de Comercio Electrónico Dando formato a un numero Numeros enteros FormatNumber(Numero[, Decimal, CeroInicial, Parentesis]) El primer parámetro es el único que se requiere, a menos que sea necesario indicar el numero de cifras decimales mediante el segundo parámetro. Con CeroInicial, puede indicar si se incluira cero, si el valor es fraccionario menor a uno. Mediante Parentesis, puede indicar si se encerrará con parentesis si el valor numerico es negativo Ejemplo: var1 = 5443.354 var2 = -877743.2345 Response.Write ("var1 con formato=" & FormatNumber(var1, 2, -1, -1) &" <BR>") Response.Write ("var2 con formato =" & FormatNumber(var2, 1, -1, -1)) Al ejecutar se obtiene: var1 con formato = 5,443.35 var2 con formato = (877,743.2) Valores monetarios FormatCurrency(Numero[, Decimal, CeroInicial, Parentesis]) Agrega al valor numerico el simbolo $ al inicio, la descripcion de los parametros son los mismos de la funcion antes citada. Ejemplo: var1 = 5443.354 var2 = -877743.2345 Response.Write ("var1 con formato =" & FormatCurrency(var1, 2, 1, -1) &" <BR>") Response.Write ("var2 con formato =" & FormatCurrency(var2, 1, 1, -1)) 59 Creando Sitios de Comercio Electrónico El resultado: var1 con formato = $5,443.35 var2 con formato = ($877,743.2) Porcentajes FormatPercent(Numero[, Decimal, CeroInicial, Parentesis]) Agrega el simbolo % a una cantidad numerica. Ejemplo: var1 = 5.4333 var2 = .823 Response.Write ("var1 con formato =" & FormatPercent(var1, 2, 1, -1) &" <BR>") Response.Write ("var2 con formato =" & FormatPercent(var2, 1, 1, -1)) Ejecutando se obtiene: var1 con formato = 543.33% var2 con formato = 82.3% 60 Creando Sitios de Comercio Electrónico Arreglos Un arreglo está compuesto por un conjunto de elementos, que tienen un nombre comun, pero un subindice distinto. Si es unidimensional, corresponde a la representacion de un vector y si es bidimensional a una matriz. El elemento inicial de un arreglo inicia en cero, es decir el primer elemento seria miArreglo(0). Los arreglos son dinámicos, es decir puede cambiarse el tamaño luego de haberse creado el arreglo. Dim miArray(1) miArray(0) = "Jose" miArray(1) = "Gustavo" ReDim Preserve miArray(2) miArray(2) = "Cesar" Incialmente de crea el arreglo miArray con dos elementos, luego se redimensiona a 3 elementos. Para crear el arreglo use: Dim miArray(20) Para redimensionar el arreglo use: ReDim Preserve miArray(3) 61 Creando Sitios de Comercio Electrónico Ejemplo: <HEAD> <TITLE>Usando arreglos</TITLE> </HEAD> <BODY> <% Dim aLista() Redim aLista(4) aLista(0) = "Pilar" aLista(1) = "Karen" aLista(2) = "Tamara" aLista(3) = "Gabriela" Response.Write "<P>" For n = 0 to 3 Response.Write aLista(n) & "<BR>" Next Response.Write "<P>Falta Claudia... </P>" Redim Preserve aLista(4) aLista(5) = "Claudia" Response.Write "<P>" For n = 0 to 4 Response.Write aLista(n) & "<BR>" Next %> </BODY> NOTA: Si es un arreglo pequeño, puede crealo de la forma siguiente: Dim aColores aColores = Array("Azul", "Verde", "Rojo") 62 Creando Sitios de Comercio Electrónico Funciones para el tratamiento de arreglos LBound(Arreglo [,Dimension]) Esta función retorna el menor valor contenido en uno de los elementos de un arreglo. Dimension (por defecto 1), es un parámetro opcional, especifica la dimensión del arreglo donde se quiere encontrar el más bajo valor. UBound(ArrayName [, ArrayDimension]) Esta función retorna el mayor valor contenido en uno de los elementos de un arreglo. Dimension (por defecto 1), es un parámetro opcional, especifica la dimensión del arreglo donde se quiere encontrar el más alto valor. Split(CadenaElementos[, Delimitador, Cantidad]) CadenaElementos, es una cadena que contiene una lista de elementos Delimitador, es el carácter usado para separar los elementos en CadenaElementos. Cantidad, es el número de elementos que sea convertir a arreglo. Ejemplo: Dim miString, miArray, miString = "naranjas,manzanas,platanos" miArray = Split(miString,",") Al ejecutar se obtiene, un arreglo con 3 elementos. 63 Creando Sitios de Comercio Electrónico Los arreglos multi-dimensionales Para crear un arreglo multi-dimensional simplemente especifique el número de columnas y filas. miArray(2,3) tendría 2 columnas y 3 filas, esto generaria un arreglo con 3 filas (de 0 a 2) con 4 columnas (de 0 a 3), es decir con 12 elemntos (3x4) 0,0 0,1 0,2 0,3 1,0 1,1 1,2 1,3 2,0 2,1 2,2 2,3 Ejemplo: Dim miArray(2,3) miArray(0,0) = "electrodomesticos" miArray(1,0) = "lustradora" miArray(2,0) = "10" miArray(0,1) = "electrodomesticos " miArray(1,1) = "tostador" miArray(2,1) = "12" miArray(0,2) = "perfumes" miArray(1,2) = "Carolina Herrera" miArray(2,2) = "40" miArray(0,3) = "perfumes" miArray(1,3) = "Aqua Brava" miArray(2,3) = "23" Response.Write (" <Table border=2 >") Response.Write (" <tr><td>Fila </td><td>linea</td>") Response.Write (" <td>Item</td><td>Cantidad</td></tr>") For i = 0 To UBound(miArray, 2) Response.Write (" <tr><td> #" & i &" </td>") Response.Write (" <td>" & miArray(0,i) &" </td>") Response.Write (" <td>" & miArray(1,i) &" </td>") Response.Write (" <td>" & miArray(2,i) &" </td></tr>") Next Response.Write (" </table>") Al ejecutar se obtiene: Fila 0 1 2 3 Linea electrodomesticos electrodomesticos electrodomesticos electrodomesticos Item Cantidad lustradora 10 tostador 12 Carolina Herrera40 Aqua Brava 23 64 Creando Sitios de Comercio Electrónico Instrucciones condicionales Instrucción condicional simple Esta instrucción presenta dos formas: La forma simple, indica que el Bloque de instrucciones se ha de ejecutar si la condicion es Verdadera If (condición) Then ' Bloque de instrucciones End If La otra forma, indica que uno de los Bloques de instrucciones se ha de ejecutar dependiendo de la validez de la condicion. If (condición) Then ' Bloque de instrucciones 1 Else ' Bloque de instrucciones 2 End If Una tercera forma indica, el uso de ElseIf a fin de discriminar otras posibilidades: If (condición) Then ' Bloque de instrucciones ElseIf (condición) Then ' Bloque de instrucciones ElseIf (condición) Then ' Bloque de instrucciones ElseIf (condición) Then ' Bloque de instrucciones End If 1 2 3 4 Ejemplo: If Num1> Num2 Then Response.Write ("Num1 es mayor que num2...") Else Response.Write ("Num2 es mayor que num1...") End If 65 Creando Sitios de Comercio Electrónico Tambien puede anidarse instrucciones, una dentro de otra, por ejemplo: If Num1> Num2 Then If num3> num1 Then Response.Write ("Num3 es mayor que num1 y num2...") Else Response.Write ("Num3 es menor que num1...") End If Else If num3> num2 Then Response.Write ("Num3 es mayor que num2 y num1...") Else Response.Write ("Num3 es menor que num2...") End If End If J Se sugiere evitar ordenes If anidades, en su lugar procure usar la orden condicional Select Case. En el caso de anidamiento, no olvide cerrar correctamente cada orden If. Ejemplo: Mediante el ejemplo siguiente se toma como ingreso el nombre y contraseña de un usuario, en base a ello se realiza la validación. <HEAD> </HEAD> <BODY> <FORM ACTION="Verificar.asp" METHOD="post"> Ingrese su login:<BR> <INPUT TYPE="text" NAME="Login"><P> Ingrese su contraseña:<BR> <INPUT TYPE="text" NAME="Clave"> <BR> <BR> <INPUT TYPE="submit"> </FORM> </BODY> 66 Creando Sitios de Comercio Electrónico El contenido de Verificar.asp, sería: <HEAD> <TITLE>Verificando la contraseña </TITLE> </HEAD> <BODY> <% strLogin = Request.Form("Login") strClave = Request.Form("Clave") Response.Write "<H1>Verificando al usuario </H1>" If strLogin = "Gustavo" and strClave = “gato” Then Response.Write "Bienvenido Gustavo" Else If strLogin = "Cesar" and strClave = “coyote” Then Response.Write "Bienvenido Cesar" Else Response.Write "Usted es un usuario normal" End If End If %> </BODY> 67 Creando Sitios de Comercio Electrónico Instrucción condicional múltiple Esta orden resulta util, cuando se presenta mas de dos alternativas, para una determinada condicion. Es la solucion cuando se presenta ordenes If anidadas. Por ejemplo la secuencia: If miVar = "1" Then Response.Write ("miVar ElseIf miVar = "2" Then Response.Write ("miVar ElseIf miVar = "3" Then Response.Write ("miVar ElseIf miVar = "4" Then Response.Write ("miVar End If =1") =2") =3") =4") Podria sustituirse por: Select Case miVar Case "1" Response.Write Case "2" Response.Write Case "3" Response.Write Case "4" Response.Write Case Else Response.Write End Select ("miVar =1") ("miVar =2") ("miVar =3") ("miVar =4") ("es mas que cuatro...") Ejemplo: Veamos otra forma de envio de datos, al mismo que vemos la solucion usando la orden condicional multiple. 68 Creando Sitios de Comercio Electrónico <HEAD> </HEAD> <BODY> <H1>Registro</H1> <FORM ACTION="DiaSeleccionado.asp" METHOD="post"> Elija un dia<BR> <SELECT NAME="Dia"> <OPTION VALUE="Lu">Lunes</OPTION> <OPTION VALUE="Ma">Martes</OPTION> <OPTION VALUE="Mi">Miercoles</OPTION> <OPTION VALUE="Ju">Jueves</OPTION> <OPTION VALUE="Vi">Viernes</OPTION> <OPTION VALUE="Sa">Sabado</OPTION> <OPTION VALUE="Do">Domingo</OPTION> </SELECT> <BR><BR> <INPUT TYPE="submit"> <INPUT TYPE="reset"> </FORM> </BODY> DiaSeleccionado.asp <HEAD> </HEAD> <BODY> <% varMes = Request.Form("Mes") Select Case varMes Case "Lu" Response.Write "Ha seleccionado Lunes" Case "Ma" Response.Write " Ha seleccionado Martes" Case "Mi" Response.Write " Ha seleccionado Miercoles" Case "Ju" Response.Write " Ha seleccionado Jueves" Case "Vi" Response.Write " Ha seleccionado Viernes" Case "Sa" Response.Write " Ha seleccionado Sabado" Case "Do" Response.Write " Ha seleccionado Domingo" End Select %> </BODY> 69 Creando Sitios de Comercio Electrónico Instrucción repetitiva Do… Loop Esta orden repite un bloque de instrucciones cierta cantidad de veces dependiendo de la validez de una condicion. La orden puede presentar dos formas: La primera forma, evalua primero la condicion, de ser valida procedera a ejecutar el bloque de instrucciones, en su caso continuara con las instrucciones siguientes a dicha orden. Do {While <Condición> | Until <Condición>} ' Bloque de instrucciones Loop La otra forma ejecuta el bloque de instrucciones al menos una vez, su posterior ejecucion dependera de la validez de la condicion: Do ' Bloque de instrucciones Loop {While <Condición> | Until <Condición>} Ejemplo: i = 0 Do While i <5 Response.Write ("i =" & i &" <BR>") i = i + 1 Loop El resultado sería: i=0 i=1 i=2 i=3 i=4 70 Creando Sitios de Comercio Electrónico Ejemplo: Un simple calculo de los dias transcurridos a la fecha: <HEAD> </HEAD> <BODY> <% varInicio = 1 varDiaHoy = Day(Now()) varNum = 0 Do While varInicio <= varDiaHoy varNum = varNum + 1 Loop Response.Write "Total dias " & varNum & “Transcurridos” %> </BODY> 71 Creando Sitios de Comercio Electrónico Instrucción repetitiva While… Wend Muy similar a la instrucción repetitiva DO. Ejecuta un grupo de instruccioes mientras la condición sea verdadera. While { Condición} ' Bloque de instrucciones Wend Esta instrucción resulta muy practica cuando se desea recorrer el contenido de una tabla: While not rs.EOF Response.Write ("Nombre =" & rs("NomCliente") &"," & rs("ApeCliente") &" <BR>") rs.MoveNext Wend La instrucción repetitiva For… Next Esta orden repite un bloque de instrucciones una cantidad especifica de veces For var = Inicio To Fin Bloque de instrucciones Next Ejemplo: For i = 1 To 7 Response.Write(i = & i &" <BR>") Next Tambien podemos usar la forma: For each x in Request.ServerVariables Response.Write(x &" =" & Request.ServerVariables(x) &" <BR>") Next Para ver por ejemplo el estado de las variables del servidor 72 Creando Sitios de Comercio Electrónico <HEAD> </HEAD> <BODY> <FORM ACTION=Calculos.asp METHOD = post> <P>Fecha inicial: (mm/dd/yy) <BR> <INPUT TYPE=text NAME="FNac"> <P>Confirme la fecha actual<BR> <INPUT TYPE=text NAME="FHoy"><BR> <INPUT TYPE=submit> <INPUT TYPE=reset> </FORM> </BODY> Calculos.asp <HEAD> </HEAD> <BODY> <% varFNac=Request.Form("FNac") varFHoy=Request.Form("FHoy") varFNac = CDate(varFNac) varFHoy = CDate(varFHoy) varDias=(varFNac-varFHoy) varTotal = 0 For x = 0 to varDias varTotal = varTotal + 20 Next Response.Write "Total" & varTotal %> </BODY> J En siguiente edición todo lo referido al manejo de tablas, te agradeceremos remitirnos tus inquietudes, aportarnos con ideas y por que no soluciones. De ti depende que este libro mejore en contenido. www.LibrosDigitales.NET 73 Creando Sitios de Comercio Electrónico Próxima Entrega Edición 1.1 Dentro de una semana Prohibida la reproducción total o parcial Sin nuestro consentimiento Derechos de copia reservados www.LibrosDigitales.NET 74