You are on page 1of 31

Bases de datos en la Web

Autor: Alejandro Garca

Introduccin o Presentacin o Creando las BD o Obtener un DSN o Instalando Personal Web Server y Sambar Server o Instalando Perl, JSP y1 PHP3 o El directorio cgi-bin o Creando las aplicaciones: Ejemplos

Introduccin
Presentacin
En estas pginas vamos a intentar dar una pequea introduccin sobre como acceder desde nuestra pgina web a una base de datos utilizando diferentes tecnologas, (todas ellas para servidores en Windows 9x, aunque algunas tambin para Unix, Linux...) para que cada uno compare y elija la que mas le guste. Mi Nombre es Alejandro Garca, soy estudiante de Ingeniera Tcnica de Informtica de Gestin por la Universidad de Granada (Spain). Este tutorial nace debido a la realizacin de una practica de la asignatura Sistemas de Informacin Empresarial en el mes de Abril del ao 2000. Espero que le sirva a de ayuda. Cualquier duda o comentario por favor envemelo a Mail me . Gracias.

Creando las BD
El primer paso es crear las bases de datos que vamos a usar en nuestros ejemplos, lo cual no es muy difcil ni para usuarios poco avanzados. Vamos a probar los ejemplos usando dos bases de datos relacionales en distinto formato para demostrar que no influye el tipo de servidor de bases de datos que usemos, si los conectamos mediante el ODBC de Windows 9x. Las dos base de datos tendrn las mismas tablas que son las siguientes: Tabla de clientes:

Nombre de la fila Tipo de la fila Nombre de la fila Tipo de la fila dni Texto (8), Primary Key Nombre Texto (20) Apellido1 Texto (20) Apellido2 Texto (20)
Tabla de proveedores:

Nombre de la fila Tipo de la fila Nombre de la fila Tipo de la fila cif Texto (9), Primary Key Empresa Texto (20)

NombreContacto Texto (20) Telfono Numrico

Obtener un DSN
DSN: Data Source Name. Es un identificador nico de la base de datos en el sistema. Al definir un
DSN hay que especificar tanto la ruta completa del archivo de base de datos como el controlador adecuado a la misma (MSAccess, FoxPro, DBase etc). Una vez creado, es todo lo que necesitamos saber acerca de la base de datos para poder abrirla, consultarla, modificarla, etc. Una vez que tenga preparado su archivo de bases de datos (por ejemplo ejemplo1.mdb) colquelo en el directorio Data de su dominio. Despus vaya al panel de control de su dominio y obtenga un DSN para dicho archivo. El DSN ser el identificador con el que podr conectar con su base de datos. Esto se hace as: Abrimos Panel de Control y abrimos ODBC. El icono debe ser algo parecido a esto:

Cuando ests dentro veras una pantalla como esta:

Selecciona la pestaa System DSN. Aparecer vaca si no se ha definido antes ningn otro DNS de sistema. Pulsa el botn Add . Veras una ventana parecida a la de la imagen:

Escoge el driver para Microsoft Access ( en este caso ) y pulsa el botn finish. Ahora debers ver la siguiente ventana:

En la etiqueta Data Source Name, introduce el nombre con el cual llamaras a tu base de datos. Para el ejemplo debes introducir Ejemplo1. Finalmente, pulsa el botn Select y busca el nombre y path completo de la base de datos que habamos creado (Data/Ejemplo1.mdb). Y esto es todo. Ya esta accesible tu base de datos mediante ODBC.

Instalando Personal Web Server y Sambar Server


Personal Web Server es uno de los servidores WEB de Microsoft. Viene en el CD de Windows 98 aunque es necesario intalarlo despus de la instalacin de Windows. Para instalarlo hacemos: Inserte el disco compacto de Windows 98 en su unidad. Haga clic en Inicio y despus haga clic en Ejecutar. En Abrir, escriba: x:\add-ons\pws\setup.exe (o instalar.exe) donde x es la letra de la unidad

de CD-ROM. Haga clic en Aceptar. Siga las instrucciones de Personal Web Server Setup.

Si tienes suerte y todo va bien ya tienes instalado el PWS y al reiniciar el equipo tendrs en la barra de tareas el icono de PWS. Si lo pulsas dos veces vers una pantalla parecida a esta:

Pulsando en Avanzada crear tus directorios y darles los permisos de ejecucin para poder guardar en el los scripts o bien utilizar el directorio que l crea por defecto. Tambin vamos a instalar otro servidor Web para que veis como hacerlo y las diferencias entre uno y otro.Este otro servidor es el Sambar web Server que podis bajaros gratuitamente desde http://www.winfiles.com/ .Personalmente me gusta ms que PWS porque es ms fcil de configurar y de instalar pero lo malo es que no ejecuta los script ASP ( por lo menos la version que yo tengo ). Una vez que tengis el fichero .zip de Sambar server lo descomprimes en un directorio tmp y ejecutas el setup.exe, Ya est , nada ms que hacer, aunque tiene muchas ms posibilidades pero para nuestros propsitos no nos interesa en este momento. Si lo lanzas debes ver algo parecido a esto:

Instalando Perl, JSP y1 PHP3


Otro paso arduo para nuestro propsito es instalar los lenguajes que vamos a utilizar y configurar nuestro servidor para que los sepa usar. Para ASP no hay problema porque como es de Microsoft y el servidor tambien, no tenemos que hacer nada.Para C tampoco porque nuestro CGI en C va a ser un ejecutable compilado y no necesitamos el compilador en el servidor. La cosa se complica un poco ms para los demas lenguajes. PHP3 PASO1: descomprime el fichero php-3_x_x-win32.zip que te has bajado de http://www.php.net/ en un directorio. Por ejemplo "C:\PHP3\". PASO 2: Copia el fichero 'php3.ini.dist' a tu directorio %WINDOWS% y cmbiale el nombre por el de 'php3.ini' PASO 3:Ahora edita el fichero php3.ini y busca 'extension_dir' que debes cambiarlo para que apunte al directorio donde has descomprimido la instalacin de php3. Elige los mdulos ( dll ) que quieres cargar cuando php se ejecute. Esto de hace quitando el guin de comentario( ' ) que tienen las lneas del estilo "extension=php3_*.dll". Para nuestro ejemplo basta quitar el comentario de la lnea "extension=php3_odbc.dll". Si quieres ms informacin visita la FAQ en http://www.php.net/ Todava no hemos acabado. Busca la linea browscap y debe ser igual a "browscap = c:\WINDOWS\SYSTEM\inetsrv\browscap.ini ". PASO 4: El ltimo. Edita el registro de sistema ( Hazle una copia de seguridad antes de empezar por si las moscas). Busca

HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/W3Svc/Parameters/Script Map

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.

