Fechas en Español con PHP y setlocale

Que tal queridos lectores hoy es viernes y hoy toca, si hoy toca un pequeño tutorial donde hablare acerca de como poner las fechas en español cuando trabajamos con PHP, existen muchas formas de hacerlo, que si con una función, que con arrays, que set_locale, por mencionar algunas de las muchas formas con las que podemos realizar nuestro objetivo, obviamente todo depende del nivel de conocimiento que se tenga en PHP buscaremos la forma más fácil para nosotros de implementar nuestros scripts.

Empezare a hablar acerca de este tema tomando como entendido que ya tienen conocimiento básico de PHP y de la Función Date, por si tienen sus dudas hace tiempo publique un tip acerca de esta función les recomiendo lo revisen antes de empezar.

Sin más rodeos a codear sea dicho.

Cuando mandamos a imprimir una fecha con PHP aparece en ingles y con el formato de Unix por defecto, nosotros podemos decir que es lo que queremos mostrar y como queremos hacerlo.


<?php
 echo date('l, d M Y');

//Formato de salida: Friday, 24 Feb 2012
 ?>

Partiendo de esto, como logramos poner en español esa fecha, vamos a hacerlo de la manera más facil que es configurar la función setlocale la cual establece la información de la configuración regional y la cual hará todo el trabajo por nosotros. La función setlocale  nos ofrece traducciones de cosas básicas, como la fecha, que suelen venir en el sistema operativo. Veamos como configurar setlocale para el idioma Español:

Algo muy importante para tener en cuenta al momento de trabajar con la función setlocale tambien tenemos que utilizar la función strftime la cual formatea una fecha/hora local según la configuración regional que manejemos con setlocale.

La secuencia estándar para el idioma Español que debería funcionar en cualquier plataforma es:

setlocale(LC_ALL,”es_ES”);

LC_ALL: Es una constante que especifica la categoría de las funciones afectadas por la configuración regional, en este caso toma en cuanta todas las constantes.
es_ES:  Los primeros 2 caracteres identifican al idioma, los 2 últimos al país.

Ejemplo:

<?php
setlocale(LC_ALL,"es_ES");
echo strftime("%A %d de %B del %Y");

//Salida: viernes 24 de febrero del 2012
?>

Listo con esto ya tenemos nuestra fecha en español sin mayor problema, ya nada más es cosa de darle formato, pero eso ya les toca a ustedes XD.

Pero

Qué pasa si nuestro servidor no soporta setlocale :S , bueno para esto una forma fácil de hacerlo es usar arrays.

En este caso podemos hacer la traducción nosotros mismos. Por ejemplo, para el día de la semana haríamos algo así:

<?php

$dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");

echo $dias[date('w')]." ".date('d')." de ".$meses[date('n')-1]. " del ".date('Y') ;
//Salida: Viernes 24 de Febrero del 2012

?>

Explicando un poco el código por si dicen que carajo hizo este tipo, bueno vamos por partes:

Dentro de la variable $dias utilice un array en el que almacene los días de la semana, recordemos que los  array sirven para almacenar, manejar y operar conjuntos de variables.

Al momento de mandar a imprimir en pantalla utilice la función date con el formato ‘w’ que nos devuelve la representación numérica del día de la semana (0 para domingo hasta 6 para sábado).
Para la parte de los meses utilice la misma lógica, pero hay que tomar en cuenta que el formato ‘n’ nos devuelve los números de los meses de 1 hasta 12, entonces esto lo que nos causaría es que se recorrerían los meses una posición, ejemplo si dejamos la $meses[date(‘n’)] lo que nos pondría seria el mes siguiente en lugar de poner el mes actual, ejemplo, si estamos en Febrero pondría Marzo y eso no es lo que queremos, de ahí que se le haya agregado el -1, con esto tenemos resuelta esta parte, si se preguntan por que pasa eso, es por que los arrarys empiezan a contar desde 0 y no desde 1, así como tenemos el arreglo de $meses sería de 0 hasta 11 ahí tendríamos las 12 posiciones.

Bueno espero que les sirva estos tips, cualquier cosa dejen su mensaje y estaré al pendiente para dar respuesta a sus dudas, cabe aclarar que no soy un master o gurú de PHP, todo lo que e aprendido es gracias a tutoriales y naufragando en internet y lo comparto con ustedes que como yo en algún momento nos encontramos aprendiendo cada día algo nuevo.

