Programacion

fechas_1

MundoGeek: Manejo de fechas en PHP: 2 de 3.

Como seguidores de MundoGeek.com notaron el inicio de una serie de 3 artículos con referencia en el manejo de fechas en PHP, algo que a los nuevos programadores los mantiene despiertos por algo de tiempo hasta que encuentran algún algoritmo para solucionar su problema. Hoy se publica este articulo con la segunda parte de la serie de como manejar fechas en PHP.

El articulo dos de esta serie será como invertir fechas con un formato: DD/MM/AAAA a uno con un formato Date de mySql: AAAA-MM-DD. Esto aplica para un INSERT, porque es mas facil hacer nuestras validaciones, parseos, etc en PHP para luego ser insertadas en mySql que correr 200 queries con un DATE_FORMAT y nuestras validaciones dentro de los queries. Por otro lado el DATE_FORMAT puede ser eficaz en los SELECTs para el regreso de información y asi saltar validaciones innecesarias en PHP para mostrar fechas.

Ejemplo:
        SELECT DATE_FORMAT('campo_fecha','%d / %m / %Y') as fecha FROM tabla;

Ejemplo de formatDates con el segundo case de mode_from

function formatDates($date,$mode_to=3,$mode_from=1,$separator='-',$mysqlDate=true){
switch($mode_from){
case 2:               
#2011-08-05 - output
//Validando si la fecha no esta vacia
if(!empty($date) && $mysqlDate!=true){
$posDashInDate = strpos($date,'-');
$posSlashInDate = strpos($date,'/');
if($posDashInDate !=NULL && $posDashInDate > 0){
$strDateSeparator = '-';
}elseif ($posSlashInDate != NULL & $posSlashInDate > 0){
$strDateSeparator = '/';
}else{
$strDateSeparator = NULL;
}
if($strDateSeparator != false){
list($day, $month, $year) = explode($strDateSeparator, $date);
switch($mode_to){
//output 2011-08-05
case 1:
$return = $year.$separator.sprintf("%02s",$month).$separator.sprintf("%02s",$day);
break;
}
}else{
$return = 'N/A';
}
}else{
$return = 'N/A';
}
break;
} //mode_from
return $return;
}

fechas_1

MundoGeek: Manejo de fechas en PHP: 1 de 3.

Al empezar en el universo de la programación, incluye todos los lenguajes, el manejo de fechas es algo primordial que se debe dominar, desde lo mas básico de los lenguajes hasta los Seniors Developers saben. En el caso especial de esta serie de artículos serán basados en PHP, lenguaje dinámico para crear contenido dinámico en una pagina web o aplicación.

En el tiempo que llevo desarrollando en plataforma web, he trabajado con newbies, quienes no tienen tanta suerte en el manejo de fechas creando funciones, practicas, reutilizables, sin parches(si funciona pero en ciertos parámetros), funcionales en cada caso(utilizar validaciones para asegurar el funcionamiento en su totalidad).

Hoy en el principio de esta serie de artículos manejaremos las tan queridas y odiadas fechas de mySql, las fechas en mySql manejan un string modelo: AAAA/MM/DD HH:MM:SS pero en algunos para países de América Latina no se sigue ese formato, entonces es necesario parsearlo correctamente a nuestras necesidades.

function formatDates($date,$mode_from=1,$mode_to=1,$separator,$mySqlDate=true){
switch($mode_from){
case 1:
if(!empty($date)){
list($year,$month,$day) = explode('-',$date);
 
switch($mode_to){
case 1:
if($mySqlDate){
$day = substr($date,0,-9);
}
$return = $day,$separator,$month,$separator,$year;
break;
case 2:
if($mysqlDate){
$day = substr($day,0,-9);
}
$return = $day.$separator.$this->full_months[intval(strval($month))].$separator.$year;
break;
case 3:
if($mysqlDate){
$day = substr($day,0,-9);
}
$return = trim($day).$separator.$this->med_months[intval(strval($month))].$separator.$year;
break;
}
}else{
$return = "N/A";
}
break;
}
 
 
return $return;
}

Las variables $this-> son tipo objeto, que puede ser replazadas por variables tipo arreglo como estas:

