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)

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)

Introducción a Perl

Posteado por Dario Fernandez | Perl | Tuesday 7 April 2009 10:22 pm

En este artículo voy a hacer una breve introducción a el lenguaje de programación Perl; además, comentaré algunas de sus características que me parecen importantes.

Perl es utilizado tanto en proyectos públicos como privados, su distribución es de código abierto y está bajo la licencia GPL, puede correr en varias plataformas, como unix/linux, Macintosh, Windows y VMS entre otras.

Perl toma las mejores características de lenguajes como c, awk, sed, sh y otros, la interfaz de bases de datos (dbi) brinda soporte para varios proveedores como Oracle, Sybase, Postgres, MySQL, etc.  

Soporta dos tipos de programación, de procedimientos y orientado a objetos; además, existen más de 500 módulos hechos por terceros y disponibles a través de cpan, permitiéndole crecer sin tener que modificar su núcleo.

Perl es uno de los lenguajes de programación dinámicos más populares ( ver artículo ) debido a su gran capacidad de manipulación de texto y su rápido ciclo de desarrollo, el modulo cgi.pm que viene con la distribución estándar hace sencillo el manejo de formularios HTML, puede manejar datos Web encriptados, muy utilizados en transacciones de comercio electrónico, puede ser embebido en servidores Web para optimizar el rendimiento, así como lo hacen mod_perl con Apache.

Estas son algunas de las principales fortaleza de este excelente lenguaje de programación y próximamente estaremos escribiendo más artículos relacionados con el mundo de Perl.

 

Sitio oficial:

http://www.perl.org/about.html

Sitios de interés:

http://www.cpan.org/

http://es.wikipedia.org/wiki/Perl

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

Mozilla Labs presenta Bespin

Posteado por Juan Benitez | Actualidad y Noticias | Tuesday 17 February 2009 9:28 pm

Pocos días atrás Mozilla Labs revelo la versión 0.1 de su proyecto experimental llamado Bespin, se trata de un Framework basado en Web para edición de código, por ahora soporta las funciones básicas (coloreo de sintaxis para Javascript, HTML, CSS; importación/ exportación de proyectos, etc.) pero realmente se ve muy prometedor.
La gente de Mozilla liberó el código fuente bajo la licencia MPL e invitan a los desarrolladores a colaborar con el proyecto.
Según sus creadores la aplicación implementa algunas etiquetas de la nueva versión de HTML 5 que les han permitido generar una mejor experiencia para el usuario.
Si quieres ver el video introductorio (en inglés) puedes hacerlo desde aquí, lo recomendamos ya que muestra varias características interesantes adicionales.

Por mas información https://bespin.mozilla.com/

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

Campos de selección múltiple en PHP

Posteado por Juan Benitez | Lenguaje PHP | Tuesday 3 February 2009 1:09 am

Vamos a ver un forma simple de trabajar con campos de selección múltiple; es decir, que se puede seleccionar más de un valor a la vez. Para que quede mas claro vamos a ver un ejemplo completo, supongamos que tenemos el siguiente formulario:

index.html

1
2
3
4
5
6
7
8
9
10
11
   <form name="prueba" action="proceso_colores.php" method="POST">
         Cuales son tus colores preferidos?
        <br>
        Rojo <input type="checkbox" name="color_rojo" value="rojo" />
        <br>
        Azul <input type="checkbox" name="color_azul" value="azul" />
        <br>
        Verde <input type="checkbox" name="color_verde" value="verde" />
        <br>
        <input type="submit" value="Enviar" name="btn_colores" />
    </form>

Lo que vemos son 3 campos tipo checkbox llamados: color_rojo, color_azul y color_verde, típicamente recuperaríamos los valores de los campos de la siguiente forma:

proceso_colores.php

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//recupero mediante POST
$rojo = $_POST['color_rojo'];
$azul = $_POST['color_azul'];
$verde = $_POST['color_verde'];
 
echo $rojo  . '<br>';
echo $azul  . '<br>';
echo $verde . '<br>';
 
//despues trabajamos con las variables normalmente...
 
?>

Esto es bueno siempre que nuestros campos sean independientes, pero que sucede cuando queremos seleccionar multiples valores ? tendriamos que recuperar en nuestro código PHP todas las variables… y si el campo es cargado dinámicamente? o si los valores posibles son variables?… todo esto genera sin dudas trabajo extra, dado que tendríamos que retocar el código cada vez que algo cambie.
Por suerte, existe una forma sencilla de trabajar con este tipo de campos; ahora veremos que cambios debemos hacer en nuestros archivos .

index.html

1
2
3
4
5
6
7
8
9
10
11
<form name="prueba" action="proceso_colores.php" method="POST">
         Cuales son tus colores preferidos?
        <br>
        Rojo <input type="checkbox" name="colores[]" value="rojo" />
        <br>
        Azul <input type="checkbox" name="colores[]" value="azul" />
        <br>
        Verde <input type="checkbox" name="colores[]" value="verde" />
        <br>
        <input type="submit" value="Enviar" name="btn_colores" />
    </form>

Nótese que cambiamos los nombres de los checkboxes y agregamos los paréntesis rectos [], ahora todos se llaman colores[], al hacer esto el intérprete de PHP almacena todos los valores chequeados en el array colores[] lo que nos permite hacer lo siguiente:

proceso_colores.php

1
2
3
4
5
6
<?php
$colores = $_POST['colores'];
 
$texto_colores = implode(', ', $colores);
echo ' Tus colores son favoritos son: ' . $texto_colores;
?>

El código anterior recupera la variable colores (que ahora es un array y tiene cargados los valores chequeados); luego usamos la función implode para generar una cadena de texto y poder mostrarla.

Ahora que sabemos como trabajar con este tipo de campos, vamos a ver un ejemplo donde generamos una cadena para usarla en una sentencia SQL

proceso_colores.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$colores = $_POST['colores'];
 
foreach($colores as $color){
    $valor = "'".$color."'";
    $colores_aux[] = $valor;
}
$valores = implode(', ', $colores_aux);
$sql_valores = "(" .$valores. ")";
 
$sql_insert = "INSERT INTO TBL_COLORES (color) VALUES " . $sql_valores. ";";
echo $sql_insert;
 
?>

Lo que hacemos es recuperar la variable e iterar sobre el array para poner en cada valor las comillas correspondientes; luego, guardamos las cadenas nuevamente en un array auxiliar y finalmente usamos la función implode para agregar las comas. La cadena generada se concatena en la sentencia INSERT y listo.

Podemos ver que es una técnica muy util ya que nos permite manejar este tipo de campos variables de forma simple. Además, hace nuestro código mas reusable ya que ahora no tenemos que cambiar nada en el caso que se agreguen mas valores.

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



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