Comunidad de diseño web y desarrollo en internet online

No logro que esto funcione... (Remoting y AMFPHP)...

Citar            
MensajeEscrito el 30 Oct 2005 06:07 pm
Buenas...
Otra vez yo... Ahora el tema es que intento cargar datos de una DB con PHP, y luego transformarlos a XML para poder cargarlos en un componente Tree...

El codigo es asi:

El (enorme) servicio AMFPHP

ArmarXML.php

Código :

<?php
include "C:/offlinedocs/db_vars.php";
class ArmarXml
{
  function ArmarXml(){
    $this->methodTable = array(
        "baseFunction" => array(
            "description" => "Carga los EPICCOS en un array",
            "access" => "remote",
            "arguments" => array()
         ),
        "GenerarXML" => array(
            "description" => "Genera XML en base a la estructura ingresada",
            "access" => "remote",
            "arguments" => array(
            "estructura")//Estructura de la DB...
         ),
         "Detallar" => array(
            "description" => "Escribe el contenido XML en el archivo...",
            "access" => "remote",
            "arguments" => array(
            "estructura")//Estructura de la DB...
         ),
         "TomarNombres" => array(
            "description" => "Arma un array con los nombres correspondientes a las Id's del array ingresado'",
            "access" => "remote",
            "arguments" => array(
            "tabla",//Tabla en la que se quiere buscar...
            "id_s")//Estructura de la DB...
         ),
        "TomarPisos" => array(
            "description" => "Carga los pisos en un array",
            "access" => "remote",
            "arguments" => array()
         ),
         "TomarEpiccos" => array(
            "description" => "Carga los EPICCOS en un array",
            "access" => "remote",
            "arguments" => array(
            "Id_piso")//Id_piso de los EPICCOS a cargar...
         ),
         "TomarRooms" => array(
            "description" => "Carga las Habitaciones en un array",
            "access" => "remote",
            "arguments" => array(
                "Id_epícco")//Id_epiccos de las Habitaciones a cargar...
         ),
         "TomarSector" => array(
            "description" => "Carga los Sectores en un array",
            "access" => "remote",
            "arguments" => array(
                "Id_room")//Id_room de los Sectores a cargar...
         ),
         "TomarDevice" => array(
            "description" => "Carga los Dispositivos en un array",
            "access" => "remote",
            "arguments" => array(
                "Id_sector")//Id_sector de los Dispositivos a cargar...
         )
    );
  }
  //Funcion a la que recurre Flash
  function baseFunction(){

    mysql_select_db($db_name,$conn);

    $respuesta = $pisos = TomarPisos();
    
    $nombres = TomarNombres($pisos, 1);
    
    //Voy tomando piso por piso los valores de las demas tablas...
    for($i=0; $i<= end($pisos) ; $i++){

        $respuesta[$i] = $epiccos = TomarEpiccos($pisos[$i]);
        
        $nombres[$i] = TomarNombres($epiccos, 2);

        for($j == 0; $j <= end($epiccos); $j++){

            $respuesta[$i][$j] = $habitaciones = TomarRooms($epiccos[$j]);
            
            $nombres[$i][$j] = TomarNombres($habitaciones, 3);
            
            for($k == 0; $k <= end($habitaciones); $k++){

                $respuesta[$i][$j][$k] = $sectores = TomarSector($habitaciones[$k]
);

                $nombres[$i][$j][$k] = TomarNombres($sectores, 4);

                for($l == 0; $l <= end($sectores); $l++){

                    $respuesta[$i][$j][$k][$l] = $devices = TomarDevice($sectores[$l]);
                    
                    $nombres[$i][$j][$k][$l] = TomarNombres($devices, 5);
                    
                    //Tomo la cantidad de posiciones de $devices

                }
            }
        }
    }
    
    session_start();
    
    $_SESSION["estructura_db"] = $respuesta;
    
    $_SESSION["estructura_names"] = $nombres;

    $xml = GenerarXML($nombres);
    
    if(Detallar($xml)){
        $mensaje = 1;
    }
    else{
        $mensaje = 0;
    }
    
    mysql_close($conn);
    
    return $mensaje;
    

  }
  
