35
Bases de datos en la Web Autor: Alejandro García Introducción o Presentación 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 Introducción Presentación En estas páginas vamos a intentar dar una pequeña introducción sobre como acceder desde nuestra página web a una base de datos utilizando diferentes tecnologías, (todas ellas para servidores en Windows 9x, aunque algunas también para Unix, Linux...) para que cada uno compare y elija la que mas le guste. Mi Nombre es Alejandro García, soy estudiante de Ingeniería Técnica de Informática de Gestión por la Universidad de Granada (Spain). Este tutorial nace debido a la realización de una practica de la asignatura Sistemas de Información Empresarial en el mes de Abril del año 2000. Espero que le sirva a de ayuda. Cualquier duda o comentario por favor envíemelo 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 difícil 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 tendrán 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)

Tutorial Es

Embed Size (px)

Citation preview

Bases de datos en la WebAutor: Alejandro García

Introducción o Presentacióno Creando las BDo Obtener un DSNo Instalando Personal Web Server y Sambar Servero Instalando Perl, JSP y1 PHP3o El directorio cgi-bino Creando las aplicaciones: Ejemplos

Introducción

 Presentación

En estas páginas vamos a intentar dar una pequeña introducción sobre como acceder desde nuestra página web a una base de datos utilizando diferentes tecnologías, (todas ellas para servidores en Windows 9x, aunque algunas también para Unix, Linux...) para que cada uno compare y elija la que mas le guste.Mi Nombre es Alejandro García, soy estudiante de Ingeniería Técnica de Informática de Gestión por la Universidad de Granada (Spain). Este tutorial nace debido a la realización de una practica de la asignatura Sistemas de Información Empresarial en el mes de Abril del año 2000.Espero que le sirva a de ayuda.Cualquier duda o comentario por favor envíemelo 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 difícil 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 tendrán las mismas tablas que son las siguientes:

Tabla de clientes:Nombre de la fila Tipo de la filaNombre de la fila Tipo de la filadni Texto (8), Primary KeyNombre Texto (20)Apellido1 Texto (20)Apellido2 Texto (20)

Tabla de proveedores:Nombre de la fila Tipo de la filaNombre de la fila Tipo de la filacif Texto (9), Primary KeyEmpresa Texto (20)

NombreContacto Texto (20)Teléfono Numérico

 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) colóquelo en el directorio Data de su dominio. Después 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 estés dentro veras una pantalla como esta:

Selecciona la pestaña System DSN. Aparecerá vacía si no se ha definido antes ningún otro DNS de sistema. Pulsa el botón Add . Veras una ventana parecida a la de la imagen:

Escoge el driver para Microsoft Access ( en este caso ) y pulsa el botón finish. Ahora deberás 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 botón Select y busca el nombre y path completo de la base de datos que habíamos 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 después de la instalación de Windows. Para instalarlo hacemos:

Inserte el disco compacto de Windows 98 en su unidad. Haga clic en Inicio y después 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 tendrás en la barra de tareas el icono de PWS. Si lo pulsas dos veces verás una pantalla parecida a esta:

Pulsando en Avanzada crear tus directorios y darles los permisos de ejecución para poder guardar en el los scripts o bien utilizar el directorio que él crea por defecto.También vamos a instalar otro servidor Web para que veáis como hacerlo y las diferencias entre uno y otro.Este otro servidor es el Sambar web Server que podéis bajaros gratuitamente desde http://www.winfiles.com/ .Personalmente me gusta más que PWS porque es más fácil 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 tengáis el fichero .zip de Sambar server lo descomprimes en un directorio tmp y ejecutas el setup.exe, Ya está , nada más que hacer, aunque tiene muchas más posibilidades pero para nuestros propósitos 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 propósito 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 más 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 cámbiale 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 instalación de php3. Elige los módulos ( dll ) que quieres cargar cuando php se ejecute. Esto de hace quitando el guión de comentario( ' ) que tienen las líneas del estilo "extension=php3_*.dll". Para nuestro ejemplo basta quitar el comentario de la línea "extension=php3_odbc.dll". Si quieres más información visita la FAQ en http://www.php.net/ Todavía 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/ScriptMap

