tienda virtual php_mysql

59
Informe Técnico Desarrollo de Aplicaciones Web para comercio electrónico. Tiendas Virtuales Tienda Virtual: H2M (Hogar 2ª Mano)

Upload: jubacalo

Post on 04-Jun-2015

2.900 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tienda virtual php_mysql

Informe Técnico

Desarrollo de Aplicaciones Web para comercio electrónico. Tiendas Virtuales

Tienda Virtual: H2M (Hogar 2ª Mano)

Page 2: Tienda virtual php_mysql

1

Introducción Como trabajo del curso se ha realizado una pequeña tienda de comercio electrónico denominada H2M (Hogar 2ª Mano), (en adelante H2M) cuyo objetivo es facilitar a cualquier familia una herramienta para la venta online de artículos del hogar de segunda mano. H2M se divide en dos bloques esenciales, por un lado una parte cliente dirigida a los potenciales compradores y por otro una parte de administración reservada a usuarios propietarios de la tienda. Parte Cliente de la Aplicación Contiene la operativa básica para que un potencial comprador pueda realizar un pedido con los artículos que le interesen de aquellos ofertados. Consta de las secciones:

� Catálogo: El catálogo agrupa los artículos en distintas categorías las cuales a su vez estarán desglosadas en subcategorías.

� Carrito: En esta sección el cliente podrá ver en todo momento aquellos artículos seleccionados del catálogo y que de forma provisional desea comprar. Al igual que una cesta de la compra tradicional se podrán agregar, eliminar, incrementar o decrementar los artículos almacenados en el carrito.

� Registro: Para que el cliente pueda tramitar un pedido necesita estar registrado como tal en la base de datos de clientes de la tienda. El registro se realiza una vez facilitando los datos de acceso y de facturación y tras el proceso el cliente obtiene una cuenta de usuario (email,contraseña).

� Pedido: En la tramitación de un pedido y una vez que el cliente se identifica con los datos de su cuenta obtenida en el proceso de registro, se genera automáticamente un pedido asociando el carrito con los artículos a los datos del cliente. Los datos de facturación (dirección de envío del pedido) serán en principio los que facilitó el cliente en el registro pero podrán ser modificados de forma independiente para cada pedido.

Queda pendiente para un futuro implementar otras secciones como una sección de ofertas, una sección de contacto donde los clientes podrán comunicarse con los responsables de la tienda para sugerencias, quejas o solicitar información sobre algún pedido, una sección donde se identifiquen los responsables de la tienda y otras muchas que por falta de tiempo no se han realizado. Parte de Administración de la Aplicación Se trata de una zona restringida a la que únicamente podrán acceder, previa identificación, usuarios considerados administradores de tienda y que deberán estar dados de alta como tales en la base de datos. En principio sólo está operativa de forma incompleta la sección de pedidos en la que un administrador podrá ver y realizar búsquedas sobre los pedidos realizados por los clientes. Lógicamente la administración de una tienda virtual conlleva varias tareas como seguimiento de pedidos (en proceso, anulados, pagados,...), gestión de productos (alta, bajas y modificaciones tanto de categorías como de artículos), gestión del correo de clientes (contacto), gestión de cuentas de administración y muchas otras que por el momento no se han implementado dado el tamaño de la tarea.

Page 3: Tienda virtual php_mysql

2

Estructura del Programa

H2M

PARTE CLIENTE http://localhost/TVProjectV00/cliente/index.php

HOME CATALOGO CARRITO

TRAMITAR PEDIDO (Validar Cliente)

REALIZAR PEDIDO LISTAR PRODUCTOS

BÚSQUEDA SENCILLA

BÚSQUEDA AVANZADA

DETALLE DEL PRODUCTO

Añadir Compra

INCREMENTAR DECREMENTAR PRODUCTOS

BORRAR PRODUCTO

VACIAR CARRITO

Tramitar Pedido

REGISTRO CLIENTE

¿Cliente Registrado?

DATOS DE ACCESO

DATOS DE ENVÍO

N

S

ACTUALIZAR PEDIDO

CANCELAR PEDIDO ENVÍO

CONFIRMAR PEDIDO

Page 4: Tienda virtual php_mysql

3

PARTE SERVIDOR http://localhost/TVProjectV00/admon/admin.php