Saludos

Fechas en Español con PHP y setlocale

Rescatando datos con Flashvars y PHP

Hola antes que nada una disculpa a los pocos o muchas que vengan vistando este blog, lo he tenido un poco abandonado por el exceso de trabajo que tengo, pero tratare de ponerme a mano con una serie de tips y trucos tanto en Flash como PHP, de momento les dejare este sencillo ejemplo, pero que en algún momento dado nos pueda ser de utilidad así que empecemos.

Flashvars

Es un propiedad del Flash Player que ofrece un método eficaz para enviar variables desde el  HTML de tu página al archivo SWF, esta función fue implementada a partir de Flash Player 6, en esta ocasión veremos como utilizarla con AS2 y PHP.

Pasando variables FlashVars
Si estas usando el método tradicional de insertar SWFs, pueden asignarlos en un parámetro adicional al cual deben llamar flashvars y cuyo valor debe contener todas las variables a pasar codificadas en url.

<object</a> width="200" height="100">
<param</a> name="movie" value="movie.swf" />
<param</a> name="<strong>FlashVars</strong>" value=<strong>"var1=valor1&var2=valor2"</strong> />
<embed src="miSwf.swf" width="100" height="100
FlashVars="var1=valor1&var2=valor2"/>
</object>

Pasar variables por URL

Para realizar el paso de variables vía URL utilice $_GET el cual es un array asociativo de variables el cual pasa los parámetros vía URL.

Para pasar las variables de una página a otra lo podemos hacer introduciendo dicha variable dentro del enlace hipertexto de la página destino. La sintaxis sería la siguiente:

mipagina.html

<a href="mipagina.php?var1=valor1&var2=valor2">Mi enlace</a>

Así es como recogeriamos esos valores de las variables con la función $_GET

mipagina.php

<?php
$recojeVariable1=$_GET["var1"];
<pre>$recojeVariable2=$_GET["var2"];
echo $recojeVariable1;
echo $recojeVariable2;
</pre>
?>

Entendido esto vamos a poner manos a la obra,

Ahora veamos el codigo que se necesita en flash para mostrar un mensaje cargado vía Flashvars, aqui lo unico que hacemos en declarar una variable de tipo String en la cual le vamos a asignar los datos cargados desde la URL.

var my_var:String = new String();
my_var = my_flashvar;
my_txt.text = my_flashvar;

Lo unico que tendrias que poner en tu documento Flash es un campo de texto de tipo dinámico y asignarle el nombre de instancia my_txt.

En nuestra página en PHP lo que vamos a hacer es a declarar una variable en la que guardaremos el valor de via URL.

<?php
$nombre=$_GET["nombre"];
?>

Incluyen su pelicula swf en el mismo archivo y agreguen un
” /> dentro del object.

Ejemplo:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="813" height="541">
 <param name="movie" value="felicitacion.swf" />
 <param name="flashvars" value="my_flashvar=<?php echo $nombre;?>" />
 <param name="quality" value="high" />
 <param name="wmode" value="transparent" />
 <embed src="felicitacion.swf"
 width="813"
 height="541"
 quality="high"
 pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"
 type="application/x-shockwave-flash"
 flashvars="my_flashvar=<?php echo $nombre;?>" wmode="transparent"></embed>
</object>

Ya nada más es cosa que lo prueben, les dejo un ejemplo de como funciona.

http://www.atid.edu.mx/comunidad/felicitacion.php?nombre=flashreloco

Ver Ejemplo

En la URL cambien el nombre de Flashreloco por el suyo.

Saludos

Rescatando datos con Flashvars y PHP

Como crear un feed RSS con MySQL y PHP

Hola este es el segundo tip que escribo relacionado a lo que es PHP y MySQL cabe mencionar que mis conocimientos son algos básicos en algunas cosas, sin embargo lo que se y he aprendiendo lo comparto con ustedes, el ejemplo que les pondré a continuación esta basado en un ejemplo que desarrollo Alejandro Suazo, es uno de los ejemplos más difundidos aunque contiene algunos errores de escritura y  sintaxís, todos ellos los e arreglado y el ejemplo ya esta  funcional,  espero les sirva como me ha servido a mi.