Ve al men Edicin y pulsa Nuevo->Valor de la cadena. En Nombre debes poner las extensiones asociadas a tus scripts php. Por ejemplo '.php3' Haciendo Doble click en el nuevo valor introduce el path del ejecutable php.exe, por ejemplo: 'c:\php3\php.exe %s %s'. Los '%s %s son muy importantes, si ellos php no funcionaria. Repite 1)-4) para cada extensin que quieras asociar con PHP.Los ms comunes son .php3 y .phtml Ve a HKEY_CLASSES_ROOT Ve al men Edicin y pulsa Nuevo->Clave El nombre de la clave es la extensin que quieres asociar con php ( '.php3' ) Pulsa la nueva clave y en el panel derecho haz doble click en el valor por defecto y escribe 'phpfile' Repite 5) - 8) para cada extensin que quieras asociar con php. Ve al men Edicin y pulsa Nuevo->Clave. El nombre de la clave debe ser 'phpfile' Pulsa la nueva clave y en el panel derecho haz doble click en el valor por defecto y escribe 'PHP Script' Ahora crea una nueva clave hija de 'phpfile' y llmala 'Shell' Ahora crea una nueva clave hija de 'Shell' y llmala 'open' Ahora crea una nueva clave hija de 'open' y llmala 'command' Pulsa la clave command y en el panel derecho haz doble click en el valor por defecto y escribe:'c:\php3\php.exe -q %1' Sal de Regedit

Si todo ha ido bien ya tienes tu PWS funcionando con PHP3. PERL No es tan difcil como PHP3. Lo primero que debes hacer es bajarte la versin de Perl 5 de http://www.perl.com/ o desde http://www.shareware.com/ y descomprime el .zip que te has bajado en un directorio de tu servidor. Por ejemplo c:\perl5. Para terminar slo debes aadir el directorio bin de perl a tu variable PATH dentro del autoexec.bat JSP Debes instalar el JDK que puedes encontrar en http://www.javasoft.com/ , yo te recomiendo la versin 1.2 o posterior. Esto es fcil, slo tienes que descomprimirla y ejecutar el programa de instalacin y aadir la variable CLASSPATH a tu autoexec.bat. Esta debe valer algo parecido a :

SET CLASSPATH=C:\JDK1.2\LIB\TOOLS.ZIP

Nosotros vamos a usar JSP que es algo parecido a ASP. Puedes buscarlo en http://www.javasoft.com/products/jdbc/index.html. Te bajas el JSWDK ( Java Server Development Kit for Windows ) junto con la documentacin. Se instala descomprimiendo el .zip en el directorio JDK1.2 Cuando hayas instalado el JSWDK tienes que configurar el servidor que trae para poder ejecutar los JSP.( Casi no hay que tocarlo funciona por defecto en el puerto 8080 ). Lo que s tienes que hacer es aadir otra variable de entorno a tu autoexec.bat algo parecido a " Set JAVA_HOME=c:\JDK1.2" Para Lanzar el servidor tienes que llamar a desde una ventana de MS-DOS a la macro Startserver.com. Una ayuda:esta macro define cantidad de variables de entorno y lo mas seguro es que no te funcione. ( Da un error de " sin espacio de entorno "). Solucin: imprime el fichero startserver.bat y ve definiendo una a una las variables de entorno y luego ejecuta start java .... tal y como dice la macro. Si todo va bien se abrir otra ventana de ms-dos donde estar corriendo el nuevo servidor. Se accede a l con una llamada del tipo http://127.1.1.1:8080

El directorio cgi-bin
Sea cual sea nuestro servidor necesitamos que los script y los cgi estn en un directorio que tenga permiso de ejecucin. Lo ms frecuente es que este directorio se llame cgi-bin.(otros como Apache o Sambar no permiten otro directorio que no sea cgi-bin). PWS crea el directorio /SCRIPTS. Yo particularmente, he creado en mi servidor varios directorios ( uno para cada tecnologa ) y les he dado permiso de ejecucin. Esto se hace con el PWS en la opcin AVANZADAS. Debes ver algo como:

Creando las aplicaciones: Ejemplos


Por ltimo ya estamos preparados para comenzar a programar nuestras aplicaciones. Todo debe funcionar si hemos seguido bien los pasos anteriores. Ahora veamos cmo se conecta con la base de datos y como se trabaja con ella desde las distintas tecnologas que estamos estudiando: ASP PERL PHP3 JSP Esto es lo que haremos en los prximos captulos.

Bases de datos en la Web con ASP


Autor: Alejandro Garca

ASP

o o o

Introduccin Terminologa Los objetos componentes de ADO

o o

Connection Propiedades y mtodos ms relevantes Recordset Propiedades y mtodos ms importantes Command Nuestro Ejemplo

ASP
Introduccin
El sistema de acceso a bases datos a travs de la web utilizando la tecnologa Microsoft, se denomina ADO (ActiveX Data Objects). Aqu se expone una introduccin comprensiva en castellano. Para ver una completa referencia acerca de todo el sistema de bases de datos de Microsoft, consulte en www.microsoft.com/data. La referencia completa de mtodos y propiedades de los objetos est tambin en la biblioteca online de MSDN (msdn.microsoft.com). Ah ver mltiples ejemplos en los que comprobar la flexibilidad del sistema ADO (al mismo resultado se puede llegar por vas distintas). Por motivos pedaggicos, aqu se expone una utilizacin ms rgida.

Terminologa
ADO: ActiveX Data Objects. Es una familia de objetos componentes dedicados a facilitar el
acceso a bases de datos. El ProgID de cada uno de ellos se forma combinando ADODB. con el nombre del objeto (por ejemplo ADODB.Recordset, ADODB.Connection, ADODB.Command, etc). Por tanto, en VBScript los objetos se crean con sentencias tipo Set mirst = Server.CreateObject("ADODB.Recordset"), etc

Los objetos componentes de ADO


Todo el sistema ADO se basa en una serie de objetos cuyas propiedades y mtodos hay que utilizar. Estos objetos estn registrados en el sistema, sin embargo no estn predefinidos. Es decir, hay que crearlos utilizando Server.CreateObject. Como valores de muchas de las propiedades de los objetos ADO se utilizan constantes, como adOpenForwardOnly, adOpenKeySet, etc. Todas estas constantes empiezan por ad y estn definidas en un archivo llamado adovbs.inc para Visual Basic script y adojavas.inc para Javascript. Estos archivos los podr encontrar en su instalacin local de ADO. Para incluirlos en las pginas ASP es necesario utilizar un cdigo de este tipo al comienzo de cada pgina ASP que use las constantes:

<!--#INCLUDE FILE="adovbs.inc"-->

Para que esta inclusin funcione el archivo adovbs.inc debe estar en el mismo directorio que la pgina ASP que lo incluye.

Connection
Representa una conexin a una base de datos. Este es el primer objeto que debemos crear para poder conectar con la base de datos. Tanto el objeto ADO que nos permite acceder a los datos (Recordset) como el que nos permite realizar consultas (Command) disponen de una propiedad llamada ActiveConnection que es una referencia al objeto connection que enlaza con la base de datos a la que queremos atacar. De ah que el primer paso sea crear la conexin.

Propiedades y mtodos ms relevantes


ConnectionString Es una cadena de caracteres con la informacin necesaria para establecer una conexin con la fuente de datos. Por tanto, es la propiedad bsica de este objeto. Aunque hay hasta 7 argumentos distintos que se pueden suministrar en esta cadena, los bsicos son el DSN que identifica al archivo de base de datos y el login y password si existen. Los argumentos se separan con punto y coma. Ejemplo: "DSN=midsn; UID=milogin; PWD=micontrasea" Open Abre la conexin con la base de datos. Si antes hemos asignado la propiedad ConnectionString, este mtodo no necesita parmetros. Close Cierra la conexin con la base de datos.