H2M

VALIDAR ADMINISTRADOR (Login, Password)

¿Existe usuario?

GESTIÓN DE PEDIDOS GESTIÓN DE CORREO (Sin implementar)

N

S

GESTIÓN DE ARTÍCULOS (Sin implementar)

GESTIÓN DE CLIENTES (Sin implementar)

GESTIÓN DE CUENTAS (Sin implementar)

Cerrar Sesión

Page 5: Tienda virtual php_mysql

4

Arquitectura de la Aplicación sobre la base de una posible ruta de navegación

A continuación se muestra un ejemplo de funcionamiento de la aplicación tomando como base una posible compra realizada por un cliente. La ruta descrita en el proceso de compra servirá para explicar los diagramas de estructura vistos anteriormente y describir la operativa de la aplicación a través de sus interfaces (guía de usuario). Proceso de Compra En la parte cliente de la aplicación un usuario podrá seleccionar uno o varios artículos de su interés de un catálogo, llenar su cesta de la compra (carrito) con dichos artículos y realizar un pedido con su compra. Es requisito para que el usuario pueda tramitar un pedido estar registrado en la base de datos de clientes donde, una vez finalizado el proceso de registro se le facilitará una cuenta de usuario (email,contraseña) que serán los datos de identificación que necesitará para tramitar los pedidos. Catálogo de Artículos Al catálogo de artículos se accede pinchando en la opción correspondiente del menú horizontal principal. Se compone de un menú vertical izquierdo que contiene un árbol de categorías de productos desglosadas a su vez en subcategorías. Por el momento sólo se ha implementado la sección [OCIO Y CULTURA] con las subcategorías <libros> y <música> puesto que el proceso de codificación de las restantes categorías sería similar.

Para cada tipo de artículo, se muestra, en principio, un listado completo ordenado por subcategoría. El resultado se mostrará paginado, en este caso el tamaño de artículos por página es de 3. Cada ítem del listado contiene un pequeño resumen informativo sobre el artículo que podrá ampliarse pinchando en el vínculo <Leer más>.

Page 6: Tienda virtual php_mysql

5

La página de detalle de un artículo ofrece una descripción más amplia del producto.

Para agilizar la localización de un artículo(s) determinado(s) dentro de un tipo de producto, se han implementado unas herramientas de búsqueda que permiten filtrar los resultados por un cierto(s) criterio(s).

Cata tipo de producto contará con un buscador genérico que buscará una cadena de texto en varios de los campos que describen al artículo y un buscador más específico que nos permitirá afinar más la búsqueda. Buscador Genérico (ejemplo para la subcategoría <Libros>) Buscará la cadena de texto (criterio) escrita en la caja de texto de búsqueda en varios de los campos descriptivos del <Libro> como isbn, título del libro, autor, editorial, descripción resumida. De esta forma las búsquedas serán más toscas (mayor cantidad de resultados) cuanta menos información tengamos del libro que queremos localizar puesto que la cadena de búsqueda será más ambigua, y más precisas a medida que el criterio de búsqueda sea más específico. Por ej. si como criterio de búsqueda ponemos el nombre de un autor, se mostrarán todos los libros disponibles de ese autor, pero si ponemos el isbn de un libro localizará concretamente el libro que se corresponda con ese isbn puesto que es único. Buscador Específico (ejemplo para la subcategoría <Libros>) En este caso podemos realizar búsquedas de libros por tema y subtema.

Page 7: Tienda virtual php_mysql

6

Las dos listas, tema y subtema, están en correspondencia de forma que si en el primer combo seleccionamos un tema concreto (por ej. Informática), el segundo combo cargará los subtemas relacionados (Base de Datos, Programación), lo cual nos permitirá filtrar un conjunto de libros que sea de nuestro interés. Carrito (Cesta de la Compra) El carrito de la compra permite al cliente ir almacenando aquellos artículos que son de su interés en el proceso de compra (navegación y selección de productos en catálogo). Esta herramienta permite al cliente visualizar en todo momento un listado agrupado de los productos que desea comprar y realizar ciertas operaciones sobre ese listado:

a) Incrementar o decrementar las unidades de un producto. b) Eliminar un artículo concreto. c) Vaciar la Cesta cancelando la lista temporal.