$full_months = array(null, 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'); 
$med_months = array(null, 'Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic');

imgFront

Mundo Geek Slider es un plugin para el famoso framework de JavaScript, jQuery, este plugin es muy sencillo de utilizar e implementar, eso fue el punto de partida, un plugin para portafolios o cualquiera proyecto al cual se quiera dar una vista mas profesional, limpia y sencilla.

DEMO

MGS 1.0

Para implementar MGS es muy sencillo como todos los plugins de jQuery:

  • 1.- jQuery >= 1.6
  • 2.- MGS 1.0
  • 3.- demo.css //css basico(no requerido)
  • 4.- mundoGeekSlider.css // estilos basicos para el plugin
  • 5.- Navegador actualizado(no testado en IE)
    • - MF >= 4.0.1
    • - Chrome >= 12.0
    • - Safari >= 5.1

Explicare a continuación las opciones de configuración de MGS

  • current : 0, //actual slide
  • next : 1, //siguiente slide
  • prev : 0, //anterior slide
  • anchorNext : "next", // class del anchor siguiente
  • anchorPrev : "prev", // class del anchor anterior
  • slides : $(this).children(), // wrap con todos los slides
  • totalSlides : $(this).children().size(), // tama–o de var slides
  • wrapSlide : "slide", // class que contiene los slides
  • easingTime : 400 // timing de los efectos

Como habran dadose cuenta MGS 1.0 es muy sencillo y facil de implementar, como cualquier otro plugin de jQuery. MGS estara siendo actualizado para que llegue hacer un buen plugin, es una version temprana para decir que es el mejor de todos los Sliders, pero ese es nuestro objetivo. Sigan en contacto de MundoGeek.com para mas actualizaciones del plugin, si tienen alguna duda, critica o sugerencia puedes mandar un mail a esta direccion que dejo a continuacion.

myxhel [at] shortmail [dot] com

joo

Post, Get y Request son métodos predeterminados en nuestro servidor(HTTP), con método me refiero a funciones privadas del servidor que tengas instalado y los cuales devuelven una variable en formato arreglo asociativo con llave y valor, explicado lo que son esas variable globales de PHP, centraremos nuestra atención en como ser mas practico con esas variables, las cuales son indispensables que sepamos como manejarlas por el bien nuestro, ya que son parte fundamental de nuestra aplicación o pagina web interactiva a su vez repasaremos y en el caso del algunos lectores aprender como PHP tiene funciones para hacer nuestro script mas fácil de codificar teniendo un esquema de programación propio y claro, una forma de debugear mas fácil para nosotros y aquellos que utilicen nuestro "source code", empezemos.

Primero algo PHP 101. Cuando veamos una variable que tenga $_ significa que es una variable del servidor, y para que necesitas saber eso, primero por que lo tienes que saber, si dices ser PHP Developer, segundo significa que no puedes tocarla, modificarla ni soñar con ella, es del servidor y eso con lleva que cualquier cosas que trates de hacer con ella, a menos que solo la utilices, no podrás y tu servidor mostrar error de Runtime.

Después de un poco de PHP 101, pasemos a lo que venimos; HTML tiene formas, en las cuales se ingresan datos e información que es valiosa para nosotros como codificadores para continuar o hacer una ejecución de nuestro script, en las formas de HTML en el momento preciso que el usuario hace submit por medio de un botón, en el servidor se ejecuta una series de métodos los cuales terminar en 3 variables globales, POST, GET y REQUEST. Son interpretados por PHP como variables de URL que parecen en nuestra URL como: http://miscript.php?menú=2 . a partir de ahí nosotros como codificadores de php recibimos esas variables y hacemos la acción que se mando por parámetro en el URL.

Ejemplo: example_one.php
 
<?php
//Imprimir lo que traen todas las variable globales
print_r($_REQUEST); //Imprime correctamente
print_r($_POST); //No imprime
print_r($_GET); // Imprime correctamente
 
?>
<html>
<head>
<title>MundoGeek - GET, POST, REQUEST</title>
</head>
<body>
<form action="" method="GET">
<h1> Mi script </h1>
<input type="text" name="input_name" value=""/>
<input type="submit" name="submit_button" value="Enviar"/>
</form>
</body>
</html>
 

Explicando el código de arriba, son lo fundamentos del envio de formularios de HTML hacia tu server scripting, en nuestro caso PHP, unas de las cosas que pasan a codificadores principiantes, "newbies", es codificar toda la forma con todo los inputs que se requieren y botones, etc y hasta el ultimo probar como funciona, ahi es cuando suceden los errores de sintaxis que cuando terminaste una forma de 50 lineas lo menos que quieres es verificar linea por linea donde pusiste mal un "=" o donde no cerraste con ">" o con "/"; es mas facil cada 2 o 3 lineas darle refresh a la script para observar como va todo y cambiar algo que no te agrade, que cuando todo esta terminado, no te agrada como funciono el script y ahora a recodificarlo que lleva mas tiempo.

Regresando a la explicación del source code, entre los tags de PHP hay 3 "print_r" los cuales nos ayudan a debugear que nuestro servidor regreso al nuestro script o que mando a otro script, porque se muestran esos arrays en el mismo script php? por que no le especificamos en la linea de "<form action="" method="GET">"  el action, el cual significa a donde nos vamos después que el usuario le dio submit a la forma, si nosotros no podemos nada, nuestro script vuelve a pasar por el hilo de ejecución del servidor y nos muestra. En esa misma linea se observa que el method que yo escogí fue GET, por ser GET en nuestra URL al momento de hacer submit aparecerá esto "http://localhost/path/miscript.php?input_name=mundogeek&submit_button=Enviar", trae consigo todos los parametros mandados por la forma y el print_r desplegó "Array ( [input_name] => mundogeek [submit_button] => Enviar )"; Ahora si podemos hacer interactiva nuestra pagina web con un script de PHP.

En el caso de $_REQUEST, es una variable que recoge los parámetros de la URL sin importa que el method del form haya sido GET o POST, no hace distincion ni nada, si por ejemplo typeas esto " echo 'Request: '.$_REQUEST['input_name']; " va a mostrar todo lo que traiga ya sea Integer, String o Array de la variable global $_REQUEST['input_name'] si su valor es nulo no mostrar absolutamente nada.

Vamos a ponernos serios en cuanto como saber cuando debo usar GET, POST o REQUEST. En el caso mio como W.D.(Web Developer) y P.S.D.(Php Solutions Developer), utilizo GET en las formas para cuando el proyecto esta en fase de producción y ahi poder saber como manda los parámetros el server, POST en el modo de RTW (Release To Web), ya liberado el proyecto, cambio todas las formas por POST y REQUEST lo utilizo para debugear todo y asi no estar cambiando de POST a GET en una forma o en AJAX o en X situación que lo necesite; Pero creo que se preguntaron como es que cambias todo los GETS por POSTS, facil y sencillo hago esto:

Ejemplo: example_two.php
<?php
Define('METHOD_FORMS','"POST"');
?>
<html>
<head>
<title>MundoGeek - GET, POST, REQUEST</title>
</head>
<body>
<form action="" method=<?php echo METHOD_FORMS?>>
<h1> Mi script </h1>
<h2><?php  echo 'Request: '.$_REQUEST['input_name']; ?></h2>
<input type="text" name="input_name" value=""/>
<input type="submit" name="submit_button" value="Enviar"/>
</form>
</body>
</html>
 

 

Explicando el source code anterior, en la primera parte del script, Defino una variable global con el string de '"GET"', las comillas dobles si van incluidas, y así tengo full control sobre todas las formas, pero hay inconveniente de la forma anterior tendría yo que definir otra variable cuando cambie de script, pero hay solución chavos que no cunda el panico, para esa situación usamos un script de configuración, el cual no servirá para definir las variables que queramos y transportarlas de Script en Script, nuestro script se vería así:

 
Ejemplo: example_three.php
<?php
/**
* Script de configuracion
*/
 
//Variables a definir
 
define("METHOD_FORMS",'"GET"');
 
?>
 
 
<?php
/**
* Index
*/
include_once 'config.all.php';
?>
<html>
<head>
<title>MundoGeek - GET, POST, REQUEST</title>
</head>
<body>
<form action="" method=<?php echo METHOD_FORMS?>>
<h1> Mi script </h1>
<h2><?php  echo 'Request: '.$_REQUEST['input_name']; ?></h2>
<input type="text" name="input_name" value=""/>
<input type="submit" name="submit_button" value="Enviar"/>
</form>
</body>
</html>
 

 

Explicando, Lo único que cambio fue que hice un nuevo script llamado config.all.php y dentro definí una variable global( Cuando nosotros definimos variables globales como es nuestro caso, les recomiendo usar siempre MAYUSCULAS para hacerlas mas fácil de identificar en nuestros scripts mas adelante) con un string y ahora yo modifique mi index y solamente agregue la linea " include_once 'config.all.php'; " diciendo lo que haga include de todo lo que haya en ese script php, fácil verdad.

Ya terminado con la explicación y como se puede implementar, les dejo un pequeño tip que nos puede salvar de muchas situaciones y tiene algo de practicidad en la codificion:

 
Ejemplo: example_four.php
 
<?php
/**
* Script de configuracion
*/
 
//Variables a definir
 
define("METHOD_FORMS",'"GET"');
 
//Variables GET
import_request_variables('g', 'g_');
//Variables POST
import_request_variables('p', 'p_');
 
?>
 
<?php
/**
* Index
*/
include_once 'config.all.php';
?>
<html>
<head>
<title>MundoGeek - GET, POST, REQUEST</title>
</head>
<body>
<form action="" method=<?php echo METHOD_FORMS?>>
<h1> Mi script </h1>
<h2><?php  echo 'Request: '.$g_input_name; ?></h2>
<input type="text" name="input_name" value=""/>
<input type="submit" name="submit_button" value="Enviar"/>
</form>
</body>
</html>
 

 

Encontraron las diferencias?

La funcion import_request_variables('g', 'g_') lo que hace es darle un formato que nosotros definimos al GET y POST por un subfijo, esta funcion tiene 2 parametros, el primero es que vamos a formatear GET o POST, para GET es "g" y obvio para POST "p", en el segundo parametro es el sufijo en este ejemplo use "g_" y "p_", les recomiendo que utilicen una sola letra y que aplique para las dos.

Les agrego un pack de los source code de todo el post.

Pack por FileServe

jQuery es un framework de JavaScript que la mayoría de los desarrolladores web(incluyéndome) utilizan. Pero ¿Por qué lo utilizan?. Es simple la respuesta, es mas fácil codificar esto: " var iD = $('input[name=id]').val; " que esto "var iD = document.getElementByName("id").value; ", ¿Cuál es mas fácil de programar y mas aun de comprender el código con facilidad?. Obviamente seria jQuery por la facilidad de su sintaxis pero dirán que si jQuery sustituye a JavaScript y la respuesta es no, jQuery facilita la codificación en JS la cual es muy complicada y poco entendible. Un plus para jQuery es la manejo simple de DOM, como eventos, efectos y funciones las cuales en JS es muy complicado, un ejemplo universal seria el de AJAX(Asynchronous JavaScript and XML) una serie de funciones y comandos en JS que en jQuery lo haces con una función y unos ciertos parámetros configurables.

¿Qué necesito para utilizar jQuery en mi proyecto?. Lo primero antes de todo es conocer JavaScript y DOM, si no tienes alguna experiencia o un conocimiento previo, seria un poco mas difícil entender su funcionamiento pero si eres alguien autodidacta no se dificultara en absoluto. Regresando a la pregunta, necesitas el archivo .js de jQuery lo puedes descargar de su pagina oficial jquery(Liga) o puedes hacer un "Request" al repositorio de jQuery y así disminuir el tiempo de carga de tu proyecto.

Estructura Basica de una pagina HTML con jQuery.

codigojquery01

Como inicializar jQuery?:

1.- "http://code.jquery.com/jquery-latest.min.js", esa liga es directamente para hacer el request al repositorio de jQuery, como lo mencione anteriormente, lo puedes descargar desde la pagina de jQuery.

2.- "$(document).ready(function (){});", esta linea de codigo es jQuery, lo que hace esta linea es decirle a jQuery que ejecute lo que esta adentro de ella hasta que TERMINE de cargar la pagina completa(imagenes,archivos,ligas,etc).

3.- Al cargar el HTML completo jQuery con "$('#button').click(function(){});" agrega a el id button un evento llamado click, el cual se ejecuta hasta que el objeto con el id fuese "clickeado".

4.- Cuando el objeto con el id button es clickeado, se ejecuta otro evento "$('ul').append('<li>Hola!</li>');", en esta linea lo que se ejecuta es, primero identifica todos los elementos en el HTML con el tag <ul>, enseguida con el evento "append" lo que hace es agrega al final del tag(antes de </ul>) este string "<li>Hola!</li>".

codigojquery02

Como sabe jQuery que objeto seleccionar?:

Para seleccionar un objeto del HTML es necesario: "$()", adentro de los parentesis se escribe el selector que puede ser por, Tag, Id, Name, Type, Class, etc. Para el Tag solo se escribe $("input"), lo que hace jQuery es seleccionar todos los tags que sean input en HTML, para el Id es mas simple(porque no puede haber 2 tags con el mismo id, esto lo hace unico) y el mas utilizado $("#Id"), jQuery selecciona unicamente el elemento con ese id, para seleccionar por nombre es un poco mas complicado porque es un poco mas de caracteres y los nombres raramente son unicos, $("input[name=input]"). para mas informacion en el API de jQuery.

codigojquery03

Más artículos...

Página 1 de 2

Inicio
Prev
1

Encuesta de Hoy

Qué gadget te gustaria tener?

Acerca de: MG

Es un proyecto sobre un sitio web, donde los usuarios podrán leer noticias y artículos de relevancia sobre todo lo que envuelve a la Tecnología; Escritos por profesionales en los ramos de Diseño Web, Programacion Web, TI, etc.

Leer más...

MundoGeek

Comentarios y Sugerencias por favor a: contactoarroba_1mundogeek.com, Gracias por tu preferencia.

Login Form