Ejemplo de uso <%

Set miconexion = Server.CreateObject("ADODB.Connection") miconexion.ConnectionString = "DSN=midsn" miconexion.Open ' ....... '........ miconexion.Close %>

Recordset
Este es el objeto ADO ms importante ya que es con el que accederemos directamente a los datos de las tablas, tanto para leerlos como para modificarlos. Un objeto Recordset representa una tabla, que puede ser una tabla fsica de la base de datos o bien una obtenida mediante una operacin como un filtrado o sentencia SQL. En cualquier caso, el objeto representa a la tabla con todos sus registros, aunque slo uno de ellos es el activo. El registro activo es en el que podemos leer o modificar los valores de los campos. Tambin se le llama cursor.

Propiedades y mtodos ms importantes


Para una mejor compresin y puesto que son numerosos, los hemos dividido por categoras de utilidad. Propiedades que hacen referencia al origen de los datos: Estas dos propiedades deben ser asignadas a todo Recordset, pues le dicen la base de datos y la tabla de la que obtener sus datos. ActiveConnection Como se ha comentado antes a esta propiedad se le debe asignar un objeto connection que se haya creado previamente. Indicar al Recordset la base de datos en la que buscar su tabla. Source Indica al objeto Recordset la tabla a la que representar. A la propiedad Source se le asigna normalmente una cadena de caracteres con el nombre de la tabla. Sin embargo, tambin es posible asignarle una sentencia SQL y entonces el objeto Recordset referenciar al resultado de aplicar dicha sentencia. LockType Indica el tipo de bloqueo que se realiza sobre la base de datos. Por defecto toma el valor adLockReadOnly que como su nombre indica slo sirve para leer datos. Si deseamos editar o aadir registros, tendremos que cambiar esta propiedad por otro valor. El ms usado es

adLockOptimistic que permite editar la base de datos o aadir registros realizando un bloqueo
optimista (slo cuando sea estrictamente necesario). CursorType El tipo de cursor que se utiliza para recorrer los registros de un recordset. Por defecto toma el valor adOpenForwardOnly que como su nombre indica slo permite moverse hacia adelante. Por ello si queremos utilizar libremente todos los mtodos de movimiento de un recordset (MoveFirst, MoveTo, MoveNext, MovePrevious, etc) tendremos que cambiar el cursor por uno ms potente. Esto puede hacerse asignando a esta propiedad el valor adOpenKeyset Ejemplo Aqu creamos en primer lugar un objeto Connection y luego un Recordset al que se asigna dicho objeto. Este ejemplo es una especie de esqueleto para los dems que sigan: Se supone que debe hacerse algo parecido a esto para abrir el Recordset. Es decir, en los restantes ejemplos escribimos slo el cdigo que ira en el lugar de los puntos suspensivos de este script (NOTA: Recuerde que si hay que aadir registros es necesario cambiar el LockType antes de inicializar el recordset).

<% Set miconexion = Server.CreateObject("ADODB.Connection") miconexion.ConnectionString = "DSN=midsn" miconexion.Open Set mirecordset = Server.CreateObject("ADODB.Recordset") mirecordset.ActiveConnection = miconexion mirecordset.Source = "Clientes" mirecordset.Open ........ ' Operaciones con los datos ........' de la tabla Clientes. mirecordset.Close miconexion.Close %>

Propiedades que hacen referencia al nmero de registros: RecordCount Nmero de registros de la tabla a la que representa el objeto recordset. Ejemplo:

<h3> Tenemos <%= rstClientes.RecordCount%> clientes registrados en nuestra base de datos </h3>

EOF Acrnimo de End Of File. Vale TRUE si estamos en el ltimo registro y FALSE si no. Se usa mucho como condicin en bucles while, los cuales se ejecutan hasta llegar al ltimo registro. BOF Acrnimo de Begin Of File. Vale TRUE si estamos en el primer registro y FALSE si no. Mtodos para mover el cursor (registro activo): Estos mtodos pueden funcionar todos o no dependiendo del tipo de cursor creado. El tipo de cursor se asigna en la propiedad CursorType. Por ejemplo, para asignar un cursor adOpenKeySet que permita moverse hacia adelante o hacia atrs:

<% Set miconexion = Server.CreateObject("ADODB.Connection") miconexion.ConnectionString = "DSN=midsn" miconexion.Open Set mirecordset = Server.CreateObject("ADODB.Recordset") mirecordset.ActiveConnection = miconexion mirecordset.Source = "Clientes" mirecordset.CursorType = adOpenKeySet mirecordset.Open

........ ' Operaciones con los datos ........' de la tabla Clientes. mirecordset.Close miconexion.Close %>
Ntese que la asignacin de propiedades al recordset debe hacerse antes de invocar el mtodo open que es el que lo inicializa con registros. MoveFirst Mueve el cursor al primer registro de la tabla MoveLast Mueve el cursor al ltimo registro de la tabla MoveNext Mueve el cursor al siguiente registro. MovePrevious Mueve el cursor al registro anterior. Ejemplo de un bucle que recorre todos los registros de una tabla

<% mirecordset.MoveFirst do while not mirecordset.EOF ..... ' Tratamiento ..... ' de datos mirecordset.MoveNext loop %> mirecordset("Domicilio")

Lectura y modificacin de los campos del registro activo La sintaxis para acceder a los datos de un campo del registro activo de un recordset es: Esto se usa tanto para leer como asignar valores. En nuestro ejemplo, el objeto mirecordset representa a una tabla uno de cuyos campos tiene el nombre "Domicilio". As, con la expresin

dom = mirecordset("Domicilio")

Leemos el valor del campo domicilio del registro activo y se lo asignamos a la variable dom. Con la expresin

mirecordset("Domicilio") = "C/ Bretn de los Herreros 19, 1 M" mirecordset.Update

asignamos un valor al campo Domicilio del registro activo. Tras la edicin del registro, es necesario llamar al mtodo Update. El motivo es que los cambios en el registro activo se realizan sobre un buffer (espacio de almacenamiento intermedio) y no sobre el registro propiamente dicho. Ejemplo: El recordset rstClientes representa a nuestra tabla de clientes que, entre otros, tiene los campos Provincia e IVA . El siguiente bucle recorre todos los clientes, comprueba su provincia y le asigna el IVA correspondiente: 0 para Canarias y 16 para los dems

<%

rstClientes.MoveFirst do while not rstClientes.EOF if rstClientes("Provincia") = "Las Palmas" or rstClientes("Provincia") = "Tenerife" Then rstClientes("IVA") = 0 else rstClientes("IVA") = 16 end if rstClientes.Update rstClientes.MoveNext

loop %>

Mtodos para agregar o eliminar registros de la tabla Delete Eliminar el registro activo es muy fcil. Basta con invocar este mtodo. Por ejemplo, este bucle elimina todos los clientes morosos de nuestra base de datos:

<% rstClientes.MoveFirst do while not rstClientes.EOF if rstClientes("Deuda") > 0 Then rstClientes.Delete end if rstClientes.MoveNext loop %>

AddNew y Update Crear un nuevo registro involucra dos mtodos: Primero AddNew crea un nuevo registro en blanco. Despus asignamos valores a los distintos campos del registro. Por ltimo invocamos el mtodo Update para que se haga efectiva la incorporacin del nuevo registro con los valores asignados. En este ejemplo incorporamos un nuevo cliente a nuestra base de datos