1. Ve al menú Edición y pulsa Nuevo->Valor de la cadena. 2. En Nombre debes poner las extensiones asociadas a tus scripts php. Por

ejemplo '.php3' 3. 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.

4. Repite 1)-4) para cada extensión que quieras asociar con PHP.Los más comunes son .php3 y .phtml

5. Ve a HKEY_CLASSES_ROOT 6. Ve al menú Edición y pulsa Nuevo->Clave 7. El nombre de la clave es la extensión que quieres asociar con php ( '.php3' ) 8. Pulsa la nueva clave y en el panel derecho haz doble click en el valor por

defecto y escribe 'phpfile' 9. Repite 5) - 8) para cada extensión que quieras asociar con php. 10. Ve al menú Edición y pulsa Nuevo->Clave. El nombre de la clave debe ser

'phpfile' 11. Pulsa la nueva clave y en el panel derecho haz doble click en el valor por

defecto y escribe 'PHP Script' 12. Ahora crea una nueva clave hija de 'phpfile' y llámala 'Shell' 13. Ahora crea una nueva clave hija de 'Shell' y llámala 'open' 14. Ahora crea una nueva clave hija de 'open' y llámala 'command' 15. 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' 16. Sal de Regedit

Si todo ha ido bien ya tienes tu PWS funcionando con PHP3.PERLNo es tan difícil como PHP3. Lo primero que debes hacer es bajarte la versión 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 sólo debes añadir el directorio bin de perl a tu variable PATH dentro del autoexec.batJSPDebes instalar el JDK que puedes encontrar en http://www.javasoft.com/ , yo te recomiendo la versión 1.2 o posterior. Esto es fácil, sólo tienes que descomprimirla y ejecutar el programa de instalación y añadir la variable CLASSPATH a tu autoexec.bat. Esta debe valer algo parecido a :SET CLASSPATH=C:\JDK1.2\LIB\TOOLS.ZIPNosotros 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 documentación. 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 añadir 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 "). Solución: 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 estén en un directorio que tenga permiso de ejecución. Lo más 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 tecnología ) y les he dado permiso de ejecución. Esto se hace con el PWS en la opción 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 cómo se conecta con la base de datos y como se trabaja con ella desde las distintas tecnologías que estamos estudiando:

ASP PERL PHP3 JSP

Esto es lo que haremos en los próximos capítulos. 

Bases de datos en la Web con ASPAutor: Alejandro García

ASP o Introduccióno Terminologíao Los objetos componentes de ADOo Connection

Propiedades y métodos más relevanteso Recordset

Propiedades y métodos más importantes Command Nuestro Ejemplo

ASP

 Introducción

El sistema de acceso a bases datos a través de la web utilizando la tecnología Microsoft, se denomina ADO (ActiveX Data Objects). Aquí se expone una introducción 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 métodos y propiedades de los objetos está también en la biblioteca online de MSDN (msdn.microsoft.com). Ahí verá múltiples ejemplos en los que comprobará la flexibilidad del sistema ADO (al mismo resultado se puede llegar por vías distintas). Por motivos pedagógicos, aquí se expone una utilización más rígida.

 Terminología

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 métodos hay que utilizar. Estos objetos están registrados en el sistema, sin embargo no están 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 están definidas en un archivo llamado adovbs.inc para Visual Basic script y adojavas.inc para Javascript. Estos archivos los podrá encontrar en su instalación local de ADO. Para incluirlos en las páginas ASP es necesario utilizar un código de este tipo al comienzo de cada página ASP que use las constantes:<!--#INCLUDE FILE="adovbs.inc"--> Para que esta inclusión funcione el archivo adovbs.inc debe estar en el mismo directorio que la página ASP que lo incluye.

 Connection

Representa una conexión 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 conexión.

 Propiedades y métodos más relevantes

