Tree menus con PHP

Posteado por Juan Benitez | Lenguaje PHP | Sunday 5 July 2009 1:12 am

En esta oportunidad veremos una librería para PHP que nos permite crear menús tipo árbol (Tree menus) como los del explorador de windows usando PHP. La librería en cuestión es HTML_TreeMenu que forma parte de la conocida librería de componentes de PHP, PEAR.

Entre las características de HTML_TreeMenu podemos encontrar:

->> Podemos generar diferentes tipos de menus: HTML dinamico (DHTML), Estático y ListBox.

->> Permite crear menús compatibles con los principales navegadores de la actualidad.

->> Es posible generar múltiples menús por página.

->> Podemos configurar el estilo para cada nodo del árbol, al igual que el link y los eventos generados al expandir y contraer el nodo.

Veamos un ejemplo para aclarar las ideas:

prueba.php

<?php
//incluimos la libreria 
require_once('../TreeMenu.php');
 
// seteamos los iconos
$icon = 'folder.gif';
$expandedIcon = 'folder-expanded.gif';
 
//creamos el menu
$menu  = new HTML_TreeMenu();
 
// creamos los nodos
// se puede ver que para cada nodo es posible configurar los eventos onclick y onexpand
$node1   = new HTML_TreeNode(array('text' => "Primer nivel", 
								   'link' => "test.php", 
								   'icon' => $icon, 
								   'expandedIcon' => $expandedIcon, 
								   'expanded' => true), 
								   array('onclick' => "alert('foo'); return false", 
  									   'onexpand' => "alert('Expanded')")
						);
 
//creamos los sub nodos
$node1_1 = &$node1->addItem(new HTML_TreeNode(array('text' => "Segundo nivel", 
										'link' => "test.php", 
										'icon' => $icon, 
										'expandedIcon' => $expandedIcon))
					);