<% rstClientes.AddNew rstClientes("Nombre") = "Pepe Gotera" rstClientes("Direccion") = "Rue del Percebe, 13" rstClientes("Localidad") = "Sildavia" rstClientes("Profesion") = "Chapuzas a domicilio" rsClientes.Update %>

Recuerde que para que esto funcione hay que asignar un tipo de bloqueo que permita la edicin de la base de datos. Esto se hace asignando a la propiedad LockType del recordset uno de estos valores: adLockOptimistic, adLockPessimistic o adLockBatchOptimistic.

Command
Este objeto es la representacin de un comando que se enva a la base de datos. Este comando puede ser una de estas 3 cosas: Llamada a un procedimiento guardado en la base de datos. El texto de una sentencia SQL. El nombre de una tabla. ActiveConnection Es una referencia al objeto connection que enlaza con la base de datos. es imprescindible asignar esta propiedad antes de invocar el mtodo command.execute para ejecutar el comando. CommandText Este es el texto del comando. Si se trata de una consulta SQL (lo habitual), esta propiedad es simplemente una cadena con el texto de la consulta. Execute El mtodo que ejecuta la consulta. El resultado de la ejecucin del comando normalmente ser un recordset. En el ejemplo, obtenemos un recorset con un filtrado de la tabla Clientes en el que se toma slo aquellos clientes cuya provincia es Navarra.

<%

Set miconexion = Server.CreateObject("ADODB.Connection") miconexion.ConnectionString = "DSN=midsn" miconexion.Open Set SqlCommand = Server.CreateObject("ADODB.Command") SqlCommand.ActiveConnection = miconexion SqlCommand.CommandText = "SELECT * FROM Clientes WHERE Provincia = 'Navarra'" Set rstNavarros = SqlCommand.execute ' ....... '........ miconexion.Close %>

Nuestro Ejemplo
En nuestro ejemplo vamos a usar el script bd.asp, PWS y la base de datos Ejemplo1 en formato Access. Como casi todos los script que vamos a desarrollar en este turorial, primero nos presenta el estado actual de la tabla Clientes y un formulario para aadir un nuevo registro en la BD. Tambin hemos explicado en este captulo como borrar y moverse por el recordset, pero en el ejemplo no lo usamos porque la mayora de las veces el cliente slo debe poder ver y aadir registros a la base de datos, y no modificarlos y / o borrarlos. Llamando al scripts desde el browser cliente con http://127.1.1.1/sie/asp/bd.asp debe aparecernos algo parecido a esto:

Bases de datos en la Web con PHP


Autor: Alejandro Garca

PHP3

o o o o o

Introduccin Qu utilizamos? El Lenguaje PHP3 Insertar, borrar... Ejecutando el CGI

PHP3
Introduccin
El PHP3 es otro lenguaje de script que nos permite programar aplicaciones que se ejecutarn en nuestro servidor. Es uno de los lenguajes ms utilizados en el mundo Unix con el servidor Apache aunque tambin se puede ejecutar bajo Windows.

Qu utilizamos?
Ya tenamos instalado PHP3 como vimos en el captulo anterior . En este caso vamos a utilizar la base de datos en formato Access de nuevo junto con el PWS. Por aquello de ir alternando uno y otro.

El Lenguaje PHP3
Lo primero que le indicamos al browser es que vamos a ejecutar cdigo PHP3. Esto lo hacemos con la directiva <?php para que sepa cmo interpretarlo. Lo dems es bastante parecido a perl o a asp. Se trabaja con objetos. Primero creamos el objeto conexin:

$cnx = odbc_connect( 'Ejemplo1' , 'Alejandro', 'pasword' ); if (!$cnx) { Error_handler( "Error al conectar odbc" , $cnx ); }
Despus definimos la sentencia sql: Lo ejecutamos:

$SQL_Exec_String = "select * from Clientes"; $cur= odbc_exec( $cnx, $SQL_Exec_String ); if (!$cur) { Error_handler( "Error en odbc_exec( ) " , $cnx ); }

Obtenemos los resultados en un objeto cursor y se los mandamos al cliente en una tabla.

echo "<table border=1><tr><th>Dni</th><th>Nombre</th>". "<th>Apellido1</th><th>Apellido2</th></tr>\n"; $nbrow=0; //Variable local para contar el n de filas while( odbc_fetch_row( $cur ) ) { $nbrow++; $Dni= odbc_result( $cur, 1 ); $Nombre= odbc_result( $cur, 2 ); $Apellido1= odbc_result( $cur, 3 ); $Apellido2= odbc_result( $cur, 4 ); echo "<tr><td>$Dni</td><td>$Nombre</td>". "<td>$Apellido1</td><td>$Apellido2</td></tr>\n"; } echo "<tr><td colspan=2>$nbrow entradas en la bd </td></tr></table>";

Cerramos la conexin.

odbc_close( $cnx);

Como veis es bastante sencillo y parecido a todos los dems lenguajes scripts.

Insertar, borrar...
Para las dems opciones de la base de datos ( insertar, Borrar, modificar ...) tan slo tenemos que modificar le sentencia sql y volver a hacer un select * para devolver la nueva tabla al usuario, como se ve en el ejemplo:

function Enter_New_Entry($Dni,$Nombre,$Apellido1,$Apellido2) { $cnx = odbc_connect( 'Ejemplo1' , 'Alejandro', 'Password' ); if (!$cnx) { Error_handler( "Error en odbc_connect" , $cnx ); } $SQL_Exec_String = "Insert Into Clientes (dni, Nombre, Apellido1, Apellido2) Values ('$Dni', '$Nombre', '$Apellido1', '$Apellido2')"; $cur= odbc_exec( $cnx, $SQL_Exec_String ); if (!$cur) { Error_handler( "Error en odbc_exec( ) " , $cnx ); } } odbc_close( $cnx);

Ejecutando el CGI
Hemos Creado dos ficheros php3 uno es el que nos ensea el estado actual de la base de datos y nos presenta un formulario por si queremos aadir un registro a ella. Este es el fichero: FormInput.php3. El segundo fichero es la respuesta a la insercin que hemos realizado y nos presenta el estado de la BD antes de insertar y despus. El fichero es: DataAccess.php3 Debes copiar los dos en un directorio de tu servidor con permiso de ejecucin. Yo los he copiado en /sie/php3 tal y como vimos al principio del tutorial. Primero llamas desde tu navegador a FormInput.php3 y debes ver algo como esto:

Si es as es que todo ha ido bien.

Personal Web Server


Si estas usando Windows 98 puedes instalar el Personal Web Server (PWS) de Microsoft en tu computadora gratis desde el disco de instalacion de Windows 98 y configurarlo para que se ejecute en tu computadora siguiendo estos sencillos pasos. 1.- Inserta el disco de Windows en el lector de CD. 2.- Desde la pantalla de inicio del CD selecciona 'Browse CD' (Explorar disco). 3.- Desde el explorador de windows selecciona 'add-ons' seguido de 'pws'. 4.- Dar doble click sobre setup.exe (instalar.exe) en el directorio PWS. Esto iniciara la instalacion del PWS