ConnectionStringEs una cadena de caracteres con la información necesaria para establecer una conexión con la fuente de datos. Por tanto, es la propiedad básica de este objeto. Aunque hay hasta 7 argumentos distintos que se pueden suministrar en esta cadena, los básicos 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=micontraseña"OpenAbre la conexión con la base de datos. Si antes hemos asignado la propiedad ConnectionString, este método no necesita parámetros.CloseCierra la conexión 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 más 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 física de la base de datos o bien una obtenida mediante una operación como un filtrado o sentencia SQL. En cualquier caso, el objeto representa a la tabla con todos sus registros, aunque sólo uno de ellos es el activo. El registro activo es en el que podemos leer o modificar los valores de los campos. También se le llama cursor.

 Propiedades y métodos más importantes

Para una mejor compresión y puesto que son numerosos, los hemos dividido por categorías 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.ActiveConnectionComo 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.SourceIndica 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, también es posible asignarle una sentencia SQL y entonces el objeto Recordset referenciará al resultado de aplicar dicha sentencia.LockTypeIndica el tipo de bloqueo que se realiza sobre la base de datos. Por defecto toma el valor adLockReadOnly que como su nombre indica sólo sirve para leer datos. Si deseamos editar o añadir registros, tendremos que cambiar esta propiedad por otro valor. El más usado es adLockOptimistic que permite editar la base de datos o añadir registros realizando un bloqueo optimista (sólo cuando sea estrictamente necesario).CursorTypeEl tipo de cursor que se utiliza para recorrer los registros de un recordset. Por defecto toma el valor adOpenForwardOnly que como su nombre indica sólo permite moverse hacia adelante. Por ello si queremos utilizar libremente todos los métodos de movimiento de un recordset

(MoveFirst, MoveTo, MoveNext, MovePrevious, etc) tendremos que cambiar el cursor por uno más potente. Esto puede hacerse asignando a esta propiedad el valor adOpenKeysetEjemploAquí 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 demás que sigan: Se supone que debe hacerse algo parecido a esto para abrir el Recordset. Es decir, en los restantes ejemplos escribimos sólo el código que iría en el lugar de los puntos suspensivos de este script (NOTA: Recuerde que si hay que añadir 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 número de registros:RecordCountNúmero 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>

EOFAcrónimo de End Of File. Vale TRUE si estamos en el último registro y FALSE si no. Se usa mucho como condición en bucles while, los cuales se ejecutan hasta llegar al último registro.BOFAcrónimo de Begin Of File. Vale TRUE si estamos en el primer registro y FALSE si no.Métodos para mover el cursor (registro activo):Estos métodos 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 atrás:<% 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 %>Nótese que la asignación de propiedades al recordset debe hacerse antes de invocar el método open que es el que lo inicializa con registros.MoveFirstMueve el cursor al primer registro de la tabla

MoveLastMueve el cursor al último registro de la tablaMoveNextMueve el cursor al siguiente registro.MovePreviousMueve 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 %>Lectura y modificación de los campos del registro activoLa sintaxis para acceder a los datos de un campo del registro activo de un recordset es:mirecordset("Domicilio")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 expresióndom = mirecordset("Domicilio")Leemos el valor del campo domicilio del registro activo y se lo asignamos a la variable dom. Con la expresiónmirecordset("Domicilio") = "C/ Bretón de los Herreros 19, 1º M" mirecordset.Updateasignamos un valor al campo Domicilio del registro activo. Tras la edición del registro, es necesario llamar al método 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 demás<%

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 %>Métodos para agregar o eliminar registros de la tablaDeleteEliminar el registro activo es muy fácil. Basta con invocar este método. 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 UpdateCrear un nuevo registro involucra dos métodos: Primero AddNew crea un nuevo registro en blanco. Después asignamos valores a los distintos campos del registro. Por último invocamos el método Update para que se haga efectiva la incorporación 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 edición 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 representación de un comando que se envía 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.

ActiveConnectionEs una referencia al objeto connection que enlaza con la base de datos. es imprescindible asignar esta propiedad antes de invocar el método command.execute para ejecutar el comando.CommandTextEste 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.ExecuteEl método que ejecuta la consulta. El resultado de la ejecución del comando normalmente será un recordset.En el ejemplo, obtenemos un recorset con un filtrado de la tabla Clientes en el que se toma sólo 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 añadir un nuevo registro en la BD.También hemos explicado en este capítulo como borrar y moverse por el recordset, pero en el ejemplo no lo usamos porque la mayoría de las veces el cliente sólo debe poder ver y añadir 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 PHPAutor: Alejandro García

PHP3 o Introduccióno ¿Qué utilizamos?o El Lenguaje PHP3o Insertar, borrar...o Ejecutando el CGI

PHP3

 Introducción

El PHP3 es otro lenguaje de script que nos permite programar aplicaciones que se ejecutarán en nuestro servidor. Es uno de los lenguajes más utilizados en el mundo Unix con el servidor Apache aunque también se puede ejecutar bajo Windows.

 ¿Qué utilizamos?

Ya teníamos instalado PHP3 como vimos en el capítulo 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 código PHP3. Esto lo hacemos con la directiva <?php para que sepa cómo interpretarlo.Lo demás es bastante parecido a perl o a asp. Se trabaja con objetos.Primero creamos el objeto conexión: $cnx = odbc_connect( 'Ejemplo1' , 'Alejandro', 'pasword' ); if (!$cnx) { Error_handler( "Error al conectar odbc" , $cnx ); }Después definimos la sentencia sql:$SQL_Exec_String = "select * from Clientes";Lo ejecutamos: $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 conexión.odbc_close( $cnx);Como veis es bastante sencillo y parecido a todos los demás lenguajes scripts.

 Insertar, borrar...

Para las demás opciones de la base de datos ( insertar, Borrar, modificar ...) tan sólo 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 enseña el estado actual de la base de datos y

nos presenta un formulario por si queremos añadir un registro a ella. Este es el fichero: FormInput.php3.El segundo fichero es la respuesta a la inserción que hemos realizado y nos presenta el estado

de la BD antes de insertar y después. El fichero es: DataAccess.php3Debes copiar los dos en un directorio de tu servidor con permiso de ejecución. 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 pestaña 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)