$node1_1_1 = &$node1_1->addItem(new HTML_TreeNode(array('text' => "Tercer nivel", 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
$node1_1_1_1 = &$node1_1_1->addItem(new HTML_TreeNode(array('text' => "Cuarto nivel", 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
$node1_1_1_1->addItem(new HTML_TreeNode(array('text' => "Quinto nivel", 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon, 'cssClass' => 'treeMenuBold')));
 
//agregamos al menu 2 nodos principales
$menu->addItem($node1);
$menu->addItem($node1);
 
// creamos la clase de presentacion
$treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => '../imagesAlt', 'defaultClass' 
=> 'treeMenuDefault'));
?>

luego agregamos el siguiente código HTML donde incluimos la librería javascript.

continuación prueba.php

....
....
<html>
<head>
    <style type="text/css">
        body {
            font-family: Verdana;
            font-size: 10pt;
        }
 
        .treeMenuDefault {
            font-style: italic;
        }
 
        .treeMenuBold {
            font-style: italic;
            font-weight: bold;
        }
    </style>
 
    <script src="../TreeMenu.js" language="JavaScript" type="text/javascript">
    </script>
</head>
<body>
 
<?php $treeMenu->printMenu()?><br /><br />
 
</body>
</html>

Podemos ver un ejemplo del menu creado en este link DEMO Tree menu

La librería HTML_TreeMenu tiene algunos métodos muy útiles como el createFromStructure(array $params) que acepta un array con una estructura de árbol predefinida, las soportadas son la de Richard Heyes disponible en PHPGuru y la de Wolfram Kriesings disponible en PEAR .

Otro método importante es el createFromXML que permite crear el menu a partir de un string que contiene un formato XML.

Finalmente, HTML_TreeMenu nos provee una clase abstracta HTML_TreeMenu_Presentation la cual podemos extender y crear nuestros propios tipos de menús lo que nos ofrece de una gran libertad para personalizar al máximo nuestros menús.

Como siempre, recomendamos leer la documentación oficial para poder aprovechar totalmente la librería y esperamos que esta introducción les haya sido útil.

Más información:
Documentación oficial

VN:F [1.6.3_896]
Te gusto este post?
Rating: 10.0/10 (3 votes cast)

PHP 5.3.0 la nueva versión

Posteado por Juan Benitez | Lenguaje PHP | Saturday 4 July 2009 12:33 pm

El pasado 30 de junio salió a la luz la nueva versión de PHP, la 5.3.0 es la versión más importante de la serie 5.X ya que corrige más de 140 bugs, además nos acerca algunas de las mejoras que se esperaban para la versión 6 que se ha demorado un poco.

Entre las nuevas funcionalidades podemos encontrar:

Soporte para namespaces, si!! por fin!! una  de las características realmente esperadas por la comunidad ya que ahora podemos agrupar clases, funciones y  constantes que estén relacionadas sin porvocar colisiones con otras librerías o con funciones nativas de PHP

Otro cambio importante es el reemplazo de la librería nativa para soporte de Mysql (libmysql), ahora tendremos a mysqlnd con varias mejoras de performance, fuentes oficiales preveen entre un 5% y un 15% de mejora en el rendimiento.

Garbage collection para referencias cíclicas.

Mejoras en la nueva clase para manejo de fechas y horas, DateTime (aparecida en la versión 5.2), otra funcionalidad muy esperada, la misma incluye posibilidad de realizar operaciones con fechas como agregar, obtener diferencias y formatear, entre otras.

También encontraremos nuevas extensiones nativas como ext/phar que provee una forma de poner una aplicación PHP en un solo archivo con la posibilidad de ejecutarla en el server sin extraerla, es una muy buena forma de distribuir e instalar aplicaciones que me hace recordar al conocido war para aplicaciones web Java.

También tenemos ext/intl que permite la internacionalización de fechas, horas, números y monedas, por lo tanto, podemos ir dejando de lado los viejos arrays que traducían los meses y los días en nuestras aplicaciones.

Finalemente, resta decir que éstas son algunas de las mejoras en la nueva versión de PHP y que recomendamos que visiten el sitio oficial para enterarse y profundizar en las nuevas características del lenguaje.

Mas información:

Internet News

Sitio oficial de PHP

VN:F [1.6.3_896]
Te gusto este post?
Rating: 8.0/10 (2 votes cast)

3 errores comunes programando en PHP

Posteado por Juan Benitez | Lenguaje PHP | Saturday 9 May 2009 2:40 am

Esta es una lista de los 3 errores más comunes que cometemos cuando programamos en PHP, especialmente si hace poco que conoces el lenguaje.

1.- La función header():

Alguna vez nos hemos encontrado con el mensaje “warning: Cannot add header information – headers already sent ….” esto se debe a que cuando el navegador solicita una página el server envía la respuesta en 2 partes, el header, que esta conformado por “datos invisibles” para el usuario como las cookies por ejemplo; y el contenido que es lo que el usuario ve en el navegador, html, imagenes, etc.

Por lo tanto siempre debemos usar la funcion header antes de enviar cualquier dato al navegador; el archivo php.ini contiene una opción que permite habilitar y deshabilitar si queremos que nos avise el error: output_buffering = on / off. En un ambiente de desarrollo es importante tener esta opción deshabilitada ya que sino nunca podríamos darnos cuenta si estamos cometiendo el error.

El siguiente código genera el error (asegúrense de tener output_buffering = off en el php.ini)

<?php
//tratamos de enviar el mensaje hola antes que la redireccion
echo "hola";
header("Location: http://localhost/pruebas/errores2.php");
?>

lo mismo sucede con otras funciones relacionadas con los cabezales HTTP como session_start() y setcookie().

2.- Problemas al comparar:

Es común ver el siguiente código

<?php
//esto es incorrecto
if ($variable = 'algo'){
    //hacemos algo
}
 
//esto es correcto
if ($variable == 'algo'){
    //hacemos algo
}
?>

deben recordar que el operador de comparación de igual es == y el símbolo = es el indicador de asignación de variable.

3.- Olvidar break en el switch:

Cuando usamos la sentencia de control switch, solemos olvidar usar break al final de cada opción, lo que genera por ejemplo, cuando la primera opción es evaluada en true se ejecute el resto de las opciones también, veamos un ejemplo:

<?php
$test = 1;
switch($test){
    case 1: echo 'algo';
    case 2: echo 'algo mas';
    case 3: echo 'mucho mas';
}
?>

en este caso la opción verdadera es la 1 pero al no usar break ejecutará todos los echo siguientes hasta encontrar un break o hasta terminar el switch, lo que puede ser fatal.

Tambien es recomendable usar la opción default lo que nos asegura que si ninguno de los casos es verdadero, se ejecuta el código default y asi podemos prevenir errores.

El código correcto seria

<?php
$test = 1;
switch($test){
     case 1: echo 'algo';
                break;
     case 2: echo 'algo mas';
                break;
     case 3: echo 'mucho mas';
                break;
     default: echo 'opcion por defecto';
}
?>

Bueno espero que estas lineas puedan serle útiles, especialmente si están comenzando con PHP.

VN:F [1.6.3_896]
Te gusto este post?
Rating: 10.0/10 (1 vote cast)

Gráficas con PHP y Open Flash Chart 2

Posteado por Juan Benitez | Lenguaje PHP | Monday 27 April 2009 10:54 pm

En esta oportunidad veremos como generar gráficas profesionales con Open Flash Chart 2, este componente nos permite crear diferentes tipos de gráficas en Flash, entre las opciones que nos ofrece tenemos gráficas de barras, de lineas, de tortas (pies), etc. 

Open Flash Chart es un software open source y esta bajo la licencia LGPL, por lo que como siempre recordamos es posible acceder al código y contribuir con el desarrollo del proyecto en la forma que ustedes quieran. La version 2 de Open Flash Chart esta desarrollada con Actionscript 3 y compilada con Flex. 

Entre las principales características encontramos:

- tooltips en cada punto de la gráfica

- permite exportar la gráfica como imágen

- diferentes tipos de gráficas: lineas, barras, barras 3D, tortas, áreas y más.

- varias librerías disponibles  (php, java, python, etc) 

- carga de datos en formato JSON

Generar la gráfica desde PHP

En este ejemplo vemos como generar datos para la gráfica en forma dinámica, como siempre mostramos un ejemplo simple para que se entienda mejor, pero es claro que en una aplicación real el origen de los datos puede ser una base de datos, archivos, etc.

chat_test.php

<?php
//incluimos la libreria para PHP
include './php-ofc-library/open-flash-chart.php';
 
//datos de prueba
$datos = array(1,2,3,4,5,6,7,8,9);
 
//creamos el titulo de la grafica, en este caso la fecha de hoy
$title = new title( date("D M d Y") );
 
//creamos las barras simples para la grafica
$bar = new bar();
//seteamos los valores para la grafica 
$bar->set_values( $datos );
 
//creamos la grafica
$chart = new open_flash_chart();
//agregamos el titulo y las barras
$chart->set_title( $title );
$chart->add_element( $bar );
 
//generamos los datos en formato JSON    
echo $chart->toString();
 
?>

 

Nótese que lo único que genera este script es una cadena de texto con formato JSON donde se encuentran todos los datos de la gráfica que queremos generar (colores, tipos, valores, etc), esto lo consigue mediante el método toString() de la última línea.

Para asociar este script con el código HTML debemos escribir lo siguiente:

grafica.html

 
<html>
<head>
<!-- usamos esta libreria javascript que viene incluida en la descarga --> 
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript">
swfobject.embedSWF("open-flash-chart.swf", "my_chart", "550", "200", "9.0.0", "expressInstall.swf", {"data-file":"chart_test.php"});
</script>
 
</head>
<body>
 
<p>Prueba grafica</p>
 
<div id="my_chart"></div>
 
</body>
</html>

 

Vemos que para generar el código usamos una librería javascript que es proporcionada por el autor del software, esto nos evita las molestias de escribir todo el código HTML para insertar un objeto Flash el cual es bastante entreverado y no nos aporta nada.
El objeto SWF acepta como parámetro el nombre del archivo que proporcionará los datos de la gráfica. 

Para finalizar solo nos resta decir que es posible generar gráficas dinámicas con Open Flash Chart de forma profesional, simple  y con un muy buen look.  Además, el sitio oficial cuenta con excelente información y varios tutoriales que te ayudarán en tus futuros desarrollos.

Mas información:

Sitio Open Flash Chart 2

VN:F [1.6.3_896]
Te gusto este post?
Rating: 10.0/10 (1 vote cast)

Menu dinámico con PHP y CSS Drop-down menu framework

Posteado por Juan Benitez | Lenguaje PHP | Tuesday 7 April 2009 12:56 am

En esta oportunidad quiero presentarles el framework CSS Drop-down menu para crear menus desplegables y como podemos usarlo para generar menus en forma dinámica con PHP.

La ventaja de usar este framework es que nos evita el uso de javascript, flash u otro tipo de tecnología para crear menus. Usando CSS hacemos que nuestro sitio sea más compatible con los estándares web y por lo tanto más accsesible para navegadores y usuarios. Además, aumenta la eficiencia y velocidad del sitio ya que no se sobre carga con librerías javascript.

Otro aspecto a favor es que CSS Drop-down menu esta bajo licencia GPL por lo que podemos usarlo, contribuir y mejorar el proyecto.

Debido a que CSS Drop-down menu se basa en los tags ul y li para crear las diferentes partes del menu, es realmente útil cuando queremos generar el menu dinámicamente, es decir, cuando las opciones se cargan por ejemplo, desde una base de datos y por lo tanto lo único que tenemos que generear es código HTML puro.

Otra ventaja del framework es que nos permite cambiar el layout del menu simplemente incluyendo el archivo CSS correspondiente y cambiando la clase CSS usada en el tag ul principal; de igual forma podemos cambiar la apariencia mediante themes lo que nos provee de gran flexibilidad a la hora de ajustar los menus a nuestras necesidades.

Como punto en contra, no podemos dejar pasar el hecho de que usa un mínimo de javascript para que los menus puedan visualizarse de forma correcta en IE 6 y sus anteriores versiones.

Bueno, presentado el framework, vamos a pasar a ver un ejemplo sencillo y claro sobre como implementar el menú dinámico con PHP.
Lo primero que debemos hacer es descargar el framework CSS y descomprimirlo en nuestra carpeta de trabajo.

<ul id="nav" class="dropdown dropdown-vertical">
 <?php
 
$menu[] = array('Colores' => array('Rojo', 'Verde', 'Azul') );
$menu[] = array('Animales' => array('Perro', 'Gato', 'Conejo') );
 
foreach ($menu as $menu_key => $menu_item){
	foreach($menu_item as $menu_name => $sub_menu){
		echo "<li><a href='#'>".$menu_name."</a>";
		if (isset($sub_menu)){
			echo "<ul>";
			foreach($sub_menu as $items){
				echo "<li><a href='#'>".$items."</a>";
			}
			echo "</ul>";
		}
		echo "</li>";
	}
}
 
?>
</ul>

Para este ejemplo, usamos un array pre cargado con las opciones del menú, pero es claro que en general serán cargadas desde otras fuentes (base de datos, archivos, etc.). La idea básica es iterar el array de acuerdo a la estructura de nuestro menú e ir generando las etiquetas ul y li .

Obviamente, la complejidad del menú depende de los requerimientos de la aplicación o del sitio que estemos desarrollando, por ejemplo se podría agregar información en el array para cada opción del menú, por ejemplo la url, la clase, etc.; sin embargo, este ejemplo abre los caminos para crear todo tipo de menus.

Más información:
http://www.lwis.net/free-css-drop-down-menu/

Ver ejemplo del código aquí

VN:F [1.6.3_896]
Te gusto este post?
Rating: 10.0/10 (1 vote cast)
Pagina siguiente »



Tecnopedia.net - 2009 / Condiciones de Uso / Contacto / RSS
Tecnopedia.net desarrollada bajo licencia Creative Commons Creative Commons License