  //Funcion que genera la variable con el XML...
  //Se ingresa la estructura
  function GenerarXML($estructura){

    $respuesta = xmlrpc_encode($estructura);
    
    return $respuesta;

  }
  //Funcion que escribe el XML en el documento a leer...
  //Se ingresa la estructura convertida a XML...
  function Detallar($estructura){

    if(file_put_content($XML_file, $estructura)){
      $respuesta = 1;
    }
    else{
      $respuesta = 0;
    }

    return $respuesta;
    
  }
  //Funcion que toma los nombres respectivos de cada Id del array ingresado...
  //Se ingresa el array con las Id's y un identificador de tabla...'
  function TomarNombres($id_s, $tabla){

    switch($tabla){
      case 1:
      
        $campo = "piso";
        
        $tabla = "pisos";
        
        $Id_tabla = "Id_piso";
      
      break;
      case 2:
      
        $campo = "ip_epicco";
        
        $tabla = "epiccos";
        
        $Id_tabla = "Id_epicco";
      
      break;
      case 3:
      
        $campo = "habitacion";
        
        $tabla = "habitacion";
        
        $Id_tabla = "Id_habitacion";
      
      break;
      case 4:
      
        $campo = "sector";
        
        $tabla = "sector";
        
        $Id_tabla = "Id_sector";
      
      break;
      case 5:
      
        $campo = "dispositivo";
        
        $tabla = "dispositivos";
        
        $Id_tabla = "Id_didpositivos";
      
      break;
    }

    for($z = 0; z <= end($id_s); $z++){

        $ask = "SELECT '$campo' FROM '$tabla' WHERE '$Id_tabla' = '$id_s[$z]'";
        
        $struct_nombres[$z] = mysql_query($ask);

    }
    
    return $struct_nombres;

  }
  //Funcion que toma las Id's de los pisos...'
  function TomarPisos(){
    $ask = "SELECT MAX(Id_pisos) FROM pisos";
    
    $respuesta = mysql_fetch_array($ask);
    
    return $respuesta;
  }
  //Funcion que toma los Id_epicco para el Id_piso indicado...
  //Se ingresa el Id_piso del que se quiere obtener los Id_epicco...
  function TomarEpiccos($Id_piso){
    $ask = "SELECT Id_epiccos FROM epiccos WHERE piso = '$Id_piso'";
    
    $respuesta = mysql_fetch_array($ask);
    
    return $respuesta;
  }
  //Funcion que toma los Ids de habitacion para el epicco ingresado...
  //Se ingresa el Id_epicco del que se quiere obtener los Id_piso...
  function TomarRooms($Id_epicco){
    $ask = "SELECT Id_habitacion FROM habitaciones WHERE epicco = '$Id_epicco'";

    $respuesta = mysql_fetch_array($ask);

    return $respuesta;
  }
  //Funcion que toma los Ids de sector para la habitacion ingresada...
  //Se ingresa el Id_habitacion del que se quiere obtener los Id_habitacion...
  function TomarSector($Id_room){

    $ask = "SELECT Id_sector FROM sectores WHERE habitacion = '$Id_room'";

    $respuesta = mysql_fetch_array($ask);

    return $respuesta;
  }
  //Funcion que toma los Ids de dispositivo para el sector ingresado...
  //Se ingresa el Id_sector del que se quiere obtener los Id_dispositivo...
    function TomarDevice($Id_sector){

    $ask = "SELECT Id_device FROM dispositivos WHERE sector = '$Id_sector'";

    $respuesta = mysql_fetch_array($ask);

    return $respuesta;
  }
  }
?>


Y el AS de mi pelicula...

Código :

//Importo las librerias de Remoting
import mx.remoting.NetServices;
import mx.remoting.Connection;
//Creo el objeto que va a recibir la respuesta del servicio AMFPHP
GenerarXML = new Object();
GenerarXML.baseFunction_Result = function(respuesta){
   trace("aca estoy");
   if(respuesta){
      cargarXML();
   }
   else{
      trace("ERROR!!");
   }
}
GenerarXML.onStatus = function(respuesta){
   trace("El error es: " + respuesta);
}
//Defino la coneccion con AMFPHP
mx.remoting.debug.NetDebug.initialize();
NetServices.setDefaultGatewayUrl("http://localhost/flashservices/gateway.php");
conn = NetServices.createGatewayConnection();
serv = conn.getService("ArmarXml", GenerarXML);
serv.baseFunction();
//Funcion que carga el XML
function cargarXML(){
   trace("Hola!");
   //Cargamos el XML
   xmlTree = new XML();
   xmlTree.ignoreWhite = true;
   xmlTree.onLoad = function (success){
      if (success){
         llenarTree();
      }
      else{
         trace("No se pudo cargar el XML");
      }
   }
   xmlTree.load("localhost/XML/database.xml");
};

function llenarTree(){
   //Atacheamos el componente
   attachMovie("Tree", "miArbol", 1);
   
   //Propiedades
   miArbol.setSize(200, 300);
   miArbol.setStyle("openEasing", mx.transitions.easing.Back.easeOut);
   
   //Llenamos el menu
   miArbol.dataProvider = xmlTree;
   
   //Eventos
   miArbol.addEventListener("change", alSeleccionar);
}

alSeleccionar = new Object();
alSeleccionar.change = function(evento) {
   var seleccion = evento.target.selectedNode;
   
   //Si es una carpeta...
   if (miArbol.getIsBranch(seleccion)){
      //La cerramos si esta abierta
      if (miArbol.getIsOpen(seleccion)){
         miArbol.setIsOpen(seleccion, false, true);
      }
      //La abrimos si esta cerrada
      else{
         miArbol.setIsOpen(seleccion, true, true);
      }
   }
   //Si es un vínculo...
   else{
      getURL(seleccion.attributes.dirurl, "_blank");
   }
}
stop();


La verdad no se que pueda estar mal, porque lo vengo revisando hace un dia y medio... espero que alguien me sepa decir de algun error...

Muchas gracias desde ya!!

Pablo

Por _pablito_

Claber

190 de clabLevel



Genero:Masculino  

Argentina

firefox
Citar            
MensajeEscrito el 30 Oct 2005 09:30 pm
Bueno, un error que se me ocure es que al hacer los "return" la variable que devuelva cada funcion, en lugar de devolversela a la funcion que la llama se la devuelva a flash... puede ser?

Por _pablito_

Claber

190 de clabLevel



Genero:Masculino  

Argentina

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.