CLASE ORIGINAL: 'MySqlRS' , AUTOR = undefined ( Al menos para mi

MODIFICADA POR FRANCISCO ARANDA (SHADOW) : [email protected] : www.allsolutions.cl : 2006
Modificaciones de la original:
-Devuelve el array de la consulta sql en cualquier funcion que se defina.
-Cada posición del array devuelto es un objeto que contiene los nombres de las columnas devueltas por la consulta como atributos.
ESTE ES EL SERVICIO PHP PARA AMFPHP
GUARDALO COMO AllMysql.php EN LA CARPETA DE SERVICIOS DEL DIRETORIO DE AMFPHP
Código :
<? php //AllMysql.php class AllMysql { var $dbhost = ''; var $dbuser = ''; var $dbpass = ''; var $dbname = ''; function AllMysql() { $this -> methodTable = array ( 'dbReceiveData' => array ( 'description' => 'devuelve en un arreglo la consulta sql', 'access' => 'remote', 'returns' => 'array', 'arguments' => array('query' => array('type' => 'string', 'required' => true), 'dbname' => array('type' => 'string', 'required' => false), 'dbhost' => array('type' => 'string', 'required' => false), 'dbuser' => array('type' => 'string', 'required' => false), 'dbpass' => array('type' => 'string', 'required' => false)) ), 'dbSendData' => array ( 'description' => 'envía datos a mysql, insert, modify, update... NO select), 'access' => 'remote', 'returns' => 'boolean', 'arguments' => array('query' => array('type' => 'string', 'required' => true), 'dbname' => array('type' => 'string', 'required' => false), 'dbhost' => array('type' => 'string', 'required' => false), 'dbuser' => array('type' => 'string', 'required' => false), 'dbpass' => array('type' => 'string', 'required' => false)) ) ); } function dbReceiveData($query,$dbname='',$dbhost='',$dbuser ='', $dbpass='') { $dbname = ($dbname == '') ? $this->dbname : $dbname; $dbhost = ($dbhost == '') ? $this->dbhost : $dbhost; $dbuser = ($dbuser == '') ? $this->dbuser : $dbuser; $dbpass = ($dbpass == '') ? $this->dbpass : $dbpass; $conn = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error); mysql_select_db($dbname) or die(mysql_error); $query_ris = mysql_query($query, $conn); $noFields = mysql_num_fields($query_ris); $fields = array(); for ($i = 0; $i < $noFields; $i++) { $fields[$i] = mysql_field_name($query_ris, $i); } return (array($query_ris,$fields)); mysql_free_result($query_ris); mysql_close(); } function dbSendData($query,$dbname='',$dbhost='',$dbuser='' , $dbpass='') { $dbname = ($dbname == '') ? $this->dbname : $dbname; $dbhost = ($dbhost == '') ? $this->dbhost : $dbhost; $dbuser = ($dbuser == '') ? $this->dbuser : $dbuser; $dbpass = ($dbpass == '') ? $this->dbpass : $dbpass; $conn = mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error); mysql_select_db($dbname) or die(mysql_error); if(!mysql_query($query)) return false; else return true; // If the query is executed it returns TRUE, else it returns FALSE. mysql_close(); } } ?>
----------------------------------------------------------------
ESTA ES LA CLASE ACTIONSCRIPT 2.0
GUARDALA COMO AllMysql.as Y POR SUPUESTO IMPORTALA COMO CLASE
----------------------------------------------------------------
Código :
import mx.remoting. *; import mx.rpc. *; class AllMysql { public var defaultGatewayURL = 'http://localhost/remoting/gateway.php'; public var gatewayURL:String; private var conn:Connection; private var serv1:Service; private var serv:NetServiceProxy; private var servList : NetServiceProxy; public var db : String; public var host : String; public var user : String; public var pass : String; function AllMysql (db, host, user, pass,gatewayURL) { mx.remoting.debug.NetDebug.initialize (); NetServices.setDefaultGatewayUrl (gatewayURL); this.conn = NetServices.createGatewayConnection (); this.db = db; this.host = host; this.user = user; this.pass = pass; this.gatewayURL = gatewayURL == undefined ? defaultGatewayURL : gatewayURL; } function getDbData (db_query : String,responde:Function) : Void { var respuesta : Object = new Object (); respuesta.dbReceiveData_Result = function (data) { var rs:Array = data; var values:Array = rs[0]; var column:Array = rs[1]; var array:Array = new Array(); for (var pos = 0; pos < values.getLength (); pos ++) { array[pos] = new Object (); for (var nom = 0; nom < column.length; nom ++){ array[pos][column[nom]] = values.getItemAt(pos)[column[nom]]; } } responde(array); } serv = this.conn.getService ('mysql', respuesta); serv.dbReceiveData (db_query, this.db, this.host, this.user, this.pass); } function sendDbData (db_query : String, db_name : String, db_host : String, db_user : String, db_pass : String, responde:Function) : Void { var respuesta : Object = new Object (); respuesta.dbSendData_Result = function (data) { var rs:Boolean = data; responde(rs); } serv = this.conn.getService ('mysql', respuesta); serv.dbSendData (db_query, this.db, this.host, this.user, this.pass); } }
----------------------------------------------------------------
USO:
ESTE CODIGO DEBE SER PUESTO EN TU 'PELICULA'
----------------------------------------------------------------
Código :
//var AllMysql = new AllMysql ('db_name', 'd_host', 'db_usr', 'db_pass', 'amfphpGatewayURL'); var AllMysql = new AllMysql ('mydb', 'localhost', 'root', '', 'http://localhost/remoting/gateway.php'); //AllMysql.getDbData(' CONSULTA SQL',función llamada cuando se realiza la consulta); AllMysql.getDbData ('SELECT columna1,columna2,columna3 FROM myTable', MyFunction); function MyFunction(rs) //contiene como parametro el arreglo devuelto { for (i in rs) { //cada posición del arreglo es un objeto con los nombres de las columnas de la o las tablas a la cual se realizo la consulta como atributos. :o //trace (rs[i].nombreColumna); trace (rs[i].columna1); trace (rs[i].columna2); trace (rs[i].columna3); //Y esto es lo que me hizo más facil el trabajo :cool: . } };
ESPERO QUE LES SIRVA!
SALUDOS DESDE CHILE!