miércoles, 13 de octubre de 2010

Proyecto medio curso

Como proyecto de medio curso elegí hacer un inventario al que los usuarios "autorizados" pudieran hacer las modificaciones que quisieran a la base de datos.
Esta es la demostración de mi página:


Mi proyecto consta de dos bases de datos una tiene registrados a los usuarios que pueden acceder al sistema de inventarios y la otra base de datos son los productos que podemos modificar, eliminar, agregar y consultar.

Tiene la página principal hecha en html que consta de un formulario con campos de texto para teclear el nombre y la clave del usuario.

Y 7 programas en python, que es el de entrar(válida al usuario con la contraseña correcta), opciones(da a elegir entre agregar, eliminar, modificar o consultar productos), agregar, eliminar, modificar, consultar y consultar por nombre los productos.

Voy a explicar algunas partes de código que considero importantes de mi proyecto:

Primero que nada la página "principal" que es la única página estática que utilizo, consta de un formulario en el cual me piden nombre de usuario y contraseña, que son los que están guardados en la base de datos "usuarios".
Esta es la parte del formulario:

#Formulario pagina prinicipal




Los datos del formulario son enviados a "entrada.py" esta función se encarga de verificar si el usuario y la contraseña es correcta, si no se introduce alguno de esos datos al formulario o si el usuario o contraseña es incorrecta manda un mensaje de error según sea el caso.
Algo de código:
if entrada.has_key("usuario") and entrada["usuario"].value != "" and entrada.has_key("pasw"):
f = open('usuarios.txt')
existe = 0
print "
"
print "

Accediendo como %s\n

" % entrada["usuario"].value
for line in f:
linea = line.split(',')
usua = linea[0]
contr = linea[1]
if entrada["usuario"].value == usua and entrada["pasw"].value == contr:
existe = 1
print "

Elige alguna opcion:

"
print "
"
print "Agregar productos"
print "Modificar productos"
print "Eliminar productos"
print "Consultar productos"
print ""
print "
"
print "
"
Si los datos fueron introducidos correctamente se abre la siguiente página que es la que muestra las opciones agregar, modificar, eliminar o consultar productos.
En esta parte es en dónde se decide que acción se va a realizar, es decir cual sera el siguiente archivo.py que se va a generar.
if ent.has_key("opcion") and ent["opcion"].value != "":
if ent["opcion"].value == "1":
print "

Agregar productos

"
print "
"
print "
"
print ""
print ""
print ""
print ""
print ""
print ""
print "
"
print "
"

elif ent["opcion"].value == "2":
print "

Modificar algún producto

"
print "
"
print "
"
print ""
print ""
print ""
print "
"
print "
"

elif ent["opcion"].value == "3":
print "

Eliminar productos

"
print "
"
print "
"
print ""
print ""
print""
print"
"
print "
"

elif ent["opcion"].value == "4":
print "

Consultar

"
print "
"
print "
"
print "Por nombre"
print "Ver toda la base de datos"
print ""
print "
"
print "
"
En la opción agregar es en dónde se guarda el producto nuevo en la base de datos, primero que nada tenemos condiciones para controlar que siempre que se registre un producto a fuerzas se tenga que escribir su nombre y código, y los demás campos si pueden estar vacíos ya que mi programa en python permite escribir los campos vacíos como "no disponibles".
Ya que se cumplieron esas condiciones se abre la base de datos con la función f=open("base_datos.txt", "a"), es "a" para que los productos agregados se guarden debajo de los que ya existen, o si la base no existe crea una. Y se escribe la linea con las características del producto.
#Validar la entrada y dar un valor a los campos vacios
ent = cgi.FieldStorage()
if ent.has_key("nombre") and ent.has_key("codigo"):
if ent.has_key("cantidad") == 0:
cantidad = 'NoDisponible'
else:
cantidad = ent["cantidad"].value
if ent.has_key("marca") == 0:
marca = 'NoDisponible'
else:
marca = ent["marca"].value
if ent.has_key("precio") == 0:
precio = 'NoDisponible'
else:
precio = ent["precio"].value

#Se guarda la nueva linea en la base
f=open("base_datos.txt", "a")
f.write("%s,%s,%s,%s,%s,\n" % (ent["nombre"].value, ent["codigo"].value, cantidad, marca, precio))
f.close()

Después la función para eliminar productos, primero que nada válida que exista el producto con la clave introducida por el usuario si es así elimina el producto de nuevo abriendo la base de datos aunque esta vez solo como lectura, declaro una variable con el nombre de contenido que va a ser en la que se va a estar guardando el contenido del archivo si es que no coincide con el nombre y código del producto que se quiere eliminar. Para identificar que campos pertenecen a el nombre, código, marca etc., utilicé la función linea = line.split(',') que indica que los campos están separados por comas y para saber cual es cual escribí nombre = linea[0], código = linea[1], etc. Bueno ya que la variable contenido guardo todo menos la linea que corresponde al producto que se quiere eliminar ahora se abre un archivo como "w", con el mismo nombre para sobreescribir en el lo que ha guardado "contenido".
Algo de código:
entrada = cgi.FieldStorage()
existe = 0
if entrada.has_key("nnombre") and entrada["nnombre"].value != "" and entrada.has_key("ccodigo"):
f = open('base_datos.txt')
contenido = ''
for line in f:
linea = line.split(',')
nombre = linea[0]
codigo = linea[1]
cantidad = linea[2]
marca = linea[3]
precio = linea[4]
if entrada["nnombre"].value == nombre and entrada["ccodigo"].value == codigo:
print "

Producto eliminado

"
existe = 1
else:
contenido = contenido + line
f.close()
#Se sobreescribe en la base de datos la variable "contenido"
f = open ('base_datos.txt', 'w')
f.write(contenido)
f.close()
Ahora la función de modificar, que fue sinceramente con la que más batalle. Les voy mostrar como es que lo hice:
Primero que nada para modificar un producto me pide igual el nombre y clave si existen entran a las condiciones si no existe se manda un mensaje para que vuelvan a intentarlo. Cuando el nombre y clave coinciden con alguno de la base de datos se muestra un formulario con todos los campos llenos con las características de ese productos abiertos para ser modificado por el usuario, ya que se modificó se guarda en la base haciendo llamar a nuestro programa agregar.py(que ya expliqué anteriormente), bueno esa es la primera parte de modificar.

La segunda parte ahora se encarga de eliminar el producto con las características que entró por primera vez es decir se guardo en la base de datos el producto modificado pero el producto que se quiere modificar se quedo también en la base de datos entonces ahora se elimina esa linea(el mismo procedimiento que expliqué en mi función eliminar) para que solo quede el producto modificado.
entrada = cgi.FieldStorage()
existe=0
if entrada.has_key("nombre") and entrada.has_key("codigo"):
contenido = ''
f = open('base_datos.txt')
for line in f:
linea = line.split(',')
nombre = linea[0]
codigo = linea[1]
cantidad = linea[2]
marca = linea[3]
precio = linea[4]
if entrada["nombre"].value == nombre and entrada["codigo"].value == codigo:
print "

Modificar producto

"
print "
"
#Se manda llamar la funcion agregar, para escribir en la base el producto modificado, pero podemos observar que les dí a los campos un valor de entrada que son los datos que se tienen del producto
print "
"
print "Producto:"
print "Codigo del producto:"
print "Cantidad:"
print "Marca:"
print "Precio:"
print ""
print "
"
print "
"
existe = 1
else:
#Se elimina la linea sin modificar
contenido = contenido + line

if existe == 0:
print "

El producto no existe

"
print"
"
f.close()
f = open ('base_datos.txt', 'w')#Se sobreescribe en la base de datos
f.write(contenido)
f.close()
else:
print "

Escribe el nombre del producto

"

Y la función de consultar, esta función me permite seleccionar entre dos opciones consultar por nombre o ver toda la base de datos.
Consultar por nombre no tiene mucha ciencia solo busca la coincidencia en la base de datos con el nombre introducido y se muestran los productos, los productos se muestran en la pantalla en forma de tabla que la cree dinamicamente con un for.
Y ver toda la base de datos simplemente se abre la base en forma de lectura y se van imprimiendo los campos, igualmente en una tabla.
Aqui una imágen del código para crear la tabla:



Esas son las partes que considero importantes de mi código espero tengan oportunidad de verlas, cualquier duda o sugerencia dejen comentarios, yo trataré de responder lo mas pronto posible.

sábado, 18 de septiembre de 2010

Color en html


Los colores en HTML están definidos por su formato RGB(Red-Green-Blue), que es un código numérico de seis dígitos hexadecimales precedido del signo "#". De acuerdo a este formato cada color es la combinación de tres colores básicos: rojo(R), verde(G) y azul(B); cada uno de ellos puede expresarse desde la ausencia de color(valor 0), a saturación de color(255).
La expresión de esos valores se deben de hacer en forma hexadecimal, el valor 0 se expresa como 00, y 255 como FF. Es por eso que el código de color está formado por 6 dígitos hexadecimales en donde los dos primeros dígitos nos dicen la componente del color rojo, los dos dígitos siguientes indican el componente del color verde, y los últimos dos dígitos son el componente azul.

Código hexadecimal de algunos colores:

Tabla de colores RGB
ColorCódigoColorCódigo
Blanco#FFFFFFNegro#000000
Azul#0000FFVerde#00FF00
Ciano#00FFFFVerde mar#238E6B
Azul cielo#3299CCVerde obscuro#2F4F2F
Violeta#4F2F4FVerde lima#32CC32
Gris#C0C0C0Salmón#6F4242
Turquesa#7093DBMarrón#A52A2A
Rosa#BC8F8FNaranja#CC3232
Oro#CC7F32Rojo#FF0000
Mageta#FF00FFAmarillo#FFFF00


Para algunos de estos colores se pueden utilizar identificadores alfanuméricos, por ejemplo, el color rojo puede ser identificado como red y azul como blue.
Se puede dar colores a los diferentes elementos del documento HTML, por ejemplo:
  • BGCOLOR: Es para dar color al fondo de la página.
  • TEXT: Es para indicar el color del texto.
  • LINK: Indica el color de los enlaces aún no visitados.
  • VLINK: Color de enlaces ya visitados.

Por ejemplo, si se desea que el fondo de la página sea naranja, el texto azul, los enlaces no visitados color negro, y los enlaces visitados color blanco:

<BODY BGCOLOR="#CC3232" TEXT="#0000FF" LINK="#000000" VLINK="#FFFFFF">



Me basé en estos sitios:

Y el libro "PHP y MySQL", editorial Díaz de Santos, autores Ángel Cobo, Patricia Gómez, Daniel Pérez y Rocío Rocha.

viernes, 17 de septiembre de 2010

HTML

HTML es el lenguaje que se utiliza para crear páginas web.
Contiene elementos que el navegador interpreta y despliega en la pantalla de acuerdo a su función,
con elementos me refiero a tablas, imágenes, hipervinculos, listas , etc.
Para hacer una página HTML se requiere un editor de texto y un navegador de internet.

Aquí algunos ejemplos de html:

Tablas

<table> Esta es la marca de comienzo de la tabla, requiere del elemento de cierre.
<tr> Es para la fila de la tabla.
<td> Para la columna de la tabla.
<th> Se usa para indicar una celda de título, en vez de td.
<caption> Se usa para poner título a la tabla.
<td colspan="3"> Esta etiqueta es para combinar columnas.
<td rowspan="3"> Se usa para combinar filas.

Ejemplo de código utilizando las etiquetas anteriores:



Su resultado:

Semestre Enero-Junio 2010
CalificacionesAlumnos
SandraGemmaPerlaPaloma
85999695
951009280



Listas

<ol> Se usa para escribir una lista numerada.
<ul> Esta etiqueta sirve para escribir una lista desordenada.
<li> Se debe poner con cada elemento de la lista.

Ejemplo de código utilizando de listas anidadas:



Su resultado:

  1. Física
    • Electromagnetismo
    • Ondas y Calor

  2. Matemáticas
    • Diferencial
    • Integral

  3. Programación
    • C
    • Java

Links

La manera de poner links es :
<a href="url">Texto</a>
Ejemplo:
<a href="http://www.ascii.cl/es/codigos-html.htm">Caracteres especiales html</a>


Inserción de imágenes

<img scr="dirección de la imágen" alt="algo de texto"/>
Ejemplo:
<img src="Roberto.png" alt="imágen de roberto"/>



jueves, 16 de septiembre de 2010

Cliente/Servidor

Todos los servicios que ofrece Internet entre ellos el servicio web, se basan en la relación cliente servidor.
En Internet se pueden encontrar dos tipos de equipos conectados:
  • Servidores: Son ordenadores que ofrecen sus servicios a los equipos conectados. Por lo general tienen presencia estable en la red, esto es tienen direcciones IP permanentes. En los servidores es en donde están alojadas, por ejemplo, las páginas web.
  • Clientes: Son los equipos que utilizan los usuarios para conectarse a la red y obtener servicios de los servidores. Cuando están conectados tienen presencia física en la red. Comúnmente los proveedores de acceso a Internet asignan direcciones IP variables a estos equipos, es decir tienen IP dinámica.

Cliente y servidor puede entenderse con dos significados, unos referente al hardware que es la definición anterior, el servidor hace referencia al equipo al que se realiza la conexión y el cliente el equipo para hacer dicha conexión. Y el otro significado es referente al software:

  • Programa servidor: Es el programa que debe de estar ejecutándose en el equipo servidor para que pueda ofrecer su servicio. Es necesario tener una aplicación servidor web, ya que un documento HTML almacenado en el equipo no basta para poder acceder a el como página web por los usuarios de Internet. El programa servidor web más conocido es Apache, también esta el Personal Web Server(PWS) o el IIS para los equipos Windows.
  • Programa cliente: Es el software que tiene que estar en el equipo cliente para poder hacer peticiones al servidor, por ejemplo los navegadores como el Internet Explorer, Mozilla, Google Chrome, entre otros.

Para esta entrada leí el capítulo 1 "Internet y la programación de ordenadores", del libro "PHP y MySQL", autores Angel Cobo, Patricia Goméz, Daniel Peréz y Rocio Rocha.