Para cada actualización sobre el carrito se recalcularán las cantidades parciales y totales a pagar.

Tramitación del Pedido Una vez que el cliente está satisfecho con los artículos que desea comprar puede comenzar a tramitar su pedido pulsando en el botón de comando <Tramitar Pedido> del carrito.

En este punto pueden ocurrir dos cosas, o bien que el cliente ya esté registrado con lo cual para seguir adelante en el proceso de tramitación del pedido bastaría con identificarse mediante su cuenta de acceso (email y contraseña), o bien que se trate de un nuevo cliente que deberá registrarse antes de poder continuar con el proceso.

Page 8: Tienda virtual php_mysql

7

En el proceso de registro el usuario tendrá con cumplimentar un formulario que consta de dos bloques principales, sus datos de acceso (email y contraseña) y los datos de facturación que incluye la identificación de la empresa o profesional y su dirección. Esta dirección será tomada por defecto como dirección de envío para los pedidos pero podrá ser modificada de forma independiente para cada pedido que realice este cliente.

Una vez que el cliente está registrado puede continuar con la tramitación del pedido identificándose con los datos de acceso obtenidos.

Tras la identificación el usuario accede a la información de su pedido compuesto en principio por los datos de compra junto con los datos de facturación.

Page 9: Tienda virtual php_mysql

8

Los datos de facturación facilitados en el proceso de registro podrán ser ahora modificados si así lo desea el cliente. También se podrá seleccionar la forma de pago (contrareembolso o ingreso en cuenta) y el tipo de envío (correo o mensajería). De esta elección, junto con el peso del artículo dependerá el cálculo de los gastos de envío que se sumarán al coste del pedido. El cliente puede realizar tres operaciones sobre un pedido:

a) Cancelarlo, con lo cual se anulará el pedido y su cesta de la compra. b) Actualizar Pedido, pudiendo modificar los datos de envío, forma de pago y tipo de envío. c) Aceptar Pedido, con lo cual el pedido se procesará y será guardado en la base de datos para su posterior

seguimiento.

Queda pendiente en este punto implementar el envío automático al email del cliente de un mensaje de correo con la información de su pedido, previa comprobación de existencias.

Page 10: Tienda virtual php_mysql

9

Administración de la Tienda

A la parte de administración de la tienda se accede por una URL distinta a la de la parte cliente ya que se ha preferido, por seguridad, no habilitar en la parte cliente ningún acceso a este área restringida, de forma que no haya conexión entre ambas zonas. Por tanto accedemos a la zona de gestión de la tienda mediante la URL: http://localhost/TVProjectV00/admon/admin.php

Lo que nos sitúa en la página de control de acceso de usuarios administradores. Para que un usuario sea validado tendrá que estar dado de alta en la tabla <administradores> de la base de datos. Tras la identificación accedemos al Panel de Control de Gestión de la tienda, desde donde se podrán administrar distintos procesos como seguimiento de pedidos, correo de clientes, dar de alta-modificar-borrar productos, gestión de cuentas de clientes y de administradores de tienda.

Page 11: Tienda virtual php_mysql

10

A cada área de gestión se accederá a través del botón de comando correspondiente situado en el menú vertical izquierdo. Tal como se comentó anteriormente, se ha implementado por el momento parte de la gestión de pedidos, el resto queda pendiente de implementación ya que requiere una enorme cantidad de tiempo. Implementación de la Base de Datos La figura muestra el modelo relacional de base de datos que da soporte a la tienda. Como se observa, por el momento está compuesta por seis tablas relacionadas (integridad referencial). La base de datos tendrá que ampliarse a medida que se dote de más funcionalidades a la tienda, pero por el momento se corresponde con la parte implementada de la aplicación.

Explicación del modelo: Por un lado están las tablas que sirven de almacén para los productos de la tienda, <categorias> y <articulos>. Puesto que una categoría puede contener varios artículos su relación es de 1:n. El árbol de categorías y subcategorías se almacena en la tabla <categorias> considerando para cada nueva categoría la categoría padre (idCategoriaPadre) a la que pertenece. Respecto a la tabla de artículos se ha optado por el momento por una sola tabla para almacenar los distintos tipos de artículos. Esta tabla contiene unos campos que son comunes a todo tipo de artículo (nombre, descripción breve, descripción detallada, precio, imagen pequeña, imagen ampliada, peso, iva, existencias, conjunto, subconjunto, etc) y otros campos genéricos (itemText01,itemText02,itemMemo01,itemNum01,etc) que contendrán aquellos campos de cada tipo de artículo que sean distintos de los comunes. Respecto a los pedidos un cliente podrá realizar varios pedidos 1:n y un pedido a su vez contiene varias lineas de pedido (varios artículos). Por último la tabla de <administradores> contiene las cuentas de usuario de los gestores de la tienda virtual.