Para empezar entendamos primero que es RSS:  El feed RSS es un sencillo formato de datos que es utilizado para redifundir contenidos a suscriptores de un sitio web. El formato permite distribuir contenido sin necesidad de un navegador, utilizando un software diseñado para leer estos contenidos RSS (agregador). A pesar de eso, es posible utilizar el mismo navegador para ver los contenidos RSS. Las últimas versiones de los principales navegadores permiten leer los RSS sin necesidad de software adicional.

Existen 3 formatos de RSS :

RSS (0.91) Rich Site Summary

RSS (0.0 y 1.0) RDF Site Summary

RSS (2.0) Really Simple Sindication

Para mas informacion sobre el RSS, pueden visitar la pagina de Wikipedia.

¿Cómo creamos el documento RSS?

Es muy sencillo crear un documento RSS ya que en si es un archivo XML.

  • El archivo debe comenzar indicando la versión de XML y la codificación. En este caso  utilizo codificación “iso-8859-1“.
  • A continuacíon añadimos las etiquetas de apertura y cierre <rss></rss> e indicamos la versión del tipo de documento  y después tendremos que crear un canal donde vamos a publicar nuestros contenidos .
  • Los tres elementos siguientes son obligatorios en todo feed RSS e identifican a nuestra feed y a nuestro sitio web. En primer lugar indicaremos el título de nuestro sitio, a continuación especificamos la url donde se puede encontrar nuestra feed RSS y por último una breve descripción de lo que se puede encontrar en nuestro sitio.
  • Después de las tres líneas anteriores añadiremos un elemento item por cada entrada que vayamos a incluir en nuestro feed.
  • Cada item consta de tres elementos obligatorios:
    • title. Que contiene el título del artículo.
    • link. Que contiene el enlace directo a la versión completa del artículo. De esta forma los suscriptores interesados podrán leer el artículo completo.
    • description. Que contiene un resúmen de lo que encontraremos en el artículo.

    Y varios elementos opcionales, de los cuales utilizo únicamente dos:

    • pubDate. Que indica la fecha de publicación del artículo.
    • category. Que contiene el nombre de la categoría al que pertenece el artículo.

<?xml version=”1.0″ encoding=”iso-8859-1″ ?>
<rss version=”2.0″>
<channel>
<item>
<title>
El título de mi artículo 1</title>
<link>http://www.miweb.es/miArticulo1.htm</link>
<description>Resúmen del artículo 1</description>
<pubDate>Lun, 2 Dic 2009 11:56:26 GMT</pubDate>
<category>Mi categoria 1</category>
</item>
</channel>
</rss>

Ya que tenemos más o menos claro lo que es RSS podemos poner manos a la obra y empezar a crear nuestro feed de noticias para nuestra página web.

Manos a la obra

Base de datos
El primer paso será crear la base de datos y añadir los datos. Si nuestra página ya utiliza algún tipo de base de datos para guardar los artículos no será necesario crear otra base de datos ni tampoco hacer cambios, solamente necesitaras adecuar el script a tus necesidades.

  • id_noticia – no es obligatorio pero a mi en lo particular me gusta manejar por números los registros
  • autor – nombre del autor que publica las noticias
  • titulo – título que veremos en el RSS
  • categoria –categoría o tag del articulo (nos permitirá organizar mejor)
  • fecha – fecha del articulo para la organización (los más nuevos son los primeros)
  • noticia – nuestros artículos se guardaran en este campo

Esta sería la estructura SQL para facilitar un poco el como funciona este ejemplo:

