martes, 27 de diciembre de 2011

PHP y FLASH

Pues eso, ahora les platicare un poco de como conjuntar estas 2 tecnologías. Adobe Flash integra un lenguaje de programación llamado actionscript y van en la versión 3.0 con esto le dieron mas interactividad a flash (por cierto mejoraron mucho la orientación a objetos), ahora no solo es una simple animación si no ahora puedes programar eventos, funciones, etc. Con lo que puedes realizar interfaces muy ricas en contenido visual y la vez interactivas con el usuario.

Pero que pasa si ahora quieres guardar datos, por ejemplo imaginemos que se te a ocurrido un juego, que revolucionara la forma de jugar video juegos por Internet, XD bueno ya siendo mas realistas, imaginemos que quieres o te han pedido hacer una pagina web muy vistosa con mucho flash y bla bla y a ti se te da el diseño gráfico, ok pero el sitio web en algunas partes necesitas guardar, configuraciones y/o datos del usuario, para ellos vas a tener que guardar la información en un sistema de BBDD.

Bueno, esto en lo básico que tienes que saber, el nucleo de la comunicación entre flash y php descansa en la clase LoadVars, por lo que tienes que instanciar un objeto de dicha clase, asi:

var objeto = new LoadVars();


Ahora podemos enviar y recibir datos, para recibir datos desde un script php, solo hay que indicar que script, ejemplo:

objeto.load("script.php");
objeto.onLoad = function {
      un_texto.text=this.mensaje; //aquí recibimos la respuesta del script php, las variables se accesan como propiedades del objeto y tienen el mismo nombre que como se les declaro en el script php.
}


Así en el script php tendrías por ejemplo:

echo "mensaje=hola mundo"; //creamos la variable mensaje y le damos un valor

para enviar datos y a la vez recibirlos, supongamos que tienes un formulario de contacto en flash y envías un campo llamado "nombre", entonces harías lo siguiente:

var envia = new LoadVars();
function enviar(){
     envia.nombre=nombre.text; //obtenemos el dato de una caja de texto llamada nombre
     envia.sendAndLoad("script.php",objeto_que_recibe,"POST"); //indicamos el script, quien recibe la respuesta y por que método enviamos los datos.
}
objeto_que_recibe.onLoad = function(){
     mensaje_text.text=this.mensaje; //mensaje_text en un objeto flash que puede ser una caja de texto o un label
}


Y en el script php, tendríamos lo siguiente:

$nombre = $_POST['nombre'];
echo "mensaje=dato recibido";


Bueno lo demás en simplemente juguetear con esto, se pueden crear aplicaciones muy potentes, yo en lo personal prefiero hacer uso de javascript con php, flash es demasiada carga, no soy de los que les gusta cargar demasiado una pagina con tantos gráficos.

Saludos y hasta la próxima.

lunes, 19 de diciembre de 2011

Meta programacion PHP

PHP como la mayoría si no es que todo los lenguajes de scripting soportan el concepto de meta programación, ¿pero que es eso? consiste en la creacion de programas que puedes manipular a otros o a si mismos por lo tanto si un lenguaje presume de tal propiedad debe tener los mecanismos para dicha tarea, pues bien en PHP un ejemplo seria el siguiente:

una_funcion($mastexto){
       echo "hola mundo ".$mastexto;
}

$funcion = "una_funcion";

$funcion("maravilloso");

$variable="funcion";
echo $$variable


Esto imprimirá la cadena hola mundo maravilloso, ya que se invoco la función con un parámetro. Esto puede ser bastante útil para elegir que acción ejecutar ante una entrada por parámetro. Lo segundo la variable $variable contiene la cadena función si la llamamos con doble $ lo que le decimos a PHP es que evalué a $variable con lo que se llamara a su vez el contenido de $funcion. Si tienen imaginación esto permite manipular un programa de una manera mas flexible.

Ademas de que al generar archivos php e incluirlos con include también obtendremos la meta programación en PHP.

Bueno eso es todo, que les sea de utilidad, hasta pronto.

lunes, 12 de diciembre de 2011

PHP + AJAX

Ahora hablare de como conjuntar PHP con la técnica AJAX, que no es un lenguaje, su nombre es un acronimo del ingles Asynchronous JavaScript And XML y es una técnica de programación que permite una interacción mas fluida y sin tantas recargas entre la web y el usuario, lo que le da una apariencia mas profesional, ademas de un mejor desempeño al no recargar toda la pagina, con lo que si usamos muchas imágenes o flash la ventaja sera notoria, pero sin mas bla bla vamos al grano y es que el núcleo y el corazón de esta técnica es la interfaz de javascript XMLHttpRequest, es la que hace toda la "magia" realiza las peticiones post o get al servidor web.

Veamos como funciona, primero creamos el objeto en una pagina html, desde luego esto es código

JavaScript.

xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","datos.php"); //aqui va la fuente de los datos puede ser tambien por POST
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        obj.innerHTML = xmlhttp.responseText; //aqui obtenemos la respuesta puede ser XML pero requiere de tratamiento especial, asi que usamos texto simple
        var x = htmlhttp.responseText //tambien podemos llenar una variable con la respuesta
         eval(xmlhttp.responseText); //incluso podemos evaluar codigo javascript  generado del lado servidor desde nuestro datos.php
}