5.- Elegir 'instalacion minima' (minimum instalation) y deja todas las opciones como estan. 6.- Ya que termine la instalacion del PWS y se haya reiniciado la computadora, aparecera un Icono cerca del reloj en la barra de tareas. 7.- Doble click sobre este Icono para abrir el 'Personal Web Manager' desde donde podras configurar el PWS. 8.- Una vez abierto el Personal Web Manager veras el cuadro de dialogo principal donde mostrara tu pagina de inicio (home page) y el directorio de inicio (home directory) y sus valores. Donde la pagina de inicio se muestra abajo como 'http://My_Computer', que viene siendo http:// seguido del nombre de la computadora. Dando click sobre cualquiera de estos valores abrira tu pagina en el navegador predeterminado o el directorio en el explorador de Windows.

9.- Para ver tu sitio en el navegador teclea 'http://My_Computer', substituye 'My_Computer' por el nombre de tu computadora, en la barra de direccion del navegador. Si no estas seguro del nombre de tu computadora da click sobre 'Entorno de red' en el 'panel de control' y click sobre la pestaa de 'Identificacion de red'. 10.- Hasta que pongas tu sitio en el directorio predeterminado del PWS, veras la documentacion del PWS. 11.- Para poner tu sitio en lugar de la documentacion del PWS, recomendamos leerla antes de reemplazarla, necesitas poner tu sitio en el directorio 'c:\inetpub\wwwroot' asegurandote que la pagina de inicio de tu sitio se llame default.htm o default.asp,

ahora cuando se teclea 'http:// seguido del nombre de tu computadora', en el navegador veras tu sitio.

Un Sistema de postales Virtuales en ASP (II)


Descripcin de la base de datos:

Como veis, la base de datos es muy sencilla, solo contiene una tabla denominada "postales" y tres campos
id url tema Campo autonumrico que nos hace de identificador de cada imagen Nombre fsico de la imagen (mariposa.gif, avion.jpg,...) El campo tema nos servir para agrupar todas las imgenes de un mismo tipo (paisajes, infantil, ...)

Hasta aqu sencillo verdad?, bueno, pues como veris ahora el cdigo tampoco es complejo. Mdulos de la aplicacin Como dijimos al principio, la aplicacin consta de 3 mdulos:
default.asp Ser la pgina de inicio de nuestro sistema de postales. Cumplir una doble funcin, nos va a servir tanto para elegir el tema de la postal (si se entra en ella sin parmetros) como para que el usuario confeccione la postal una vez elegido el tema En este modulo comprobaremos que el usuario ha introducido todos los datos necesarios para el envo, y si es as le mostraremos una previsualizacin de la postal y le daremos la oportunidad de enviarla o volver atrs para corregirla. En este modulo llamaremos a ASPEmail y confeccionaremos y enviaremos la postal

confirmapostal.asp

enviarpostal.asp

Este articulo ha sido ledo

18,388

veces

Un Sistema de postales Virtuales en ASP (III)


Mdulos de la aplicacin Apuntes sobre el cdigo: DEFAULT.ASP Como comentamos anteriormente, el cdigo hace una doble funcin, si al capturar la variable tema a travs de request.form("tema") esta esta vaca, mostramos un formulario para poder elegir el tema de la postal, en caso contrario, mostramos todas la imgenes sobre el tema elegido. En las variables urlfoto y urlminiatura guardamos la direccin relativa de los

directorios que contienen nuestras imgenes CONFIRMAPOSTAL.ASP En este modulo comprobamos que ninguna de las variables recibidas desde default.asp esta vaca, si alguna lo esta, emitimos un mensaje de error y no mostramos la previsualizacin de la postal. Utilizamos la funcin comentarios=replace(request.form("comentarios"),chr(10),"<br>") para sustituir los saltos de lnea de teclado por etiquetas <br>

Defaul.asp
<html> <head> <title>Envio de E-Postales</title> </head> <body> <%urlfoto="images/" urlminiatura="images/miniaturas/" tema=request.form("tema")%> <center> <div align="center"> <center> <table border="0" width="80%"> <tr> <td width="100%" align="center"><font color="#0000FF" size="5"> Envi de E-Postales</font> <p>&nbsp;</p> </td></tr> <tr> <td width="100%" align="center" bgcolor="#D9F8FF"> <%Set Conna = Server.CreateObject("ADODB.Connection") 'nota: la cadena de conexin debe de ir en una sola lnea, aqui esta cortada por diseo Conna.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\TudirBd\postales.mdb")) set rs=createobject("ADODB.Recordset") if tema="" then sqltxt="SELECT distinct tema from postales" rs.open sqltxt,conna%> <p align="left">Elige un tema para tu postal:</p> <form method="POST" action="default.asp"> <p align="center"><select size="1" name="tema"> <%do while not rs.eof %> <option><%=rs("tema")%></option> <%rs.movenext loop rs.close set rs=nothing%> </select><input type="submit" value="Seleccionar" name="B1"></p> </form> <p><br> <%else sqltxt="SELECT * from postales where tema like '%"&tema&"%' order by id" rs.open sqltxt,conna%>

</p> <p align="left"><font color="#0000FF">Tema:</font><font color="#00FFFF"> </font> <%=tema%></p> <p align="left">Elige una imagen para tu postal:</p> <form method="POST" action="confirmapostal.asp"> <table border="0" width="100%" bgcolor="#55B5F1"><tr> <%contador=0 do while not rs.eof contador = contador+1 if contador >3 then contador=1%> </tr><tr> <%end if %> <td width="33%" align="center"> <p align="center"><img border="0" src="<%=urlminiatura%><%=rs("url")%>" > <input type="radio" value="<%=rs("id")%>" name="id" checked></td> <%rs.movenext loop rs.close set rs=nothing%> </tr> </table> <p align="left">&nbsp;</p> <table border="1" width="100%" bgcolor="#C0C0C0" bordercolor="#FFFFFF"> <tr> <td width="30%"><font color="#0000FF" size="2">Tu nombre:</font></td> <td width="70%"><input type="text" name="nombre" size="45"></td> </tr> <tr> <td width="30%"><font color="#0000FF" size="2">Tu email:</font></td> <td width="70%"><input type="text" name="email" size="45"></td> </tr> <tr> <td width="30%"><font color="#0000FF" size="2">Nombre de tu amigo:</font></td> <td width="70%"><input type="text" name="amigo" size="45"></td> </tr> <tr> <td width="30%"><font color="#0000FF" size="2">Email de tu amigo:</font></td> <td width="70%"><input type="text" name="emailamigo" size="45"></td> </tr> </table> <p align="left">Que le contamos:</p> <p align="center"><textarea rows="2" name="comentarios" cols="53"></textarea></p> <p align="center"><input type="submit" value="continuar ->" name="B1"></p> </form> <%end if%> </td> </tr> <tr> <td width="100%" align="center">&nbsp;</center> </center> <p align="right"><font size="1"> Cdigo proporcionado por :&nbsp; <a href="http://www.asptutor.com"> <img border="0" src="http://www.asptutor.com/images/asptutor88x31.gif"></a></font></td> </tr> </table> </div> </body> </html>

Confirmapostal.asp

