Programatik

December 26, 2007

Sencillo sistema de tips en javascript

Filed under: JavaScript — Rafa @ 2:11 pm

Un cliente nos ha pedido un sistema que permita incluir un globo de información que se muestre al pasar sobre un enlace concreto.

Para lograr este efecto hemos escrito este sencillo código que hemos bautizado como TipSystem, ya que puede resultar útil para haer un sistema de tips o consejos basados en globos de información emergentes.

Se puede ver una demostración de su funcionamiento en el Lab:

http://www.rafachacon.com/lab/TipSystem/

En el código fuente podemos ver cómo los enlaces que necesitamos que reaccionen al pasar el ratón por encima tienen un atributo id de la forma tslink-NombreDelTip. También tenemos una sere de capas ocultas con id de la forma tip-NombreDelTip.

En el evento onload en Body se llama a la función javascript TipSystem() que inicia el proceso de captura de tips y aplicación de acciones a los eventos onmouseover de los enlaces marcados como sensibles para los tips.

Enlaces

  • http://www.rafachacon.com/lab/TipSystem/
  • October 29, 2007

    Ejemplo de uso de eval() y objetos en PHP

    Filed under: OOP, php — Rafa @ 7:30 pm

    Supongamos una clase que gestiona productos con tres características fundamentales: ID, Nombre y Color.

    Podemos escribir esta clase de la siguiente forma:

    Class Product {
    	private $id;
    	private $name;
    	private $colour;
     
    	public function Product($id, $name, $colour) {
    		$this->id = $id;
    		$this->name = $name;
    		$this->colour = $colour;
    	}
    }

    Como se puede ver, el constructor recibe los detalles del producto y carga las propiedades con sus valores correspondientes.

    Supongamos ahora que queremos obtener el valor de una propiedad dada del producto cargado. Con tres propiedades es sencillo, pues podríamos hacer métodos del tipo getName(), getID(), etcétera. Sin embargo, para un gran número de propiedades puede ser útil disponer de un método getProperty($name) por el cual obtendremos el valor de la propiedad indicada por el argumento $name.

    Para estos casos es muy útil disponer del uso de la función eval(). De esta forma, la clase anterior se extenderá a la forma siguiente:

    Class Product {
    	private $id;
    	private $name;
    	private $colour;
     
    	public function Product($id, $name, $colour) {
    		$this->id = $id;
    		$this->name = $name;
    		$this->colour = $colour;
    	}
     
    	public function getProperty($name) {
    		return eval("\$this->$name;");
    	}
    }

    Nótese cómo en el cuerpo de eval colocamos una barra invertida para escapar el símbolo del dólar ($) en $this con el fin de que $this no se evalúe antes de tiempo, sino que forme parte del conjunto de la cadena a evaluar.

    Un ejemplo de uso sería el siguiente:

    $p =& new Product(1, "sacacorchos", "plateado");
    echo $p->getProperty('Colour');

    que daría como resultado “plateado”.

    Enlaces

  • http://es.php.net/manual/es/function.eval.php
  • September 13, 2007

    Manejo de datos de un select múltiple desde PHP

    Filed under: php — Rafa @ 1:02 am

    Elemental significa cerca de los elementos lo cual no quiere decir que sea necesariamente sencillo. A veces, lo elemental se nos escapa, con frecuencia, por desuso.

    Es el caso de cómo manejar la recogida de datos vía PHP enviados a través de un formulario donde hay un campo select múltiple.

    Supongamos el caso de este ejemplo que se puede ver en el Lab. Tenemos un select con varias opciones a elegir y cuyos valores (atributos value de las etiquetas option) están numerados de 0 en adelante.

    Si nuestro código para el campo select es de la forma

    <select name="options" id="options" multiple="multiple">
    	<option value="0">Option #1</option>
    	<option value="1">Option #2</option>
    	<option value="2">Option #3</option>
    	<option value="3">Option #4</option>
    	<option value="4">Option #5</option>
    	<option value="5">Option #6</option>
    	<option value="6">Option #7</option>
    	<option value="7">Option #8</option>
    	<option value="8">Option #9</option>
    	<option value="9">Option #10</option>
    </select>

    no podremos recoger qué elementos se han seleccionado ya que solo obtendremos el último valor seleccionado.

    Para solventar esto se debe escribir el código de la siguiente manera

    <select name="options[]" id="options" multiple="multiple">
    	<option value="0">Option #1</option>
    	<option value="1">Option #2</option>
    	<option value="2">Option #3</option>
    	<option value="3">Option #4</option>
    	<option value="4">Option #5</option>
    	<option value="5">Option #6</option>
    	<option value="6">Option #7</option>
    	<option value="7">Option #8</option>
    	<option value="8">Option #9</option>
    	<option value="9">Option #10</option>
    </select>

    De esta forma indicamos que options es un array de valores y podremos, desde PHP, obtener los elementos seleccionados.

    Si el formulario se ha enviado vía post, el array de valores será

    $_POST['options']

    Como siempre, el código para descargar, aquí.

    Enlaces

  • http://www.rafachacon.com/lab/form-multiselect/
  • http://www.rafachacon.com/lab/form-multiselect/index.zip
  • « Previous PageNext Page »

    Powered by WordPress