Después en nuestro datos.php, podemos hacer una conexión a una base de datos y generar la respuesta, pero aquí en nuestro ejemplo haremos algo mucho mas simple:

PHP

echo "Hola mundo";  //una respuesta simple
 echo "var arreglo=new Array('hola mundo','segundo item','tercer item');"; //esta parte si la usamos con un eval del lado de la pagina html sera ejecutada como codigo javascript y tendremos un arreglo que podemos usar


Desde luego en lo anterior o hacemos una cosa o hacemos otra, es decir o recibimos el texto simple y los mostramos o lo evaluamos ya que si hacemos los dos echo nos arrojara un error javascript al intentar evaluar la cadena "hola mundo" ¿capisci?

La función en javascript quedaría ya completa como sigue:

JavaScript

function ajax(){
     var xmlhttp = false;
     if (window.XMLHttpRequest) { //para los demas navegadores
           xmlhttp = new XMLHttpRequest();
     } else if (window.ActiveXObject){ //para las basuras de ie5 y 6
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     }
     return xmlhttp;
}
ajax=ajax();
ajax.open("POST","pagina.php"); //especificamos de donde obtener los datos
ajax.onreadystatechange=function(){
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
           var x = htmlhttp.responseText; //aqui ya hacemos lo que se nos antoje
     }
}


Hasta ahora vimos como recibir datos desde un script php, pero ahora queremos enviar datos de un formulario, entonces haremos la siguiente funcion:

JavaScript

//esta funcion requiere los parametros script que es la ubicacion del script al que se enviaran los datos y formulario que es el id del form html que envia los datos
function envia_ajax(script,formulario){
     var ajax=ajax(); //creamos el objeto con la anterior funcion
     ajax.open("POST", script, true);
     ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     frm=document.getElementById(formulario),cadena="";
     for(i=0;i<frm.elements.length;i++){ //recorremos los elementos del form para obtener su nombre y su valor
         cadena+=frm.elements[i].name+"="+frm.elements[i].value+"&";
     }
     ajax.send(cadena);
     ajax.onreadystatechange=function(){
         if (ajax.readyState==4){
                return ajax.responseText; //retornamos la respuesta
         }
     }
}


En un html agregamos los script javascript necesarios y el siguiente código html

HTML

<form id="forma">
<input type="test" name="x"/>
 <input type="button" name="ok" value="enviar" onclick="window.alert(envia_ajax('datos.php','forma'));" />


Ahora en datos.php recogeríamos los datos como si los hubiese enviado el mismo form

PHP

if($_POST['ok']){
     echo "el dato que mandaste fue".$_POST['x'];
}else{
    echo "aun no has enviado nada";
}


Con esta técnica podemos generar contenidos dinamicamente en tiempo real, con las obvias ventajas que esto implica, pero no debemos abusar de esta técnica, ya que esto tiende a segmentar mucho el sitio, generando muchos archivos background (en nuestro caso el datos.php) ademas de que si hacemos demasiadas peticiones xmlhttprequest terminaremos cayendo en lo que queríamos evitar, que es una carga alta de peticiones al servidor.

Saludos, felices códigos y hasta la próxima.

martes, 6 de diciembre de 2011

Dart un nuevo lenguaje para la web

Así es se trata de un nuevo lenguaje para desarrollo web que fue creado por google, este lenguaje es de lado cliente, como javascript lo que me hace pensar que es la competencia directa, si bien los de google han declarado que no pretenden suplantarlo, este lenguaje es sin mas preámbulo muy similar a C, veamos un ejemplo:

int fib(int n) {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}

main() {
print('fib(20) = ${fib(20)}');
}


Creo que no es necesario que explique el código, esto es así porque según los de google lo hicieron con la intención de que sea fácil de aprender, también se dice que ofrece mejoras sobre javascript ya que es mas estructurado y flexible y que su código resultante es mas claro y ordenado, con lo que se podrá escalar mas fácilmente el código de un script sin tener que rehacerlo gracias a las "estructuras dart", ok todo eso esta muy bien, pero aquí hay un problema y es que solo google chrome lo soportara nativamente y al parecer también safari y firefox pero no así opera e internet explorer que sigue manteniendo la cuota mas alta del uso de navegadores.

Lo anterior implica que habrá una diferencia en desempeño entre navegadores, ya que al tenerse que traducir a javascript los scripts en dart, en el caso de los navegadores que no lo soporten, habrá una carga que invariablemente afectara el desempeño de la pagina, lo que a muchos desarrolladores no nos parece.

aquí esta el sitio oficial  http://www.dartlang.org/

aquí un pdf con todas las especificaciones del lenguaje por si te interesa y quieres aprenderlo http://www.dartlang.org/docs/spec/dartLangSpec.pdf

desde aquí puedes ir probando scripts http://try.dartlang.org/

Aunque les deseo suerte, no creo que por ahora se imponga por sobre javascript, yo por lo menos no lo usare hasta que vea una mayor compatibilidad y una mayor comunidad de desarrolladores web usándolo.

saludos.