<%if request.form("id")="" then response.redirect "default.asp" end if urlfoto="images/" urlminiatura="images/miniaturas/"%> <html> <head> <title>Envio de E-Postales</title> </head> <body> <div align="center"> <center> <table border="0" width="80%" bgcolor="#D9F8FF"> <tr> <td width="100%"> <%for each v_entrada in request.form for indice=1 to request.form(v_entrada).count if request.form(v_entrada)(indice) = "" then mal=1%> <font color="#FF00FF">El campo <%=v_entrada%> no puede estar vacio</font><br> <%end if next next if mal <> 1 then Set Conna = Server.CreateObject("ADODB.Connection") 'nota: la cadena de conexin debe de ir en una sola lnea, aqui esta cortada por diseo Conna.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\TudirBd\postales.mdb")) set rs=createobject("ADODB.Recordset") sqltxt="SELECT * from postales where id="&request.form("id") rs.open sqltxt,conna url=rs("url") rs.close set rs=nothing %> <h3 align="center"><font color="#FF0000">Esta es la postal que vas a enviar</font></h3> <div align="center"> <center> <table border="0" width="500" background="images/rayasgrises.gif"> <tr> <td width="642" colspan="2"> &nbsp; </td> </tr> <tr> <td width="93" bgcolor="#66CCFF">&nbsp;</td> <td width="543">&nbsp; <table border="0" width="100%" cellspacing="5" bgcolor="#FFFFFF"> <tr> <td><img border="0" src="<%=urlfoto%><%=url%>" align="left"></td> <%'cambiamos los saltos de carro por <br> comentarios=replace(request.form("comentarios"),chr(10),"<br>") 'Ponemos la primera letra en mayusculas inicial=ucase(mid(request.form("comentarios"),1,1)) 'Asignamos a la variable comentarios el resto de la cadena comentarios=mid(comentarios,2) %> <td valign="top">&nbsp;<i> <font color="#FF00FF" size="7"> <%=inicial%></font></i><%=comentarios%></td> </tr> <tr> <td width="100%" colspan="2"><font color="#FF0000">De:</font>

<a href="mailto:<%=request.form("email")%>"><%=request.form("nombre")%></a><br> <font color="#FF0000">Para:</font> <%=request.form("amigo")%> (<%=request.form("emailamigo")%>)</td> </tr> </table> <p>&nbsp;</p> </td> </tr> </table> </center> </div> &nbsp; <div align="center"> <center> <table border="0" width="50%"> <tr> <td width="50%" valign="top"> <p align="center">No me gusta, quiero corregirla</td> <td width="50%" valign="top"> <p align="center">Me gusta,<br> envala</td> </tr> <tr> <td width="50%" valign="top" align="center"> <a href="javascript:window.history.back()"> <img border="0" src="../images/atras.gif"></a></td> <td width="50%" valign="top" align="center"> <form method="POST" action="enviarpostal.asp"> <input type="hidden" name="comentarios" size="20" value="<%=request.form("comentarios")%>"> <input type="hidden" name="nombre" size="20" value="<%=request.form("nombre")%>"> <input type="hidden" name="email" size="20" value="<%=request.form("email")%>"> <input type="hidden" name="amigo" size="20" value="<%=request.form("amigo")%>"> <input type="hidden" name="emailamigo" size="20" value="<%=request.form("emailamigo")%>"> <input type="hidden" name="url" size="20" value="<%=url%>"> <input type="hidden" name="id" size="20" value="<%=request.form("id")%>">

<p><input border="0" src="../images/adelante.gif" name="I1" type="image"></p> </form> &nbsp;</td> </tr> </table> </center> </div> <%else%> <p align="center"><a href="javascript:window.history.back()"> <img border="0" src="../images/atras.gif"></a></p> <%end if%></td> </tr> <tr> <td width="100%">&nbsp; <p align="right"> <font size="1">Cdigo proporcionado por :&nbsp; <a href="http://www.asptutor.com"> <img border="0" src="http://www.asptutor.com/images/asptutor88x31.gif"></a> </font></td> </tr> </table> </center> </div> </body> </html>