CREATE TABLE IF NOT EXISTS `noticias` (
`id_noticia` int(4) NOT NULL auto_increment,
`autor` varchar(255) default NULL,
`titulo` varchar(255) default NULL,
`categoria` varchar(255) default NULL,
`fecha` date NOT NULL,
`noticia` text,
KEY `id_noticia` (`id_noticia`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

Para utilizar los datos genere un archivo llamado conexion donde almacenamos la información de nuestra BD.

Archivo: conexion.php

<?php
function Conectarse()
//conectamos a la base
if (!($link=mysql_connect(“servidor”,”usuario”,”contraseña”)))
{
echo “Error conectando a la base de datos.”;
exit();
}   //Seleccionamos la base
if (!mysql_select_db(“base_de_datos”,$link))
{
echo “Error seleccionando la base de datos.”;
exit();
}
return $link;
}
?>

Ya que tenemos nuestra tabla en nuestra base de datos, vamos a empezar a ver el script que nos genera nuestro Feed de noticias.


Archivo:  rss.php

<?php

//Indicamos a php que lo que estamos por crear es un archivo XML
header
(‘Content-type: text/xml; charset=”iso-8859-1″‘, true);

//y como todo archivo XML debemos definirlo de esta manera:
echo
‘<?xml version=”1.0″ encoding=”iso-8859-1″?>‘;

//Aquí la conexión o archivo de conexión a nuestra base de datos
include
(“conexion.php”);
$link=Conectarse();

//Hacemos la consulta y la ordenamos por id para mostrar siempre el último
$resultado=mysql_query(“select * from noticias order by id_noticia Desc”,$link);

//”Cortaremos” el artículo en 300 caracteres para hacer nuestra descripción
$descripcion=substr($row[noticia],0,300).”…”;

// Generamos nuestro documento
echo ‘<rss version=”2.0″>’;
echo ‘<channel>
<title>Nombre de nuestra web</title>
<link>http://www.miurl.mx/</link&gt;
<language>es-CL</language>
<description>Descripción de nuestro blog</description>
<generator>Autor del RSS</generator>’
;

//Creamos un while para poder generar todos los extractos de noticias de nuestro sitio

while($row = mysql_fetch_array($resultado)){

echo<item>
<title>’
.$row[titulo].‘</title>
<link>noticias.php?id=’
.$row[id_noticia].‘</link>
<pubDate>’
.$row[fecha].‘</pubDate>
<category>’
.$row[categoria].‘</category>
<description><![CDATA[
.$row[noticia].‘]]></description>
</item>
‘;
}//cerramos el while
echo

//Cerramos nuestras etiquetas channel y rss
</channel>
</rss>’
;
?>

Podemos ver que la estructura del documento es sencilla y hasta repetitiva. Básicamente podemos dividirlo en dos: <channel> e <item> en donde <channel> contiene a <item> . El primer bloque antes de <item> se llena con los datos de nuestro blog o web, luego bajo la etiqueta mencionada van los datos del post o noticia a mostrar.

Una práctica sana es utilizar la etiqueta <content:encoded> , para proporcionar la información que contiene nuestro artículo completo en vez de <description> ¿por qué?, porque los sistemas de recopilación de feeds o lectura de estos, leen la etiqueta <description> para darle al lector un resúmen de lo que trata el post. Lo menciono, porque hay sistemas de blog que usan <description> para generar la información del artículo completo y no dan la opción de ver si queremos o no seguir leyéndo lo que nos ofrecen, aparte de ocupar espacio. Para estas dos etiquetas usamos la sección XML <![CDATA[ ]]> (character data), básicamente para que el XML no interprete ciertos caracteres como propios de su lenguaje y trate de ejecutarlos.

Hay que tener cuidado al cerrar bien todas las etiquetas.

Para hacer accesible tu canal RSS debes de poner un enlace a tu archivo desde tu página web.
Bastará con que insertes una línea como la que se muestra a continuación en el código HTML de la página en la que quieras que aparezca el enlace:

Nota: Recordar poner siempre type="application/rss+xml" en el enlace.

<a type="application/rss+xml" href="rss.php"><img src="icono_rss.gif"></a>

También debemos incluir lo siguiente entre las etiquetas <head> de nuestras páginas:

<link rel="alternate" type="application/rss+xml" title="My RSS Feed" href="rss.php" />

De esta forma los navegadores (al menos los más utilizados, Firefox e Internet Explorer, en sus últimas versiones) detectarán que nuestro sitio tiene un feed RSS 2.0 y mostrarán un icono a los visitantes de nuestro sitio en la barra de direcciones para suscribirse directamente, en algunos navegadores viejos no se visualiza bien los feed, o también puede que tu servidor no reconozca este tipo de archivos.

Espero les sirva este tip, se que hay muchas formas de hacerlo, pero a mi en lo particular me a funcionado,  cualquier duda o sugerencia y con gusto les responderé.

Saludos

Como crear un feed RSS con MySQL y PHP

Uso de Fecha con PHP

Este será uno de varios tips que iré publicando en lo que se refiere a la programación con PHP, no tiene mucho que por azares del destino tuve que volver a programar, así que ire publicando algunos de los ejemplos que vaya realizando, los cuales espero les sirvan a mas de uno.

Para empezar voy a hablar de la función de php date() la cuál se usa para expresar fechas y horas en formato estándar GMT, entre los paréntesis podemos agregar distintos comandos para que nos muestre un determinado formato y orden. Antes de dejar algún ejemplo, primero observen la tabla de comandos para la función date():

Código Resultado
a am o pm
A AM o PM
h Hora (de 1 a 12)
H Hora (de 0 a 23)
i Minutos
s Segundos
j Dia (sin los ceros)
d Dia (con los ceros)
D Abreviacion del dia
l Nombre del dia
z Numero de dia del año (desde 1 hasta 365)
m Numero del Mes
M Abreviacion del mes
F Nombre del mes
y Año (formato de 2 digitos)
Y Año (formato de 4 digitos)

Ejemplo de su aplicación :

<?php $hoy = date(“j/m/Y”);
echo $hoy;

//La salida seria de la siguente forma: día/mes/año Ej. 24/11/2009

?>

En donde: “j” es el número de día (sin incluir ceros en caso de que sea un solo dígito), “m” el numero del mes, “Y” el año con formato de 4 dígitos.

Otro ejemplo en el que lo podrían ocupar, el cuál fue mi caso es para mostrar algún mensaje en determinada fecha para eso tenemos que hacer lo siguiente:

<?php
// Tomando como referencia que hoy es 24 de noviembre del 2009 y que queremos mostrar un mensaje para determinados días podemos hacer los siguiente:

// Declaramos una variable en donde almacenaremos la fecha

$hoy = date(“j”);

//-Hacemos uso de la función switch para que dependiendo del numero de día nos muestre un mensaje diferente.

switch ($hoy) {
case 24:
echo ”    Mensaje a mostrar para el día 24 “;
break;
case 25:
echo ”   Mensaje a mostrar para el día 25  “;
break;
case 26:
echo “Mensaje a mostrar para el día 26”;
break;
default:
echo “No hay mensajes para hoy”;

}
?>

Espero les sirva este ejemplo si tienen alguna duda ya saben que pueden dejar su mensaje y con gusto les respondo.

Hasta la próxima, saludos.

Uso de Fecha con PHP

Protegiendo nuestro sitio web con usuario y contraseña

Que tal el día de ayer me encontre con que tenia que bloquear un directorio de mi sitio web con contraseña, pero como tenia flojera de generar un sistema de autentificación ,  recorde algo acerca de que que con los archivos .htaccess y .htpasswd, se puede proteger tus directorios por medio de un usuario y contraseña.

Entonces lo que hice pues fue manos a la obra, lo primero fue buscar información acerca de el funcionamiento de estos archivos, despues de buscar y de que mi servidor hacia cosas raras con ellos entonces cambie la estrategia y busque por recomendacion de un amigo Autentificación HTTP con PHP en la pagina de php.net , en la cual encontre este script el cual me ahorro muchos dolores de cabeza, espero les sirve simplemente hice la traducción de las variables para poder entender mejor como funciona.

<?php
//Declaro los passwords por medio de un arreglo
 $passwords_validos = array ("lacope" => "coperativa","randy" => "123");
 $usuarios_validos = array_keys($passwords_validos);

$usuarios = $_SERVER['PHP_AUTH_USER'];
 $contrasena = $_SERVER['PHP_AUTH_PW'];

$validar = (in_array($usuarios, $usuarios_validos)) && ($contrasena == $passwords_validos[$usuarios]);

if (!$validar) {
 header('WWW-Authenticate: Basic realm="La Cope"');
 header('HTTP/1.0 401 Unauthorized');
 die ("No estas autorizado para estar en este sitio.");
 }

echo "<div id='hola'><p>Bienvenido $usuarios</p></div>";

echo "<p>Felicidades estas dentro</p>";
 //O puedes mandar a llamar alguna otra página

//include('index2.php');
 ?>

Con ese pequeño script lo anexas en la parte superior en tu archivo index  que se encuentre en la carpeta a proteger y listo, ya tienes protegida tu sitio sin necesidad de bases de datos.

Saludos

Protegiendo nuestro sitio web con usuario y contraseña