Page 12: Tienda virtual php_mysql

11

Listado del programa (manual del desarrollador) A continuación se comentan los aspectos más interesantes de los ficheros del programa. La estructura de ficheros de la aplicación sigue un modelo similar al del libro de texto del curso. El conjunto de ficheros que dan funcionalidad a la parte cliente y de administración, están agrupados en sus respectivas carpetas <cliente> y <admon>. Las otras dos carpetas importantes <biblioteca> y <css> son de uso común a ambas zonas.

Parte Cliente -> Carpeta <cliente> index.php Este fichero implementa la página <Home> o de inicio de la aplicación. Los aspectos más interesantes son por un lado la visualización de la fecha y hora que se actualiza automáticamente sin necesidad de refrescar la página. El código javascript está implementado en el fichero <fecha-hora.js> (archivo encontrado en internet) donde básicamente el refresco de hora se realiza mediante la función setTiemout <setTimeout("horaActual()",1000)>. Por otro lado se implementa el menú de navegación principal de la aplicación. Se trata de un menú horizontal implementado con una lista html a la que se le ha aplicado estilos css para que la lista tome aspecto horizontal y cada ítem del menú cambie de color al situar el ratón encima (ver estilos para menú de navegación horizontal del archivo <estilos.css>).

Page 13: Tienda virtual php_mysql

12

index.php

catalogo.php Este fichero implementa el catálogo de artículos con sus distintos tipos de productos. Como aspectos importantes está por una parte el árbol de categorías y subcategorías de artículos cuya estructura se muestra a continuación:

Page 14: Tienda virtual php_mysql

13

La implementación de esta estructura se realiza mediante una función recursiva. Partiendo de la categoría raíz (0), la función va recorriendo y entrando de forma recursiva en cada nivel y subnivel del árbol.

Por otro lado la distinción entre los distintos tipos de artículos se realiza mediante una estructura de tipo switch-case switch($_REQUEST["idCategoria"]), de forma que dependiendo de la categoría que se haya pasado como parámetro ejecutará el código correspondiente. Por el momento sólo se han implementado los casos para las subcategorías 45 (libros) y 46 (discos) de la categoría <OCIO Y CULTTURA>, siendo el proceso repetitivo para las demás categorías. La operativa para cada tipo de artículo se implementa en su clase correspondiente con sus propiedades y métodos. Por tanto la funcionalidad para la categoría libros estará basada en un objeto de la clase libro, los discos en un objeto de la clase disco y así sucesivamente. Si tomamos como ejemplo el tipo de artículos <libros> (los procesos son similares para cualquier otro tipo de producto), tenemos que en el catálogo se dan ciertos tipos de operaciones comunes: a) Si no existe ningún tipo de filtrado, se mostrará un listado completo ordenado primero por tema y luego por subtema. El resultado aparecerá paginado con un tamaño de tres artículos por página (el tamaño de paginación es configurable). La paginación se basa en la cláusula LIMIT utilizada para restringir el número de registros retornados por el comando SELECT tal como se implementa en el método siguiente de <class libro>.

Page 15: Tienda virtual php_mysql

14

b) Existen dos tipos de filtros, un buscador genérico y un buscador avanzado que para el caso de <libros> se implementan en el código siguiente: Buscador genérico: Corresponde a un método de <class libro> y básicamente busca un patrón (cadena de texto) en varios campos del artículo de la categoría correspondiente.

Buscador Avanzado: Para el caso de <libros> el buscador avanzado se basa en un par de combos correlacionados de forma que el tema seleccionado en el primer combo carga las materias relacionadas en el segundo combo. Los combos se cargan mediante los métodos de <class libro>, getTemas() y getMaterias($Tema). Una vez que seleccionamos tema y subtema en los combos, el filtrado se realiza a través del método de <class libro> siguiente:

Page 16: Tienda virtual php_mysql

15

catalogo.php

Page 17: Tienda virtual php_mysql

16

libro_descripcion.php – disco_descripcion.php – etc... Los ficheros de descripción de un artículo determinado muestran un zoom o descripción más detallada de un artículo concreto seleccionado de un listado. Los listados de productos muestran de forma resumida las características más importantes de un artículo, sin embargo podremos ampliar esta información mediante los ficheros objeto_descripción.php que ayudarán al cliente a decidir de forma más exacta si le interesa o no el producto antes de añadirlo a la cesta de la compra.

Page 18: Tienda virtual php_mysql

17

libro_descripcion.php

Como se observa, básicamente y para el caso de <libro> (sería similar para cualquier otro tipo de objeto), se recupera mediante el método leerLibroParam($idLibro) de <class libro> el libro del que queremos hacer un zoom y lo mostramos mediante la función mostrarLibroZoom($arrayLibros).

Page 19: Tienda virtual php_mysql

18

carrito.php El carrito o cesta de la compra basa su operativa en un objeto de la clase <class carrito>. En este caso se ha optado por implementar el carrito de forma distinta a la expuesta en el libro de texto, ya que en lugar de utilizar una clase para cada tipo de artículo he preferido utilizar una estructura de arrays tal como se muestra a continuación.

De esta forma se crea un array para cada campo del artículo en el carrito. Cada vez que se inserta un nuevo artículo se desplaza el cursor una posición en el conjunto de arrays. La clase carrito contiene métodos que permiten:

a) Añadir un nuevo artículo. Cada vez que se añade un artículo es necesario llamar a los métodos para recalcular los totales, tanto parciales (de línea) como finales.

b) Eliminar un nuevo artículo: Hay que destacar que el borrado de un artículo es un borrado lógico (se marca con 0 el objeto eliminado) y por tanto no se borra físicamente dicho producto.

c) Como consecuencia de lo anterior se necesita un método que recuente la cantidad de artículos real, discriminando aquellos marcados con 0.

0 1 2 n ------------------------------

0 1 2 n ------------------------------

0 1 2 n ------------------------------

0 1 2 n ------------------------------

------------------------------------------------------------

------------------------------------------------------------

idArticulo (array)

nombre (array)

precioUnidad(array)

Articulo1

Articulo2

ArticuloN

Cursor ($num_articulos)

Page 20: Tienda virtual php_mysql

19

claseCarrito.php

Page 21: Tienda virtual php_mysql

20

Otro aspecto muy importante respecto al carrito, es que el objeto de la clase carrito que se crea se almacena en una variable de sesión. Esto nos permite disponer del carrito desde cualquier parte de la aplicación, tanto para seguir añadiendo artículos desde cualquier parte del catálogo, como posteriormente para añadir a los datos del cliente cuando se realiza un pedido.

La variable de sesión carrito se destruirá cuando el usuario vacía su carrito o al aceptar un pedido ya que los datos se vuelcan a la base de datos.

Page 22: Tienda virtual php_mysql

21

carrito.php

Page 23: Tienda virtual php_mysql

22

registroCliente.php Como se comentó en la descripción general del programa, para que un cliente pueda tramitar un pedido, es necesario que esté dado de alta en la base de datos de clientes. En este proceso el usuario o empresa facilita unos datos de acceso y los datos de facturación o dirección de envío. Finalizado el proceso de alta el cliente obtiene una cuenta de usuario (email, password) que le permitirá por un lado identificarse y por otro que se carguen sus datos por defecto en la tramitación de un pedido. El fichero consta de un formulario dividido en dos secciones, datos de acceso y datos de facturación, que un cliente particular o una empresa han de cumplimentar. Otro aspecto a destacar es la validación de datos insertados en el formulario. Esta validación se realiza mediante JavaScript, comprobando que se rellenan los campos obligatorios, que el email tiene una sintaxis mínimamente correcta, que la clave y su confirmación son coincidentes, etc. Si todo es correcto se envían los datos del formulario y a través del método addCliente($clienteValues) de <class cliente>, se añade el nuevo cliente a la base de datos mediante una sentencia INSERT.

Page 24: Tienda virtual php_mysql

23

registroCliente.php

Page 25: Tienda virtual php_mysql

24

Page 26: Tienda virtual php_mysql

25

Page 27: Tienda virtual php_mysql

26

tramitarPedidoLogin.php En este fichero es donde se identifica el cliente (1ª fase del proceso de tramitación) para poder tramitar su pedido. Si no está registrado (cliente nuevo) se le facilita un enlace para acceder a la página de registro. Se trata de un formulario de autenticación que valida los datos de entrada. Se comprueba que no se deje ningún campo en blanco, que la sintaxis del email sea mínimamente correcta, que exista el usuario y que su clave coincida con la almecenada en la base de datos. Tras la validación del formulario se mostrará un listado con los errores en caso de existir o bien si todo es correcto se pasará a la siguiente fase de la tramitación. Un aspecto importante a tener en cuenta es que si el cliente se valida con éxito se crea una variable de sesión $_SESSION["autenticado"]= "SI". Esta variable se usa para evitar que un usuario pueda acceder por URL a páginas que requieren que previamente se haya identificado. //COMPRUEBA QUE EL USUARIO ESTA AUTENTICADO======================================= if ((!isset($_SESSION["autenticado"])) or ($_SESSION["autenticado"] != "SI")) { header ("Location: index.php"); }

Page 28: Tienda virtual php_mysql

27

tramitarPedidoLogin.php

Page 29: Tienda virtual php_mysql

28

finalizarPedido.php – grabarPedido.php En estos fichero es donde se crea el pedido anexando los datos de la cesta de la compra a los datos del cliente. Por defecto se cargan los datos de facturación que el cliente facilitó cuando se registró. El cliente tiene la posibilidad de actualizar los datos de envío para el pedido en curso, seleccionar el tipo de envío y la forma de pago. En función del tipo de envío y peso del artículo se calcularán los gastos de envío mediante un algoritmo. El pedido se crea basándose en un objeto de <class pedido> y puesto que existe integridad referencial en la base de datos entre las tablas <pedidos> y <lineaPedido>, es necesario insertar primero los datos de pedido y luego los datos del carrito que conforman las lineas de pedido.

Page 30: Tienda virtual php_mysql

29

finalizarPedido.php

Page 31: Tienda virtual php_mysql

30

Page 32: Tienda virtual php_mysql

31

Page 33: Tienda virtual php_mysql

32

grabarPedido.php

Page 34: Tienda virtual php_mysql

33

Page 35: Tienda virtual php_mysql

34

Parte de Administración -> Carpeta <admon> admin.php En este fichero se valida que el usuario administrador que pretende acceder a la zona de gestión de la tienda esté dado de alta en la base de datos en la tabla de administradores (login,passwd). Si la autenticación es correcta, se crea y activa la variable de sesión $_SESSION["auth_admin"]= 1. Esta variable se utilizará posteriormente en todas las demás páginas de la zona de administración para evitar accesos indebidos por URL a páginas que requieren de una previa identificación.

//COMPRUEBA QUE EL USUARIO ADMINISTRADOR ESTA AUTENTICADO if ((!isset($_SESSION["auth_admin"])) or ($_SESSION["auth_admin"] != 1)) { header ("Location: admin.php"); }

Page 36: Tienda virtual php_mysql

35

admin.php

Page 37: Tienda virtual php_mysql

36

Page 38: Tienda virtual php_mysql

37

admin_ControlPanel.php Se ha implementado el esqueleto del Panel de Control desde donde se gestionarán todas las operaciones de administración de la tienda (Correo Entrante, Clientes, Administradores, Seguimiento de Pedidos, Gestión de Artículos,...). admin_ControlPanel.php

Page 39: Tienda virtual php_mysql

38

Page 40: Tienda virtual php_mysql

39

Page 41: Tienda virtual php_mysql

40

Se utiliza una estructura de tipo switch-case (switch($_SESSION['OPCION'])), para que se interprete el código de la operación de gestión seleccionada en la botonera del menú izquierdo. La sección de pedidos está implementada en parte, y por el momento se pueden filtrar pedidos por empresa o profesional, restringiendo además por el estado del pedido (En Proceso, Anulado, Pagado, Cualquier Estado).

Page 42: Tienda virtual php_mysql

41

Ficheros de Biblioteca y configuración-> Carpeta <biblioteca> Esta carpeta contiene el fichero <clases.php> que agrupa todas las clases utilizadas en la aplicación a excepción de la clase carrito que se implementa en un fichero aparte. Las clases libro, disco, cliente, pedido, administrador, contienen métodos muy intuitivos y prácticamente su funcionalidad se autoexplica por el nombre del método, por lo que no considero necesario describir cada uno de ellos. Una clase especial es <class conexion> que nos permite conectarnos a la base de datos de la tienda facilitando los parámetros: servidor, base de datos, usuario y contraseña. Esta clase nos permite crear en cualquier momento y en cualquier parte de la aplicación un objeto de la misma para interactuar con la base de datos. La clase además implementa el método, public function consulta($consulta), que nos permite lanzar una consulta SQL a la base de datos devolviendo el resultado de la misma. El fichero de funciones <funciones.php> agrupa una serie de funciones donde la mayor parte de ellas son funciones de interfaz que sirven para mostrar resultados (mostrar libros, mostrar discos, mostrar el detalle de un libro o de un disco, visualizar el carrito, etc). También contiene algunas funciones de validación y las funciones para crear el árbol de categorías y para calcular los gastos de envío de un pedido en función del peso del artículo y el tipo de envío seleccionado. El fichero <configurador.php> contiene la definición de los parámetros de configuración de la aplicación de forma centralizada. Por el momento están definidas las rutas a las carpetas de imágenes y el tamaño de página utilizado por el paginador de artículos. <?php //Ruta a la imágines de la tienda virtual DEFINE("PATHIMGTV","/TVProjectV00/imagenes/imgTV/"); DEFINE("PATHIMGAPP","/TVProjectV00/imagenes/imgAPP/"); //Bloque de páginas por página (Paginador) DEFINE("TAMANO_PAGINA",3); ?>

Page 43: Tienda virtual php_mysql

42

clases.php

Page 44: Tienda virtual php_mysql

43

Page 45: Tienda virtual php_mysql

44

Page 46: Tienda virtual php_mysql

45

Page 47: Tienda virtual php_mysql

46

Page 48: Tienda virtual php_mysql

47

funciones.php

Page 49: Tienda virtual php_mysql

48

Page 50: Tienda virtual php_mysql

49

Page 51: Tienda virtual php_mysql

50

Page 52: Tienda virtual php_mysql

51

Page 53: Tienda virtual php_mysql

52

Page 54: Tienda virtual php_mysql

53

estilos.css

Page 55: Tienda virtual php_mysql

54

Page 56: Tienda virtual php_mysql

55

Page 57: Tienda virtual php_mysql

56

Page 58: Tienda virtual php_mysql

57

Page 59: Tienda virtual php_mysql

58

Herramientas utilizadas para el desarrollo del programa

� Entorno Completo de Desarrollo: XAMPP para Windows Version 1.6.8

� Editor HTML: Macromedia DREAMWEAVER 8

� PHP Version 5.2.6

� Gestor Web de Bases de Datos: phpMyAdmin - 2.11.9.2

� Servidor Web: Apache/2.2.9 (Win32)

� Servidor de Base de Datos (MYSQL): Versión 5.0.67-community-nt

� Aplicación para diseño de Bases de Datos: DB Designer 4

Conclusiones, Limitaciones del Programa y Reflexiones finales Las limitaciones del programa se deben sobre todo a la falta de tiempo para el desarrollo completo del mismo. A continuación se enumeran algunos aspectos a completar en un futuro:

1) Control automático de existencias de artículos. 2) Crear una sección de productos en oferta. 3) Permitir comunicación entre clientes y responsables de la tienda a través de mensajes de correo. 4) Mejora de la gestión de excepciones y errores. 5) Envío automático de email al cliente con información del pedido que ha realizado. 6) Mejorar los aspectos de seguridad creando usuarios mysql con privilegios limitados. 7) Implementar la forma de pago mediante PayPal. 8) Completar la parte de Administración de la tienda. 9) Implementar SSL. 10) Y otros muchos aspectos,...

Respecto al curso el material del mismo es muy interesante, y en la parte negativa resaltar la poca actividad que ha tenido el foro (falta de dinamización).