Mdulos de la aplicacin Apuntes sobre el cdigo: ENVIARPOSTAL.ASP En las variables urlfoto y urlminiatura guardamos la direccin ABSOLUTA de los directorios que contienen nuestras imgenes. Tener en cuenta que cuando alguien reciba la postal, todas las referencias a objetos de la red (URL's, tanto de imgenes como hipervinculos) que se incluyan en esta debern ser en ABSOLUTO (http://www.tuweb.com/....) , de otra forma no podra visualizarlas Tendris que configurar las variables de ASPEmail con los datos de vuestro servidor.

Enviarpostal.asp
<% id=request.form("id") if id = "" then response.redirect "default.asp" end if urlfoto="http://www.tuweb.com/postales/images/" urlminiatura="http://www.tuweb.com/postales/images/miniaturas/" 'cambiamos los saltos de carro por <br> comentarios=replace(request.form("comentarios"),chr(10),"<br>") 'Ponemos la primera letra en mayusculas inicial=ucase(mid(request.form("comentarios"),1,1)) 'Asignamos a la variable comentarios el resto de la cadena comentarios=mid(comentarios,2) strHost = "mail.tuweb.com" Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "webmaster@tuweb.com" Mail.FromName = request.form("nombre") Mail.AddReplyTo request.form("email") Mail.AddAddress request.form("emailamigo") titulo=Request.form("Nombre")&" te envia una e-postal" Mail.Subject = titulo Mail.IsHTML = True mensaje="<html><head>" mensaje=mensaje & "<title>Una E-postal para ti</title>"&vbcrlf mensaje=mensaje & " </head><body><div align=center>"&vbcrlf mensaje=mensaje & "<center> "&vbcrlf mensaje=mensaje & "<table border=0 width=652 " mensaje=mensaje & " background=http://www.tuweb.com/images/rayasgrises.gif> "&vbcrlf mensaje=mensaje & " <tr>"&vbcrlf mensaje=mensaje & " <td width=93 bgcolor=#66CCFF>&nbsp;</td>"&vbcrlf mensaje=mensaje & " <td width=543>&nbsp;"&vbcrlf mensaje=mensaje & " <table border=0 cellspacing=5 bgcolor=#FFFFFF>"&vbcrlf mensaje=mensaje & " <tr> <td ><img border=0 src="&urlfoto&request.form("url")&">"&vbcrlf mensaje=mensaje & " <td valign=top>"&vbcrlf mensaje=mensaje & " &nbsp;&nbsp;&nbsp;<i><font color=#FF00FF size=7>" mensaje=mensaje & inicial&"</font></i>"&comentarios&vbcrlf mensaje=mensaje & "</td> </tr>"&vbcrlf mensaje=mensaje & " <tr>"&vbcrlf mensaje=mensaje & "<td colspan=2> "&vbcrlf mensaje=mensaje & " <font color=#FF0000>De:</font>"&vbcrlf mensaje=mensaje & " <a href=mailto:"& request.form("email")&">" mensaje=mensaje & request.form("nombre")&" </a><br>"&vbcrlf mensaje=mensaje & "<font color=#FF0000>Para:</font> "&vbcrlf

mensaje=mensaje mensaje=mensaje mensaje=mensaje mensaje=mensaje

& & & &

request.form("amigo")&"("&request.form("emailamigo")&")"&vbcrlf " </td> </tr></table><p>&nbsp;</p> </td></tr>"&vbcrlf " </table>"&vbcrlf " </center>"&vbcrlf

%> <html> <head>

Mail.Body = mensaje Mail.Send

<title>Envio de E-Postales</title> </head> <body> <p align="center">&nbsp;</p> <h3 align="center"><font color="#FF0000">Postal enviada correctamente</font></h3> <p align="center"><a href="default.asp">Enviar otra</a></p> <p align="center">&nbsp; <font size="1">Cdigo proporcionado por :&nbsp; <a href="http://www.asptutor.com"> <img border="0" src="http://www.asptutor.com/images/asptutor88x31.gif"></a> </font> </body> </html>

Este articulo ha sido ledo

18,389

veces

Un Sistema de postales Virtuales en ASP (III)


Mdulos de la aplicacin Apuntes sobre el cdigo: DEFAULT.ASP Como comentamos anteriormente, el cdigo hace una doble funcin, si al capturar la variable tema a travs de request.form("tema") esta esta vaca, mostramos un formulario para poder elegir el tema de la postal, en caso contrario, mostramos todas la imgenes sobre el tema elegido. En las variables urlfoto y urlminiatura guardamos la direccin relativa de los directorios que contienen nuestras imgenes CONFIRMAPOSTAL.ASP En este modulo comprobamos que ninguna de las variables recibidas desde default.asp esta vaca, si alguna lo esta, emitimos un mensaje de error y no mostramos la previsualizacin de la postal. Utilizamos la funcin comentarios=replace(request.form("comentarios"),chr(10),"<br>") para sustituir los saltos de lnea de teclado por etiquetas <br>

Defaul.asp
<html> <head> <title>Envio de E-Postales</title> </head> <body> <%urlfoto="images/" urlminiatura="images/miniaturas/" tema=request.form("tema")%> <center> <div align="center"> <center> <table border="0" width="80%"> <tr> <td width="100%" align="center"><font color="#0000FF" size="5"> Envi de E-Postales</font> <p>&nbsp;</p> </td></tr> <tr> <td width="100%" align="center" bgcolor="#D9F8FF"> <%Set Conna = Server.CreateObject("ADODB.Connection") 'nota: la cadena de conexin debe de ir en una sola lnea, aqui esta cortada por diseo Conna.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\TudirBd\postales.mdb")) set rs=createobject("ADODB.Recordset") if tema="" then sqltxt="SELECT distinct tema from postales" rs.open sqltxt,conna%> <p align="left">Elige un tema para tu postal:</p> <form method="POST" action="default.asp"> <p align="center"><select size="1" name="tema"> <%do while not rs.eof %> <option><%=rs("tema")%></option> <%rs.movenext loop rs.close set rs=nothing%> </select><input type="submit" value="Seleccionar" name="B1"></p> </form> <p><br> <%else sqltxt="SELECT * from postales where tema like '%"&tema&"%' order by id" rs.open sqltxt,conna%> </p> <p align="left"><font color="#0000FF">Tema:</font><font color="#00FFFF"> </font> <%=tema%></p> <p align="left">Elige una imagen para tu postal:</p> <form method="POST" action="confirmapostal.asp"> <table border="0" width="100%" bgcolor="#55B5F1"><tr> <%contador=0 do while not rs.eof contador = contador+1 if contador >3 then contador=1%> </tr><tr> <%end if %> <td width="33%" align="center"> <p align="center"><img border="0" src="<%=urlminiatura%><%=rs("url")%>" >

<input type="radio" value="<%=rs("id")%>" name="id" checked></td> <%rs.movenext loop rs.close set rs=nothing%> </tr> </table> <p align="left">&nbsp;</p> <table border="1" width="100%" bgcolor="#C0C0C0" bordercolor="#FFFFFF"> <tr> <td width="30%"><font color="#0000FF" size="2">Tu nombre:</font></td> <td width="70%"><input type="text" name="nombre" size="45"></td> </tr> <tr> <td width="30%"><font color="#0000FF" size="2">Tu email:</font></td> <td width="70%"><input type="text" name="email" size="45"></td> </tr> <tr> <td width="30%"><font color="#0000FF" size="2">Nombre de tu amigo:</font></td> <td width="70%"><input type="text" name="amigo" size="45"></td> </tr> <tr> <td width="30%"><font color="#0000FF" size="2">Email de tu amigo:</font></td> <td width="70%"><input type="text" name="emailamigo" size="45"></td> </tr> </table> <p align="left">Que le contamos:</p> <p align="center"><textarea rows="2" name="comentarios" cols="53"></textarea></p> <p align="center"><input type="submit" value="continuar ->" name="B1"></p> </form> <%end if%> </td> </tr> <tr> <td width="100%" align="center">&nbsp;</center> </center> <p align="right"><font size="1"> Cdigo proporcionado por :&nbsp; <a href="http://www.asptutor.com"> <img border="0" src="http://www.asptutor.com/images/asptutor88x31.gif"></a></font></td> </tr> </table> </div> </body> </html>

Confirmapostal.asp
<%if request.form("id")="" then response.redirect "default.asp" end if urlfoto="images/" urlminiatura="images/miniaturas/"%> <html> <head> <title>Envio de E-Postales</title> </head> <body> <div align="center"> <center> <table border="0" width="80%" bgcolor="#D9F8FF"> <tr> <td width="100%">

<%for each v_entrada in request.form for indice=1 to request.form(v_entrada).count if request.form(v_entrada)(indice) = "" then mal=1%> <font color="#FF00FF">El campo <%=v_entrada%> no puede estar vacio</font><br> <%end if next next if mal <> 1 then Set Conna = Server.CreateObject("ADODB.Connection") 'nota: la cadena de conexin debe de ir en una sola lnea, aqui esta cortada por diseo Conna.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\TudirBd\postales.mdb")) set rs=createobject("ADODB.Recordset") sqltxt="SELECT * from postales where id="&request.form("id") rs.open sqltxt,conna url=rs("url") rs.close set rs=nothing %> <h3 align="center"><font color="#FF0000">Esta es la postal que vas a enviar</font></h3> <div align="center"> <center> <table border="0" width="500" background="images/rayasgrises.gif"> <tr> <td width="642" colspan="2"> &nbsp; </td> </tr> <tr> <td width="93" bgcolor="#66CCFF">&nbsp;</td> <td width="543">&nbsp; <table border="0" width="100%" cellspacing="5" bgcolor="#FFFFFF"> <tr> <td><img border="0" src="<%=urlfoto%><%=url%>" align="left"></td> <%'cambiamos los saltos de carro por <br> comentarios=replace(request.form("comentarios"),chr(10),"<br>") 'Ponemos la primera letra en mayusculas inicial=ucase(mid(request.form("comentarios"),1,1)) 'Asignamos a la variable comentarios el resto de la cadena comentarios=mid(comentarios,2) %> <td valign="top">&nbsp;<i> <font color="#FF00FF" size="7"> <%=inicial%></font></i><%=comentarios%></td> </tr> <tr> <td width="100%" colspan="2"><font color="#FF0000">De:</font> <a href="mailto:<%=request.form("email")%>"><%=request.form("nombre")%></a><br> <font color="#FF0000">Para:</font> <%=request.form("amigo")%> (<%=request.form("emailamigo")%>)</td> </tr> </table> <p>&nbsp;</p> </td> </tr> </table> </center> </div> &nbsp; <div align="center"> <center> <table border="0" width="50%"> <tr>

<td width="50%" valign="top"> <p align="center">No me gusta, quiero corregirla</td> <td width="50%" valign="top"> <p align="center">Me gusta,<br> envala</td> </tr> <tr> <td width="50%" valign="top" align="center"> <a href="javascript:window.history.back()"> <img border="0" src="../images/atras.gif"></a></td> <td width="50%" valign="top" align="center"> <form method="POST" action="enviarpostal.asp"> <input type="hidden" name="comentarios" size="20" value="<%=request.form("comentarios")%>"> <input type="hidden" name="nombre" size="20" value="<%=request.form("nombre")%>"> <input type="hidden" name="email" size="20" value="<%=request.form("email")%>"> <input type="hidden" name="amigo" size="20" value="<%=request.form("amigo")%>"> <input type="hidden" name="emailamigo" size="20" value="<%=request.form("emailamigo")%>"> <input type="hidden" name="url" size="20" value="<%=url%>"> <input type="hidden" name="id" size="20" value="<%=request.form("id")%>">

<p><input border="0" src="../images/adelante.gif" name="I1" type="image"></p> </form> &nbsp;</td> </tr> </table> </center> </div> <%else%> <p align="center"><a href="javascript:window.history.back()"> <img border="0" src="../images/atras.gif"></a></p> <%end if%></td> </tr> <tr> <td width="100%">&nbsp; <p align="right"> <font size="1">Cdigo proporcionado por :&nbsp; <a href="http://www.asptutor.com"> <img border="0" src="http://www.asptutor.com/images/asptutor88x31.gif"></a> </font></td> </tr> </table> </center> </div> </body> </html>

Este articulo ha sido ledo

17,694

veces

Un Sistema de postales Virtuales en ASP (IV)


Mdulos de la aplicacin Apuntes sobre el cdigo: ENVIARPOSTAL.ASP En las variables urlfoto y urlminiatura guardamos la direccin ABSOLUTA de los directorios que contienen nuestras imgenes. Tener en cuenta que cuando alguien reciba la postal, todas las referencias a objetos de la red (URL's, tanto de imgenes como hipervinculos) que se incluyan en esta debern ser en ABSOLUTO (http://www.tuweb.com/....) , de otra forma no podra visualizarlas

Tendris que configurar las variables de ASPEmail con los datos de vuestro servidor.

Enviarpostal.asp
<% id=request.form("id") if id = "" then response.redirect "default.asp" end if urlfoto="http://www.tuweb.com/postales/images/" urlminiatura="http://www.tuweb.com/postales/images/miniaturas/" 'cambiamos los saltos de carro por <br> comentarios=replace(request.form("comentarios"),chr(10),"<br>") 'Ponemos la primera letra en mayusculas inicial=ucase(mid(request.form("comentarios"),1,1)) 'Asignamos a la variable comentarios el resto de la cadena comentarios=mid(comentarios,2) strHost = "mail.tuweb.com" Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "webmaster@tuweb.com" Mail.FromName = request.form("nombre") Mail.AddReplyTo request.form("email") Mail.AddAddress request.form("emailamigo") titulo=Request.form("Nombre")&" te envia una e-postal" Mail.Subject = titulo Mail.IsHTML = True mensaje="<html><head>" mensaje=mensaje & "<title>Una E-postal para ti</title>"&vbcrlf mensaje=mensaje & " </head><body><div align=center>"&vbcrlf mensaje=mensaje & "<center> "&vbcrlf mensaje=mensaje & "<table border=0 width=652 " mensaje=mensaje & " background=http://www.tuweb.com/images/rayasgrises.gif> "&vbcrlf mensaje=mensaje & " <tr>"&vbcrlf mensaje=mensaje & " <td width=93 bgcolor=#66CCFF>&nbsp;</td>"&vbcrlf mensaje=mensaje & " <td width=543>&nbsp;"&vbcrlf mensaje=mensaje & " <table border=0 cellspacing=5 bgcolor=#FFFFFF>"&vbcrlf mensaje=mensaje & " <tr> <td ><img border=0 src="&urlfoto&request.form("url")&">"&vbcrlf mensaje=mensaje & " <td valign=top>"&vbcrlf mensaje=mensaje & " &nbsp;&nbsp;&nbsp;<i><font color=#FF00FF size=7>" mensaje=mensaje & inicial&"</font></i>"&comentarios&vbcrlf mensaje=mensaje & "</td> </tr>"&vbcrlf mensaje=mensaje & " <tr>"&vbcrlf mensaje=mensaje & "<td colspan=2> "&vbcrlf mensaje=mensaje & " <font color=#FF0000>De:</font>"&vbcrlf mensaje=mensaje & " <a href=mailto:"& request.form("email")&">" mensaje=mensaje & request.form("nombre")&" </a><br>"&vbcrlf mensaje=mensaje & "<font color=#FF0000>Para:</font> "&vbcrlf mensaje=mensaje & request.form("amigo")&"("&request.form("emailamigo")&")"&vbcrlf mensaje=mensaje & " </td> </tr></table><p>&nbsp;</p> </td></tr>"&vbcrlf mensaje=mensaje & " </table>"&vbcrlf mensaje=mensaje & " </center>"&vbcrlf Mail.Body = mensaje Mail.Send

%> <html> <head>

<title>Envio de E-Postales</title> </head> <body>

<p align="center">&nbsp;</p> <h3 align="center"><font color="#FF0000">Postal enviada correctamente</font></h3> <p align="center"><a href="default.asp">Enviar otra</a></p> <p align="center">&nbsp; <font size="1">Cdigo proporcionado por :&nbsp; <a href="http://www.asptutor.com"> <img border="0" src="http://www.asptutor.com/images/asptutor88x31.gif"></a> </font> </body> </html>

Un Sistema de postales Virtuales en ASP (I)


Muchos de vosotros me habais pedido un articulo sobre el desarrollo de una aplicacin de envi de postales, bien, pues aqu lo tenis. El cdigo que voy a mostrar es el mismo que el usado en el sistema de postales de ASPTutor, as que para que te hagas una idea del funcionamiento general antes de liarte con el cdigo, te recomiendo que te pases por all. El ActiveX que vamos a usar para enviar la postal es ASPemail de Persit, entre otras cosas porque poco a poco se ha convertido en un estndar y adems, porque nos permite enviar correo con formato HTML. Tienes todos los procedimientos de configuracin y uso de ASPEmail en http://www.asptutor.com/asp/vart.asp?id=55 Nuestra aplicacin va a costar de una estructura de directorios para almacenar las imgenes, una base de datos y tres mdulos asp. Vamos a empezar describiendo la estructura de directorios que vamos a crear. Situaremos nuestra aplicacin de e-postales e un directorio que denominaremos "postales" (aqu situaremos nuestros mdulos .asp) a su vez crearemos u subdirectorio de "postales" llamado "images" para situar los imgenes que enviaremos en nuestras postales. Debajo de "images" crearemos el directorio "miniaturas" destinado a contener copias reducidas de todas nuestras imgenes a fin de agilizar la carga cuando mostremos los catlogos de imgenes. Nuestra estructura final debera quedar asi:

You might also like