25th September 2008

Varios Flex - Red5

SCORE
Tras volverme loco buscando que narices era el score y el IScore.. Tras no saber como pasar ese tipo de valor desde Flex, encontre que las clases creadas para red5 con java tienen una propiedad que siempre se crea y que reciben como parametro el score  o ambito en el que la aplicación trabajo.

IScore appScore;
public boolean appStart(IScope app) {
   appScore=app;
}

Con eso ya lo tenemos resuelto y disponemos del Score para usarlo donde necesitemos
dentro de la clase java, supongo que los expertos dirán “vaya chorrada”, pero yo he perdido
una tarde entera con este tema. Espero a alguíen le sea util.

SERVICEUTILS
ServiceUtils.invokeOnAllConnections(this.appScope,”ListaUsuarios”,new Object[]{pila});
Esto nos va a permitir ejecutar desde Red5 (codigo java) una funcion de flex de modo que se ejecute para todos los usuarios conectados en ese momento. 

VIDEODISPLAY
Aqui un ejemplo de como se usa este control para poder ver tu web cam con flash.

if (Camera.getCamera()){

Camara = Camera.getCamera();

this.ctrCamaraPrivada.attachCamera(Camara);

this.lblInfo.text+=”; Cámara conectada.”

}

else

{

this.lblInfo.text +=”; Cámara no disponible.”

} 

 

posted in PHP, Programacion | 0 Comments

24th September 2008

Como pasar parametros a Flex por URL

Cómo pasar parámetros y recuperarlos en Flex.

Podemos pasarle y recoger parámetros a nuestro SWF generado con Flex de la siguiente manera:

En la página html que genera Flex cuando compilamos nuestra Aplicación, nos encontramos con código en JavaScript y también con un objeto que embebe nuestro SWF. En nuestro ejemplo se llamarágraficas.swf

Supongamos que queremos abrir la página que contiene nuestra aplicación de gráficas creadas en Flex, y cuyos valores los recogerá de un HttpService, que envía y recoge el Usuario y la Contraseña a una página en ASP, y ésta nos devuelve el resultado en XML.

Sería algo así:

<object classid=”clsid:D27CDB6E-11cf”
id=”graficas”
width=”100%” height=”100%”
codebase=”macromedia.com/get/flashplayer/current/swfla…
param name=”movie”
value=”graficas.swf?usuario=Antonio&pass=12345” />
<param name=”quality” value=”high” />
<param name=”bgcolor” value=”#869ca7″ />
<param name=”allowScriptAccess” value=”sameDomain” />
<embed src=”graficas.swf?usuario=Antonio&pass=12345
quality=”high” bgcolor=”#869ca7″ width=”100%” height=”100%”
name=”graficas” align=”middle” play=”true” loop=”false”
quality=”high” allowScriptAccess=”sameDomain”
type=”application/x-shockwave-flash”
pluginspage=”adobe.com/go/getflashplayer%22%3E…
</embed></object> 

Para pasarlo mediante el código en JavaScript, haríamos lo siguiente:

AC_FL_RunContent( “src”, “graficas?usuario=Antonio&pass=12345“,
“width”, “100%”, “height”, “100%”, “align”,
“middle”, “id”, “graficas”, “quality”, “high”,
“bgcolor”, “#869ca7″, “name”, “graficas”,
“flashvars”,’historyUrl=history.htm%3F&lconid=’ + lc_id + ”,
flashvars”,’usuario=Antonio&pass=12345′,
“allowScriptAccess”,”sameDomain”, “type”,
“application/x-shockwave-flash”, “pluginspage”,
);

En el código en JS podemos pasarle los parámetros concatenados al nombre del swf o bien ponerlos como un flashvars. De cualquiera de las dos maneras funciona.

y Podemos recuperarlos desde Flex de la siguiente manera:

private var Usuario:String=”";
private var Pass:String=”";

private function ini():void{
Usuario=Application.application.parameters.usuario;
Pass=Application.application.parameters.pass; 
}

posted in JavaScript, PHP, Programacion | 0 Comments

24th September 2008

Flex y MySql

En este primer post dedicado a la publicación o uso de bases de datos Mysqlcon nuestras aplicaciones Flex, vamos a abordar la conexión a través de una pasarela creada en PHP.