Descripción de la base de datos:

Como veis, la base de datos es muy sencilla, solo contiene una tabla denominada "postales" y tres campos 

id Campo autonumérico que nos hace de identificador de cada imagen

url Nombre físico de la imagen (mariposa.gif, avion.jpg,...) 

tema El campo tema nos servirá para agrupar todas las imágenes de un mismo tipo (paisajes, infantil, ...)

 Hasta aquí sencillo ¿verdad?, bueno, pues como veréis ahora el código tampoco es complejo.Módulos de la aplicaciónComo dijimos al principio, la aplicación consta de 3 módulos:

default.asp

Será la página de inicio de nuestro sistema de postales. Cumplirá una doble función, nos va a servir tanto para elegir el tema de la postal (si se entra en ella sin parámetros) como para que el usuario confeccione la postal una vez elegido el tema

confirmapostal.asp

En este modulo comprobaremos que el usuario ha introducido todos los datos necesarios para el envío, y si es así le mostraremos una previsualización de la postal y le daremos la oportunidad de enviarla o volver atrás para corregirla.

enviarpostal.asp En este modulo llamaremos a ASPEmail y confeccionaremos y enviaremos la postal

 Este articulo ha sido leído 18,388 veces

Un Sistema de postales Virtuales en ASP (III)

Módulos de la aplicaciónApuntes sobre el código:

DEFAULT.ASP Como comentamos anteriormente, el código hace una doble función, si al

capturar la variable tema a través de request.form("tema") esta esta vacía, mostramos un formulario para poder elegir el tema de la postal, en caso contrario, mostramos todas la imágenes sobre el tema elegido.

En las variables urlfoto y urlminiatura guardamos la dirección relativa de los directorios que contienen nuestras imágenes

CONFIRMAPOSTAL.ASP

En este modulo comprobamos que ninguna de las variables recibidas desde default.asp esta vacía, si alguna lo esta, emitimos un mensaje de error y no mostramos la previsualización de la postal.

Utilizamos la función comentarios=replace(request.form("comentarios"),chr(10),"<br>") para sustituir los saltos de línea 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 conexión debe de ir en una sola línea, aqui esta cortada por diseñoConna.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">Código 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.formfor indice=1 to request.form(v_entrada).countif request.form(v_entrada)(indice) = "" thenmal=1%><font color="#FF00FF">El campo <%=v_entrada%> no puede estar vacio</font><br>

