Ver Mensaje Individual
  #5 (permalink)  
Antiguo 23/04/2009, 11:12
Avatar de jahepi
jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: AYUDA función compleja en Flex, php y MySQL

Hola hIUG !

No es eso, amfphp y webord te dan la posibilidad de llamar a métodos remotos de clases en PHP desde Flex.

Por ejemplo, hacemos una clase en php llamada usuario, esta tiene un método getById, que te devuelve un usuario de acuerdo al id que tiene en la base de datos:

Usuario.php
Código PHP:
class Usuario
{
    private 
$_link;

    public function 
__construct()
    {
        
$this->_link mysql_connect('localhost''root''');
        
mysql_connect_db('basededatos'$this->_link);
    }

    public function 
getById($id
    {
        return 
mysql_query('SELECT * FROM usuarios WHERE id_usuario = ' $id$this->_link);
    }

El constructor se encarga de conectarnos a la base de datos, y en el cuerpo del método getById retornamos el resultado de la consulta, esto es lo que se va a mandar a flex.

Ahora en la parte de flex:

Código actionscript:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application
  3.     xmlns:mx="http://www.adobe.com/2006/mxml"
  4.     layout="absolute"
  5.     creationComplete="init()"
  6.     >
  7.  
  8.     <mx:RemoteObject
  9.         id="remoteObject"
  10.         destination="GenericDestination"
  11.         source="Usuario"
  12.         showBusyCursor="true"              
  13.         result="onResult(event);"
  14.         fault="onFault(event);"
  15.     />
  16.  
  17.     <mx:Script>
  18.         <![CDATA[
  19.            
  20.             import mx.rpc.events.FaultEvent;
  21.             import mx.rpc.events.ResultEvent;
  22.            
  23.             private function onResult(event:ResultEvent):void{
  24.                 trace(event.result)
  25.             }
  26.            
  27.             private function onFault(event:FaultEvent):void{
  28.                 trace(event.fault.faultString)
  29.             }
  30.            
  31.             private function init():void{
  32.                 remoteObject.getById(1);
  33.             }
  34.         ]]>
  35.     </mx:Script>
  36.  
  37. </mx:Application>

La clase RemoteObject es responsable de llamar a los métodos de clases en servidores remotos, así que creamos una instancia de RemoteObject, el atributo id indica el nombre de la instancia, source indica el nombre de nuestra clase en php a la cual llamaremos, en este caso Usuario, result y fault hacen referencia a eventos, cuando llamemos al método remoto getById, se ejecutará el método al cual hace referencia, si se llama de manera exitosa se ejecutaría onResult en caso contrario onFault.

Por último en el método init, llamamos al método getById de la clase Usuario para obtener el usuario con el id 1, si todo sale bien, se llamara al método onResult avisando que se han obtenido los datos, event.result contiene esos datos.

Si quieres ver el contenido del atributo result, puedes colocar un breakpoint, dando doble click en el número de línea donde se encuentra, va a aparecer un puntito rojo, corres el proyecto en modo de depuración (botón del insecto verde) y cuando se ejecute el método onResult, el depurador nos avisará, te vas a la opción de variables, y buscas el objeto event, luego vas a su atributo result y exploras los valores que contiene.

Antes de esto tienes que instalar weborb, así que te dejo un tutorial:
http://www.cristalab.com/tutoriales/...-weborb-c243l/

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.