Esta primera solución es la más sencilla de todas y nos permite tener por ejemplo el frontend de nuestra aplicación en HTML y el backend en Flex.

Pongamos de ejemplo una tienda online que tiene un catálogo de productos y que queremos crear un administrador de éste mediante Flex.

El primer paso que vamos a hacer es la creación de un fichero PHP que haga las consultas pertinentes a la base de datos MySQL y nos devuelva el conjunto de resultados en XML. Este XML será procesado o consumido desde la aplicación Flex y será asociado mediante Data Binding (enlace entre controles y datos) a los controles de nuestro administrador.

Un ejemplo podría ser el siguiente:

  1. <productos>
  2. <?php
  3.     if(!($link=mysql_connect(“localhost”,“[usuario]“,“[contraseña]“))){
  4.           echo “Error conectando a la base de datos.”;
  5.           exit();
  6.     }
  7.            
  8.     if (!mysql_select_db(“[nombre_bd]“,$link)) {
  9.           echo “Error seleccionando la base de datos.”;
  10.           exit();
  11.     }
  12.  
  13.     $sql = “SELECT nombre, referencia, precio “;
  14.     $sql .= “FROM productos “;
  15.     $sql .= “ORDER BY referencia”;
  16.  
  17.     $result = mysql_query($sql,$link);
  18.     while($row = mysql_fetch_object($result)){
  19. ?>
  20.     <producto>
  21.         <referencia><?php echo $row->referencia ?></referencia>
  22.         <nombre><?php echo $row->nombre ?></nombre>
  23.         <precio><?php echo $row->precio ?></precio>
  24.     </producto>
  25. <?php
  26.     }   
  27. ?>
  28. </productos>

 

Como resultado este fichero devolverá algo como lo siguiente:

  1. <?xml version=“1.0″ encoding=“utf-8″?>
  2. <productos>
  3.      <producto>
  4.           <referencia>1</referencia>
  5.           <nombre>Primer Producto</nombre>
  6.           <precio>10.99</precio>
  7.      <producto>
  8.  
  9.      <producto>
  10.           <referencia>2</referencia>
  11.           <nombre>Segundo Producto</nombre>
  12.           <precio>15.45</precio>
  13.      <producto>
  14.  
  15.      <producto>
  16.           <referencia>3</referencia>
  17.           <nombre>Tercer Producto</nombre>
  18.           <precio>58.99</precio>
  19.      <producto>
  20. </productos>

 

Ahora pasamos a la parte Flex que se encargará de consumir este XML que nos devuelve PHP. Para ello crearemos un DataGrid que nos mostrará el resultado. Lo asociaremos mediante data binding al resultado de la llamada al php (mediante HTTPService). Usaremos el formato E4X para mayor comodidad.

  1. <?xml version=“1.0″ encoding=“utf-8″?>
  2. <mx:Application xmlns:mx=“http://www.adobe.com/2006/mxml”layout=“absolute” creationComplete=“prodRPC.send()” width=“100%”>
  3.    
  4.     <mx:HTTPService id=“prodRPC”url=“http://localhost/productos.php” resultFormat=“e4x”/>
  5.    
  6.             <mx:DataGrid id=“dgProductos” x=“10″ y=“10″dataProvider=“{prodRPC.lastResult..producto}” width=“561″height=“526″>
  7.                 <mx:columns>
  8.                     <mx:DataGridColumn dataField=“referencia” />
  9.                     <mx:DataGridColumn dataField=“nombre” />
  10.                     <mx:DataGridColumn dataField=“precio” />
  11.                 </mx:columns>
  12.             </mx:DataGrid> 
  13.    
  14. </mx:Application>

 

El resultado sería el siguiente:

Flex DataGrid Mysql

posted in PHP, Programacion | 0 Comments

24th September 2008

Flex y PHP

Continuando con la serie de minitutoriales dedicados a la integración entre Adobe Flex y una base de datos Mysql, vamos a ilustrar un nuevo ejemplo de inserción de datos a través de nuestra pasarela PHP.