<%end ifnextnext

if mal <> 1 thenSet Conna = Server.CreateObject("ADODB.Connection")'nota: la cadena de conexión debe de ir en una sola línea, aqui esta cortada por diseñoConna.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,connaurl=rs("url")rs.closeset 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> envíala</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">Código 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>

 

  

Módulos de la aplicación

Apuntes sobre el código:

ENVIARPOSTAL.ASP En las variables urlfoto y urlminiatura guardamos la dirección ABSOLUTA de los

directorios que contienen nuestras imágenes. Tener en cuenta que cuando alguien reciba la postal, todas las referencias a objetos de la red (URL's, tanto de imágenes como hipervinculos) que se incluyan en esta deberán ser en ABSOLUTO (http://www.tuweb.com/....) , de otra forma no podría visualizarlas

Tendréis 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 = strHostMail.From = "[email protected]"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 = tituloMail.IsHTML = True

mensaje="<html><head>"mensaje=mensaje & "<title>Una E-postal para ti</title>"&vbcrlfmensaje=mensaje & " </head><body><div align=center>"&vbcrlfmensaje=mensaje & "<center> "&vbcrlfmensaje=mensaje & "<table border=0 width=652 " mensaje=mensaje & " background=http://www.tuweb.com/images/rayasgrises.gif> "&vbcrlfmensaje=mensaje & " <tr>"&vbcrlfmensaje=mensaje & " <td width=93 bgcolor=#66CCFF>&nbsp;</td>"&vbcrlfmensaje=mensaje & " <td width=543>&nbsp;"&vbcrlfmensaje=mensaje & " <table border=0 cellspacing=5 bgcolor=#FFFFFF>"&vbcrlfmensaje=mensaje & " <tr> <td ><img border=0 src="&urlfoto&request.form("url")&">"&vbcrlfmensaje=mensaje & " <td valign=top>"&vbcrlfmensaje=mensaje & " &nbsp;&nbsp;&nbsp;<i><font color=#FF00FF size=7>"mensaje=mensaje & inicial&"</font></i>"&comentarios&vbcrlfmensaje=mensaje & "</td> </tr>"&vbcrlfmensaje=mensaje & " <tr>"&vbcrlfmensaje=mensaje & "<td colspan=2> "&vbcrlfmensaje=mensaje & " <font color=#FF0000>De:</font>"&vbcrlfmensaje=mensaje & " <a href=mailto:"& request.form("email")&">"mensaje=mensaje & request.form("nombre")&" </a><br>"&vbcrlfmensaje=mensaje & "<font color=#FF0000>Para:</font> "&vbcrlfmensaje=mensaje & request.form("amigo")&"("&request.form("emailamigo")&")"&vbcrlfmensaje=mensaje & " </td> </tr></table><p>&nbsp;</p> </td></tr>"&vbcrlfmensaje=mensaje & " </table>"&vbcrlfmensaje=mensaje & " </center>"&vbcrlf

Mail.Body = mensajeMail.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">Código 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 leído 18,389 veces

Un Sistema de postales Virtuales en ASP (III)

Módulos de la aplicaciónApuntes sobre el código:

DEFAULT.ASP Como comentamos anteriormente, el código hace una doble función, si al capturar

la variable tema a través de request.form("tema") esta esta vacía, mostramos un formulario para poder elegir el tema de la postal, en caso contrario, mostramos todas la imágenes sobre el tema elegido.

En las variables urlfoto y urlminiatura guardamos la dirección relativa de los directorios que contienen nuestras imágenes

CONFIRMAPOSTAL.ASP

En este modulo comprobamos que ninguna de las variables recibidas desde default.asp esta vacía, si alguna lo esta, emitimos un mensaje de error y no mostramos la previsualización de la postal.

Utilizamos la función comentarios=replace(request.form("comentarios"),chr(10),"<br>") para sustituir los saltos de línea 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 conexión debe de ir en una sola línea, aqui esta cortada por diseñoConna.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">Código 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.formfor indice=1 to request.form(v_entrada).countif request.form(v_entrada)(indice) = "" thenmal=1%><font color="#FF00FF">El campo <%=v_entrada%> no puede estar vacio</font><br>

<%end ifnextnext

if mal <> 1 thenSet Conna = Server.CreateObject("ADODB.Connection")'nota: la cadena de conexión debe de ir en una sola línea, aqui esta cortada por diseñoConna.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,connaurl=rs("url")rs.closeset 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> envíala</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">Código 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 leído 17,694 veces

Un Sistema de postales Virtuales en ASP (IV)

Módulos de la aplicaciónApuntes sobre el código:

ENVIARPOSTAL.ASP En las variables urlfoto y urlminiatura guardamos la dirección ABSOLUTA de los

directorios que contienen nuestras imágenes. Tener en cuenta que cuando alguien reciba la postal, todas las referencias a objetos de la red (URL's, tanto de imágenes como hipervinculos) que se incluyan en esta deberán ser en ABSOLUTO (http://www.tuweb.com/....) , de otra forma no podría visualizarlas

Tendréis 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 = strHostMail.From = "[email protected]"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 = tituloMail.IsHTML = True

mensaje="<html><head>"mensaje=mensaje & "<title>Una E-postal para ti</title>"&vbcrlfmensaje=mensaje & " </head><body><div align=center>"&vbcrlfmensaje=mensaje & "<center> "&vbcrlfmensaje=mensaje & "<table border=0 width=652 " mensaje=mensaje & " background=http://www.tuweb.com/images/rayasgrises.gif> "&vbcrlfmensaje=mensaje & " <tr>"&vbcrlfmensaje=mensaje & " <td width=93 bgcolor=#66CCFF>&nbsp;</td>"&vbcrlfmensaje=mensaje & " <td width=543>&nbsp;"&vbcrlfmensaje=mensaje & " <table border=0 cellspacing=5 bgcolor=#FFFFFF>"&vbcrlfmensaje=mensaje & " <tr> <td ><img border=0 src="&urlfoto&request.form("url")&">"&vbcrlfmensaje=mensaje & " <td valign=top>"&vbcrlfmensaje=mensaje & " &nbsp;&nbsp;&nbsp;<i><font color=#FF00FF size=7>"mensaje=mensaje & inicial&"</font></i>"&comentarios&vbcrlfmensaje=mensaje & "</td> </tr>"&vbcrlfmensaje=mensaje & " <tr>"&vbcrlfmensaje=mensaje & "<td colspan=2> "&vbcrlfmensaje=mensaje & " <font color=#FF0000>De:</font>"&vbcrlfmensaje=mensaje & " <a href=mailto:"& request.form("email")&">"mensaje=mensaje & request.form("nombre")&" </a><br>"&vbcrlfmensaje=mensaje & "<font color=#FF0000>Para:</font> "&vbcrlfmensaje=mensaje & request.form("amigo")&"("&request.form("emailamigo")&")"&vbcrlfmensaje=mensaje & " </td> </tr></table><p>&nbsp;</p> </td></tr>"&vbcrlfmensaje=mensaje & " </table>"&vbcrlfmensaje=mensaje & " </center>"&vbcrlf

Mail.Body = mensajeMail.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">Código 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 habíais pedido un articulo sobre el desarrollo de una aplicación de envió de postales, bien, pues aquí lo tenéis.El código 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 código, 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 estándar y además, porque nos permite enviar correo con formato HTML. Tienes todos los procedimientos de configuración y uso de ASPEmail en http://www.asptutor.com/asp/vart.asp?id=55 Nuestra aplicación va a costar de una estructura de directorios para almacenar las imágenes,  una base de datos y tres módulos asp. 

Vamos a empezar describiendo la estructura de directorios que vamos a crear.Situaremos nuestra aplicación de e-postales e un directorio que denominaremos "postales" (aquí situaremos nuestros módulos .asp) a su vez crearemos u subdirectorio de "postales" llamado "images" para situar los imágenes que enviaremos en nuestras postales. Debajo de "images" crearemos el directorio "miniaturas" destinado a contener copias reducidas de todas nuestras imágenes a fin de agilizar la carga cuando mostremos los catálogos de imágenes. Nuestra estructura final debería quedar asi: