Crea tu propio Slider para tu página web con HTML, CSS Y JS

Hola, en esta nueva publicación te mostraremos una manera sencilla de crear tu propio slider de imágenes para tu página web.

Comencemos con una pequeña introducción de lo que es un slider.

Un slider es un recurso que se utiliza para dar un diseño mas novedoso a la presentación de imágenes en un sitio web además de ser una manera de atraer la atención de los visitantes y usuarios que accedan a ella.

Requisitos:

Para realizar esta práctica necesitaras de algunas imágenes, así como también haremos uso de conocimientos en HTML, CSS y Javascript.

  • Definiremos el código HTML en el cual crearemos un contenedor donde se creara el slider, lo llamaremos “caja”.
  • Declararemos en el código CSS la apariencia que tomara el contenedor.
  • Y por ultimo utilizaremos Javascript para el funcionamiento de este con un degradado.

Procedimiento:

  1. Iniciemos la práctica colocando el código HTML, dentro de la etiqueta <body>  colocamos onload=”javascript:Aparecer()” para que se ejecute automáticamente al cargar la página.
  2. Ahora crearemos el contenedor con la etiqueta <div> en la que declararemos las imágenes  <img  src= dirección de imagen  id= identificador de imagen>.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Practica</title>
</head>
<!--Código HTML-->
<body onload="javascript:Aparecer();">
.
.(imagenes)
.
</body>

 

Es importante que dentro de la etiqueta <img> se declare un identificador ya que se utilizara mas adelante.

3.- Para definir la apariencia utilizaremos CSS el cual definimos de la siguiente manera dando formato al contenedor de las imágenes.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Practica</title> 
<!--Código CSS--> 
<style type="text/css">
#caja{
width:262px; 
height:192px; 
color:white; 
font-family:"Gill Sans", "Gill Sans MT", Calibri, "Trebuchet MS", sans-serif; 
margin:0px auto; 
margin-top:30px;}

img{     
width:350px;    
height:200px; 
position:absolute;}
</style>
</head> 
<!--Código HTML--> 
.
.
.
</html>

Asignamos un tamaño a las imágenes con un width y height además de la posición en la que se ubicarán las imágenes dentro del slider.

Ahora estamos listos para comenzar a introducir el código javascript.

4.- Comenzaremos creando la función Aparecer en la que utilizaremos un interval=setInterval(muestra, 20) para llamar cada 20 milisegundos una nueva función llamada muestra.

La función Aparecer llamara:

  • La función detener  la cual manejara un clearInterval(interval) para limpiar el intervalo.
  • Y la función elige la cual se encargara de elegir y activar la visibilidad entre las imágenes del slider.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Practica</title> 
<!--Código CSS-->
.
.
. 
<!--Código Javascript--> 
 
var interval; 
var i=1; 
var ver=0; 

function Aparecer() { 
detener(); 
elige(); 
interval=setInterval(muestra, 20); } 

function muestra() { 
if(i>6) { 
   i=1; 
    Ocultar(); } 
if(ver==0) 
   document.getElementById("arbol").style.opacity=i; 
else 
   document.getElementById("nieve").style.opacity=i; 
i+=0.05; } 

function detener() { 
clearInterval(interval); } 

function elige() { 
if(ver==0) { 
document.getElementById("arbol").style.visibility="visible"; 
document.getElementById("nieve").style.visibility="hidden"; } 
else { 
document.getElementById("arbol").style.visibility="hidden"; 
document.getElementById("nieve").style.visibility="visible"; } }


</head> 
<!--Código HTML--> 
.
.
.
</html>

5.- La función muestra jugara un papel muy importante a la hora de mostrar y ocultar ya que manejara la transición entre imágenes jugando con la opacidad de la imagen que se muestra en el slider.

function Ocultar() { 
detener(); 
interval=setInterval(desvanecer,20); } 

function desvanecer() { 
if(i<=0) { 
i=0; 
if(ver==0) 
ver=1; 
else ver=0; 
elige(); 
Aparecer(); } 
if(ver==0) 
document.getElementById("arbol").style.opacity=i; 
else document.getElementById("nieve").style.opacity=i; 
i-=0.05; } 
<!--Código HTML--> 
.
.
.
</html>

6.- Mientras que la función de Ocultar se encargara con un interval=setInterval(desvanecer,20) de llamar cada 20 milisegundos a la función desvanecer esta se encargara de modificar la opacidad de la imagen que se ocultara.

De esta manera tendremos el efecto de un transición entre cada imagen del slider. Listo esta es una manera secilla de realizar un slider para tu sitio web.

Resultado:

See the Pen slider1 by Maria Gpe. Velázquez Martínez (@MarieVelmart7) on CodePen.

Crear un reloj utilizando Javascript, HTML Y CSS

A continuación se muestra la creación de un reloj, un  ejercicio en que utilizaremos elementos html, css y javascript.

Con este ejercicio podremos aprender la utilización de la hora y fecha del sistema para implementarla en una pagina web.

Iniciaremos con la creación de un nuevo documento de tipo html, y dentro de body crearemos el contenedor con la etiqueta <div></div> donde colocaremos nuestro reloj el cual llamaremos “caja”. Ademas agregaremos un enlace utilizando la etiqueta <a></a> con la cual daremos inicio a nuestro reloj.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>RELOJ</title>
</head>
<!--Código HTML-->
<body>
 <a href="javascript:iniciarReloj();">Iniciar Reloj</a>
<body>
</html>
 A continuación le daremos un formato a la caja utilizando elementos css.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>RELOJ</title>
<!--Código CSS-->
<style type="text/css">
#caja{ 
width:300px; 
height:200px;
background-color:blanchedalmond;
color:black; 
font-family:"Gill Sans", "Gill Sans MT", Calibri, "Trebuchet MS", sans-serif; font-size:2.0em; 
text-align:center;}
a{ 
border:1px solid brown;}
</style>
</head>
<!--Código HTML-->
<body>
 <a href="javascript:iniciarReloj();">Iniciar Reloj</a>
</body> </html>

Ya que tenemos nuestro código CSS y HTML comenzaremos con nuestro código. Utilizaremos la función de iniciarReloj() en la que con setInterval(reloj, 1000)  según el valor indicado la función sera ejecutada en este caso 1000 milisegundos es el tiempo que se ejecutara la función reloj().

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>RELOJ</title>
<!--Código CSS-->
.
.
.
<!--Código JS-->
 
var interval;
function iniciarReloj(){
interval=setInterval(reloj, 1000);//1000 milisegundos = 1 segundo  }

function reloj() { 
var d= new Date(); 
var t= d.toLocaleTimeString();
document.getElementById("caja").innerHTML= t;
} 

</head>
<!--Código HTML-->
.
.
.
</html>

Posteriormente en la función reloj() es donde se inyectara el código js en HTML con document.getElementById(“caja”).innerHTML= t  utilizaremos t en caso de utilizar solo la hora, y d si se requiere la fecha completa.

También podemos incluir un enlace con la etiqueta <a></a> para detener el reloj esto en nuestro código HTML y creando una nueva función en el código CSS en la cual marcamos el clearInterval(interval); que limpiara el intervalo que anteriormente se había declarado para el intervalo de ejecución en el iniciarReloj().

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>RELOJ</title>
<!--Código CSS-->
.
.
.
<!--Código JS-->
 
var interval;
function iniciarReloj(){ ... }
function reloj() { ... } 

function detenerReloj() { 
clearInterval(interval);
 }

</head>
<!--Código HTML-->
<body>
 <a href="javascript:iniciarReloj();">Iniciar Reloj</a>
 <a href="javascript:detenerReloj();">Detener Reloj</a>
 </body> </html>

De esta manera concluimos el ejercicio con el cual aprendimos a utilizar la hora del sistema, y la implementan del setinterval y el clearinterval ademas del innerHTML.

See the Pen reloj by Maria Gpe. Velázquez Martínez (@MarieVelmart7) on CodePen.

Seleccionar Row en un ASP.NET GridView

Al utilizar un GridView en ASP.NET podrás observar que no se pueden seleccionar las tuplas de dicho control, o cual es necesario cuando se requiere seleccionar un indice de dicho controlador.

A continuación te mostramos una práctica donde se requiere seleccionar un row de un GridView  para extraer los datos de un socio de gimnasio (id_Socio, nombre_Socio, direccion_Socio, peso_Socio, altura_Socio, ocupacion_Socio, vigencia) y de esta manera mostrar los datos en su textBox correspondiente,  los pasos que te mostramos a continuación son necesarios para lograr dicha funcionalidad.

Para esta práctica necesitaras:

-Visual Studio 2008+
-ASP.NET
-Formulario donde se implementara la práctica con un GridView.

Bien, comencemos.

Paso 1:

Dentro de la vista de diseño de Visual Studio, seleccionamos el GridView en el que deseamos implementar el seleccionado y en sus propiedades, seleccionamos los eventos.

Paso 2:

Seleccionamos el evento llamado SelectedIndexChange, este evento puede crear un controlador de eventos para determinar cuando el indice seleccionado de una herramienta, en este caso del GridView ha cambiado.  

Esto puede ser útil cuando se necesita mostrar información en otro control basado en la selección actual del GridView.

El evento puede utilizar el controlador de eventos para este evento para cargar la información en los demás controles.

Paso 3:

Para esta práctica es necesario agregar la librería Drawing escribiendo using System.Drawing; que proporciona acceso a funcionalidades de gráficos.

Paso 4:

Dentro del evento anteriormente agregado agregaremos un foreach el cual se encargara de recorrer los rows del GridView, y adentro debemos de crear una condición con la que revisaremos si la tupla seleccionada sea igual a la tupla en la que se encuentra el recorrido.

Si coincide a continuación cambiaremos el color de la tupla una vez encontrada:
row.BackColor =ColorTranslator.FromHtml(color_deseado); 

Y se coloca donde se desea colocar la información recuperada en este caso recuperaremos la información en text.
textoClave.Text = tablaSocios.SelectedRow.Cells[0].Text;

Si no coinciden las tuplas se regresara al color que anteriormente se tenia, esto es para evitar dejar el color en las tuplas cuando fueron seleccionadas antes y es cambiada la tupla en selección actual.
row.BackColor =ColorTranslator.FromHtml(color_anterior); 

Paso 5:

Para terminar se agrega el evento RowDataBound  en este evento cada fila en el control debe estar enlazado a un registro en el origen de datos. 

El evento se desencadena cuando una fila de datos esta enlazado a datos en otro control. Dentro del evento colocaremos e.Row.Attributes[“onclick”] = Page.ClientScript.GetPostBackClientHyperlink(tablaSocios, “Select$” + e.Row.RowIndex);

Esto para recuperar los atributos de la tabla en este caso tablaSocios, con un Select y el indice.

Ahora podemos seleccionar la tupla del GridView que queramos y se recuperaran los datos.

 

Y de esta manera terminamos una práctica mas, donde aprendimos como seleccionar y recuperar datos del GridView .

 

 

 

Respaldo e Importación de Datos en MySQL

Al mantener una base de datos en uso es importante la creación de un respaldo también llamado backup para una mayor seguridad de datos.

La creación de un respaldo en base de datos es muy efectivo  para:

  • Prevenir perdida de datos en caso de un fallo en el Hardware
  • El borrado de datos por equivocación
  • Un virus en contraído por el equipo
  • Prevenir el mal uso de parte de las personas que manejan la base de datos.

Un respaldo debe de ser constante si se llevan acabo muchos movimientos de datos,  ya que un respaldo muy antiguo o incompleto no conservaría información fidedigna, para la base de datos.

Nota: Un respaldo ubicado en el mismo equipo donde se encuentra la base de datos corre el riesgo de perderse al igual que la base en caso de fallo, es por esto que un respaldo debe estar ubicado en otro equipo o dispositivo de almacenamiento de información.

En esta publicación se encuentra una forma sencilla de crear un respaldo en el manejador MySQL.

Para esta practica se tiene una base de datos llamada Escuela en la que tenemos la siguiente tabla Alumno

create table Alumno(
    idAlumno int NOT NULL auto_increment,
    nombre varchar(100) NOT NULL,
    edad INT NOT NULL,
    estatura FLOAT NOT NULL,
    constraint  pk_Alumno PRIMARY KEY(idAlumno)
);

Importacion de Datos

Ahora importaremos datos de un archivo .txt llamado Alumno.txt

 

Para realizar la importacion escribimos en el manejador la siguiente linea:

LOAD DATA LOCAL INFILE 'ubicacion_de_archivo' INTO TABLE nombre_tabla 
  FIELDS TERMINATED BY ',';

 

para el ejemplo que estamos realizando colocamos la ubicacion de nuestro .txt y el nombre la tabla en donde se insertaran los datos

LOAD DATA LOCAL INFILE
'C:\\Users\\novae_000\\Desktop\\Adm. Bases de Datos\\InstalacionMySQL\\ImportacionMySQL\\Alumno.txt
INTO TABLE Alumno FIELDS TERMINATED BY ',';

podemos verificar que los datos si hayan importado con el query: SELECT * FROM Alumno 

en la realización del ejercicio modificaremos los datos importados con el siguiente query:  UPDATE Alumno SET nombre = ‘nombre modificado’ WHERE  idAlumno=1

 

Respaldo y recuperación

Los siguientes pasos son para la realizar de un respaldo de nuestros datos.

1.-De lado izquierdo de nuestro manejador se muestra una sección llamada Management, y seleccionamos Data Export

2.–Se selecciona la base de datos que respaldaremos en este caso  escuela.

3.- Seleccionamos Export to Self-Contained File para asignarle un nombre y la ubicación de nuestra nueva copia.

Y listo tenemos creado nuestro respaldo de base de datos.

Para verificar que el respaldo se haya creado correctamente, en otro equipo se crea una base de datos, para el ejemplo llamaremos a la base de datos escuela (el mismo nombre que utilizamos para la creación del respaldo).

Para recuperar los datos seguiremos los siguientes pasos

1.-De lado izquierdo de nuestro manejador se muestra una sección llamada Management, y seleccionamos Import Export

2.–Se selecciona la base de datos en donde se realizara la recuperación de datos, en el ejercicio se llama escuela.

3.- Seleccionamos Import From Self-Contained File

4.- Por ultimo seleccionamos la ubicación donde se encuentra nuestro backup (.sql) previamente generado.

Listo ya conoces la manera de importar, crear y recuperar datos de tu base de datos MySql.

 

 

Desarrollo con la plataforma de desarrollo Firebase

¿Qué es Plataforma de desarrollo Firebase?

Firebase es un conjunto de herramientas que permiten desarrollos más ágiles quitando al dearrollador la preocupación de diseñar e implementar un base de datos, diseñar e implementar consultas a esa base de datos, implementar autenticación y autorización, implementar el código de manejo de errores, el trabajo offline, desempeño, esacalabilidad, entre muchas otras cosas.

También tiene el servicio Firebase cloud Messaging (FCM) que permite el envío de notificaciones para aplicaciones Android, iOS y web.

Tradicional App Development - Desarrollo Tradicoinal de Apps Plataforma de desarrollo Firebase

Tradicional App Development – Desarrollo Tradicoinal de Apps Plataforma de desarrollo Firebase

El modelo de desarrollo tradicional de Apps es así:

Pero utilizando el servicio de Firebase, el esquema cambia a:

Firebase app development - Desarrollo de apps con Plataforma de desarrollo Firebase

Firebase app development – Desarrollo de apps con Plataforma de desarrollo Firebase

Este servicio provee el manejo de Autenticación y Autorización, Base de datos, Almacenamiento además de proveer manejo de Notificaciones.

Dentro del evento Google I/O 2016 se presentó un ejercicio en vivo, dónde se desarrollo una aplicación de chat en tres tecnologias diferentes: Android, iOS, Web utilizando el servicio Firebase.

Si quieres saber más acerca del conjunto de servicios de Firebase, ingresa al sitio oficial: https://firebase.google.com/

Saludos!

Uso de POST, GET y REQUEST en PHP

El lenguaje de PHP es un lenguaje de código abierto muy popular adecuado para el desarrollo web; PHP cuenta con etiquetas que nos ayudan al envió y recuperación de datos desde un servidor como lo son POST, GET  Y REQUEST.

Para utilizar estas etiquetas antes que nada se requiere de tener un servidor activo ya sea WampServer, Xampp, etc.

El siguiente formulario será utilizado para los tres próximos ejemplos modificando solo partes significativas del código.

El código de HTML es el siguiente:

GET

El método GET es un arreglo asociativo de variables enviados por medio de la URL. Consiste en enviar la información de un formulario y que se “incruste” en la URL junto con la página php.

La estructura de la URL es la siguiente.

altaRegistro.php?txtNombre=Nombre&txtAlias=Alias&txtPwd=123&retxtPwd=123

Donde se divide la URL en la dirección y los datos que se envían. El ‘?’ tiene la función de ser un separador entre la página y la información enviada y el ‘&’ sirve para separar los datos entre sí.

Para extraer la información por GET se utiliza la etiqueta $_GET y el nombre de la variable en el arreglo, tomando como ejemplo $_GET[‘txtNombre’].

POST

El método POST es un arreglo dinámico de variables asociadas a una petición. Aunque es algo parecido al método GET la característica de este método es que el envió de información es “invisible” para el usuario ya que a comparación del método GET no se muestra la información en la URL.

Para extraer la información por POST se utiliza la etiqueta $_POST y el nombre de la variable en el arreglo, tomando como ejemplo $_POST[‘txtNombre’].

REQUEST

El método REQUEST es un arreglo asociativo que por defecto contiene el contenido de tres métodos: GET, POST y COOKIE.

Una gran característica que tiene REQUEST es que se considera como una variable “superglobal” lo que significa que es una variable que estará disponible en cualquier parte del script ya sean métodos o funciones dentro del mismo.

Al utilizar REQUEST para obtener la información enviada desde un formulario en la parte de la etiqueta “method” se puede usar tanto GET como POST.

Como crear procedimientos almacenados en Oracle 11g

En este ejercicio mostraremos dos formas de crear procedimientos almacenados en el Manejador de Base de Datos Oracle 11g.

Se le conoce como procedimiento almacenado al conjunto de comandos que se almacenan en la propia base de datos y son ejecutados por el servidor de la base de datos.

Para este ejercicio necesitarás:

PROCEDIMIENTO

Al poner en uso la base de Datos con el Start DataBase podemos comenzar, debemos entrar a la base de datos donde crearemos el procedimiento almacenado.

Hay dos formas de crear un procedimiento almacenado, el primero se lleva acabo de forma gráfica como lo veremos en el método 1 y la segunda por medio de comandos en la consola de la base de datos, lo cual resulta práctico ya que es donde se llamará a ejecución el procedimiento.

Comencemos ahora con los pasos para la primera forma de crear un procedimiento almacenado.

 

MÉTODO 1:

1.-Entramos al SQL Workshop y seleccionamos Object Browser, en este ejemplo ya se tienen creadas las tablas (productos) que se utilizarán para la creación del procedimiento.

2.-Seleccionamos Create,y se mostrarán las opciones en las que también puedes crear tablas, disparadores entre otros elementos, seleccionamos en este caso Procedure.

3.-En este procedimiento haremos que se inserte un producto, para ello nombramos a nuestro procedimiento ProcedimientoAlmacenado1 y presionamos Next.

4.- A continuación agregaremos los parámetros que recibirá y que devolverá el procedimiento, en este ejemplo, agregaremos como parámetros el nombre, precio y cantidad del producto estos tres parámetros serán de entrada por lo cual son de tipo IN como se muestra en la imagen y presionamos Next.

NOTA: se coloca IN si es un parámetro de entrada, OUT si es un parámetro de salida y por ultimo IN OUT si es un parámetro que se utilizará de ambas formas.

5.- El siguiente paso es escribir el contenido de nuestro procedimiento, como la acción que realizara nuestro procedimiento es una inserción escribimos:

INSERT INTO Productos(nombre, precio, cantidad) VALUES(n,p,c);

 Y presionamos Next.

6.-Para terminar con su creación, se muestra el código SQL del procedimiento que estamos por crear, y presionamos Finish. Y listo, esta fué la primer forma de crear un procedimiento, este por medio del asistente de Oracle.

 

Para comenzar con la segunda forma necesitamos ubicarnos en el SQL Workshop y entrar a  SQL Commands. Un procedimiento almacenado en el que el código fuente forma parte de la sentencia CREATE PROCEDURE.

 

MÉTODO 2:

1.- Comenzaremos con la creación del procedimiento almacenado por medio de código fuente, explicando a continuación la sintaxis.

CREATE OR REPLACE PROCEDURE Nombre_Procedimiento
(variables_que_llegan_o_salen_por_parámetro)
IS
BEGIN
    --Contenido, acción que realizara el procedimiento almacenado
END;

 2.- Después de conocer la sintaxis ya podemos crear nuestro procedimiento como se muestra a continuación.

3.-Y  presionamos Run.

EJECUCIÓN PARA AMBOS METODOS:

Por ultimo para poder llamar a un procedimiento almacenado creado de ambas maneras se llama desde SQL Workshop en SQL Commands con la siguiente sintaxis.

DECLARE
    --Aquí se declaran las variables que se lleguen a utilizar
       al recuperar un dato de salida en el procedimiento.
BEGIN
    --Se llama al procedimiento almacenado
    --imprimir 
END;

NOTA: Para la impresion utilizamos dbms_output.put_line() colocando entre paréntesis el texto a imprimir, si deseas imprimir una variable, el modo de concatenar con el texto es el siguiente: dbms_output.put_line(‘producto insertado’ || variable); 

Listo, para terminar el ejercicio solo nos queda ejecutar el procedimiento presionando Run.

Menú HTML & CSS responsivo con transiciones

Hola a todos!!. En una publicación anterior vimos como crear un menú con animación JQuery, el día de hoy vamos a crear un menú con movimiento a través de transiciones CSS, es decir, podemos omitir el código Javascript para animar el menú, esto lo hacemos gracias a un truco de CSS ligado a un control checkbox.

1. El primer paso es crear la estructura HTML:

Aqui es dónde viene el truco, como puedes ver utilizamos un checkbox para mostrar el icono de menú, te preguntarás ¿Por qué utilizar un checkbox si lo puedo hacer con una etiqueta img?, bueno, pues este control nos ayudará a detectar cuando se hizo clic sobre él, utilizando CSS detectamos el cambio de estado checked para desplegar u ocultar el menú. ¿podría utilizarse una etiqueta button, link u alguna otra?, la respuesta es, seguramente sí, siempre y cuando podamos detectar sus estados dentro de CSS

<!-- Agregamos el control Checkbox y su label asociado -->
<input type="checkbox" id="menuCheck">
<label class="iconoMenu" for="menuCheck"></label>

<<!-- Este es el titulo de la página -->
<h1>Título de mi página</h1>

<!-- Estructura del menú y su contenedor -->
<div class="contenedorMenu">
<ul>
<li><a href="#">Opción uno</a></li>
<li><a href="#">Opción dos</a></li>
<li><a href="#">Opción tres</a></li>
<li><a href="#">Opción cuatro</a></li>
</ul>
</div>

Seguramente notarás que la estructura realmente no es tan compleja, así que no ahondaré en ella.

2. Pasemos a los estilos

Dentro de los estilos, solo rescataré la forma de mostrar/ocultar el menú.

#menuCheck:checked ~ .contenedorMenu{transform: translateX(0%)}

La explicación de esta línea debe comenzar con saber qué es el simbolo ~ y para que se utiliza, este simbolo llamado selector obtiene todos los elementos de la parte izquierda que preceden a la parte derecha de la regla, ejemplo: element1 ~ element2 (seleccionar todos lo elementos element2 que sean hermanos/estén al mismo nivel jerárquico que element1), para mayor información consultar el enlace https://www.w3schools.com/cssref/css_selectors.asp.

Para nuestro caso, estamos seleccionado al div contenedor del menú cuando el checkbox este en estado checked. Cuando el checkbox deja de estar en este estado los estilos vuelven a su “normalidad”, es decir a los estilos establecidos de inicio.

Para “animar” el menú utilizamos transiciones CSS que propiamente son algo diferente a las animaciones CSS, la principal diferencia es que las transiciones solo se inician en un cambio de estado como vimos ahora, mientras que las animaciones no dependen de estados de las etiquetas y se puede configurar mas a detalle como se comportará el CSS.

Finalmente te dejo el demo del funcionamiento de este código.

Saludos!

See the Pen Menú HTML & CSS responsivo con transiciones by Jesús Rodríguez (@chuyrdz) on CodePen.

Cómo crear disparadores (triggers) en postgreSQL

Antes de crear un disparador, comencemos recordando un poco sobre triggers y su función en una base de datos.

Un disparador, también llamado trigger, es un conjunto de sentencias SQL que dependen de un procedimiento almacenado, estos son almacenados dentro de la base de datos.

Los disparadores se asocian con tablas y se utilizan para ejecutarse automáticamente cuando ocurre un evento determinado en nuestra base de datos. A diferencia de los procedimientos almacenados un trigger no puede ser invocado directamente, sin mencionar que los disparadores son utilizados mayormente para mantener la integridad de los datos no para obtener resultados de consultas.

Los disparadores se ejecutan como resultado de la ejecución de una instrucción esta puede ser INSERT, UPDATE o DELETE.

La estructura básica de un trigger es:

CREATE TRIGGER nombre 
{ BEFORE | AFTER } { INSERT | UPDATE | DELETE } 
 ON tabla [ FOR [ EACH ] { ROW | STATEMENT } ]
 EXECUTE PROCEDURE nombre de funcion ( argumentos )

Descripción de la estructura:

  • Se utiliza el CREATE TRIGGER seguido del nombre del disparador que se esta creando.
  • Se utiliza BEFORE o AFTER
    ( BEFORE si se desea que la instrucción ocurra ANTES y AFTER si se desea que ocurra DESPUÉS de cualquier INSERT, UPDATE ó DELETE ).
  • Se utiliza ON seguido del nombre de la tabla donde se aplicará el disparador.
  • A continuación se presentan dos opciones, si el disparador se aplicara una sola vez, o se aplicará a cada una de las tuplas en la tabla.
    Si se aplicará una sola vez se coloca FOR EACH STATEMENT.
    Si se aplicará a todas las tuplas de la tabla se utiliza FOR EACH ROW.
  • Por ultimo EXECUTE PROCEDURE seguido por el nombre la función que ejecutará.

Debemos tener en cuenta que por cada disparador que definamos en una tabla, la base de datos tendrá que ejecutar la función asociada a dicho disparador por lo tanto es importante que el nombre de la función que se ejecutará sea el mismo que el nombre con el que es llamada.

La estructura básica de una función llamada por un trigger es:

 CREATE OR REPLACE
 FUNCTION nombre de funcion()
 RETURNS TRIGGER AS $nombre de funcion$
 DECLARE  
 BEGIN 
        --funciones que llevara acabo el disparador
 RETURN;
 END
$nombre de funcion$ LANGUAGE plpgsql;

Descripción de la estructura:

  • Se utiliza CREATE OR REPLACE al inicio de la función, si realizaste un cambio puedes volver a ejecutar la función sin tener que eliminarla.
  • Se utiliza FUNCTION seguido del nombre de la función que se esta creando.
  • RETURNS TRIGGER AS seguido del nombre del la función $.
  • A continuación se puede hacer uso de DECLARE utilizado para la declaración de variables que mas adelante se utilizaran en la elaboración de la función.
  • Dentro del BEGIN se colocan las instrucciones que se realizaran, es el núcleo de la función, al terminar regresa un valor con RETURN seguido de un END.
  • Para finalizar se coloca $nombre de la funcion$ seguido de LANGUAGE plpgsql.

Dentro del BEGIN, se puede acceder a elementos de la fila que se  esta insertando, eliminando o actualizando utilizando las referencias NEW.column-name y OLD.column-name, donde column-name es el nombre de la columna de la tabla con la que se asocia el disparador.

-NEW: Variable que contiene la nueva fila de la tabla para las operaciones  INSERT/UPDATE en disparadores del tipo row-level.

-OLD: Variable que contiene la antigua fila de la tabla para las operaciones UPDATE/DELETE en disparadores del tipo row-level.

Ya que conocemos todos los elementos que integran un disparador, a continuación te presento un ejemplo.

Ejemplo: Verifica existencias de producto al hacer la compra

CREATE TRIGGER verificarExistencias
 BEFORE INSERT ON VENTAS.T_DETALLE_VENTAS
 FOR EACH ROW
 EXECUTE PROCEDURE verificarExistencias();
 CREATE OR REPLACE
 FUNCTION verificaExistencias()
 RETURNS TRIGGER AS $verificaExistencias$
 DECLARE  cant int8; id_Socio int8; cant_Detalle int8;
 BEGIN id_Socio = NEW.id_Producto;
       cant_Detalle = NEW.cantidad;
       cant = cantidad_Producto
 FROM VENTAS.T_PRODUCTOS
 WHERE VENTAS.T_PRODUCTOS.id_Producto = id_Socio;
 IF (cant < cant_Detalle) 
    THEN raise notice 'No hay suficiente producto';
    ROLLBACK;
    return null;
 END IF;
 RETURN NEW;
 END
$verificarExistencias$ LANGUAGE plpgsql;

 

Cómo crear una conexión ORACLE 11g – ASP.NET utilizando C#

Los siguientes pasos muestran la manera de establecer conexión entre el sistema gestor de base de datos Oracle y el modelo de desarrollo ASP.NET.

Antes que nada es importante mencionar que en algunas ocasiones es conveniente dejar a un lado lo convencional y no utilizar solo aplicaciones de Microsoft para brindar tecnología a un sistema. Muchas empresas y DBA`s (Database Administrator) eligen los servicios de Oracle antes que otros motores de BD convirtiéndolo en uno de los mejores y mas utilizados. Algunas razones por las que es seleccionado son por las características de desempeño, facilidad en la escalabilidad, la alta disponibilidad en la base de datos y la seguridad implementada en sus aplicaciones.

Para este ejercicio necesitarás:

1.- Para comenzar se debe de construir la base de datos que se desea utilizar en Oracle.

2.- Una vez creada la base, se debe de crear el proyecto de tipo Web Aplication y agregar un WebForm.

Es importante agregar la siguiente referencia al proyecto ya que sin ella no se podrá tener accedo a ninguna libreria Oracle.

3.-Se agrega la referencia al componente Oracle Data Access, ubicado en la carpeta de instalacion Oracle  en el disco c de la computadora. /oraclexe/app/oracle/product/11.2.0/server/odp.net/bin/OracleDataAccess.dll

4.-A continuación se agrega una nueva clase dentro del proyecto.

5.-Ahora dentro de la clase antes creada se realiza el código de conexión:

//Se declara la siguiente linea para el acceso a las librerías Oracle
 using Oracle.DataAccess.Client;
//declaración de Objeto Conexión a Oracle
 private OracleConnection cn;
public Conexion()
{
  //Utilizaremos un try/catch para verificar que no ocurrió algún error 
  try{
    //Se crea una nueva conexión, el nombre del Usuario y contraseña son
     los establecidos en el momento de la instalación de Oracle
     cn= new OracleConnection("Data Source=*; User Id=SYSTEM;
                               Password=123456;");
    
   //Se abre la conexión creada
     cn.Open();
   //Mostraremos un mensaje en pantalla con el estado de la conexión
     MessageBox.Show(cn.State.ToString()); 
     }
catch(Exception e)
      {
   //Mensaje de Error en caso de no establecer conexión
    MessageBox.Show("No se realizar la conexion. Error: " + ex);
     }
 }

Recuerda que es necesario cerrar la conexión.

 public void cerrarConexion
   {
  //Cerramos conexión
   cn.Close();
   }

También se debe crear una nueva función de tipo OracleConnection  para regresar la conexión cuando la clase sea llamada.

 public OracleConnection regresaConexion()
 { return cn; }

Listo ya tenemos nuestra clase conexión, la cual utilizaremos cada vez que necesitemos comunicarnos con la base de datos en Oracle como se muestra en el siguiente ejemplo:

  Conexion c;
  OracleCommand cmd;
  String query=""; 

private void InsertDatos(object sender, EventArgs e)
  {
    c = new Conexion(); //nueva conexión
    query="INSERT INTO  Nombre_Tabla VALUES(Valores_a_Insertar_en_Tabla);"
 
    cmd = new OracleCommand(query, c.regresaConexion());
    cmd.ExecuteNonQuery();
   //Mensaje Inserción exitosa
    MessageBox.Show("Datos insertados correctamente");
    c.cerrarConexion(); //se cierra la conexión
 }

Es importante mencionar que OracleCommand representa una instrucción SQL o un procedimiento almacenado que se va a ejecutar en una base de datos.

El link de la documentación de Oracle se encuentra en el enlace siguiente:
http://www.oracle.com/technetwork/es/database/enterprise-edition/documentation/index.html