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