Para ello vamos a seguir trabajando sobre el primer ejemplo que teníamos y vamos a crear un nuevo estado con el nombre “insert”, donde pondremos el formulario de inserción de un nuevo producto.

Formulario de Inserción de Productos

El código fuente sería el siguiente:

  1. <mx:states>
  2.     <mx:State name=“insert”>
  3.         <mx:RemoveChild target=“{button1}”/>
  4.         <mx:RemoveChild target=“{dgProductos}”/>
  5.         <mx:AddChild position=“lastChild”>
  6.             <mx:Panel x=“10″ y=“10″ width=“319″ height=“215″layout=“absolute” title=“Nuevo Producto”>
  7.                 <mx:Form x=“0″ y=“0″>
  8.                     <mx:FormItem label=“Referencia”>
  9.                         <mx:TextInput id=“referencia” width=“106″/>
  10.                     </mx:FormItem>
  11.                     <mx:FormItem label=“Nombre”>
  12.                         <mx:TextInput id=“nombre”/>
  13.                     </mx:FormItem>
  14.                     <mx:FormItem label=“Precio”>
  15.                         <mx:TextInput id=“precio”/>
  16.                     </mx:FormItem>
  17.                 </mx:Form>
  18.                 <mx:ControlBar horizontalAlign=“right”>
  19.                     <mx:Button label=“Cancelar”click=“this.currentState=””/>
  20.                     <mx:Button label=“Insertar” id=“botInsertar”click=“insertaProducto()”/>
  21.                 </mx:ControlBar>
  22.             </mx:Panel>
  23.         </mx:AddChild>
  24.     </mx:State>
  25. </mx:states>

 

Por otra parte deberemos crear una llamada HTTPService para llamar al fichero PHP que se encarga de la inserción. Destacar que debemos poner el mismo método de petición (GET o POST) en ambos sitios:

  1. <mx:HTTPService id=“insertProd”url=“http://localhost/lsensualite/xml/insertProductos.php”method=“GET” resultFormat=“text” result=“resultHandler(event)”/>

 

(Fichero PHP)

  1. if(!($link=mysql_connect(“localhost”,“[usuario]“,“[contraseña]“))){
  2.      echo “Error conectando a la base de datos.”;
  3.      exit();
  4. }
  5. if (!mysql_select_db(“[nombre_bd]“,$link)) {
  6.      echo “Error seleccionando la base de datos.”;
  7.      exit();
  8. }
  9.  
  10. $sql = “INSERT INTO productos (referencia, nombre, precio) “;
  11. $sql .= “VALUES (’” . $_GET["referencia"] . “‘,’” . $_GET["nombre"]“‘,” . $_GET["precio"] . “) “;
  12.  
  13. $result = mysql_query($sql,$link);

 

Por último nos queda definir la función que se desencadenará al pulsar el botón insertar del formulario:

  1. <mx:Script>
  2.     <![CDATA[         
  3.         import mx.rpc.events.ResultEvent;
  4.            
  5.         public function resultHandler( event: ResultEvent ):void {
  6.             // Refresco el DataGrid del primer estado
  7.             prodRPC.send();           
  8.         }   
  9.        
  10.         public function insertaProducto():void {
  11.             // Recojo los parámetros
  12.             var parametros:Object = new Object;
  13.             parametros.referencia = referencia.text;
  14.             parametros.nombre = nombre.text;
  15.             parametros.precio = precio.text;
  16.             // Llamo a PHP
  17.             insertProd.send(parametros);
  18.             // Vuelvo al estado inicial
  19.             this.currentState = "";    
  20.         }
  21.     ]]>
  22. </mx:Script>

posted in PHP, Programacion | 0 Comments

14th March 2007

Notas sobre Area de administracion 0.1

Cuando se elimina un fabricante cada articulo que contenga se pone a 0 (sin fabricante)
Cuando se elimina una categoria, cada articulo que contenga se pone a 0 (sin categoria), si la categoria contiene subcategorias, las elimina y pone todos los articulos a 0 (sin categoria)

Se ha modificado la clase que conecta con la base de datos. Antes de guardar los datos, hace un htmlentities() por lo que ya no es necesario hacerlo cuando se le asigna un valor a cada propiedad de cada clase

posted in PHP | 0 Comments