Comunidad de diseño web y desarrollo en internet online

problema con funcion y retorno de datos

Citar            
MensajeEscrito el 03 Oct 2011 11:54 pm
Hola a todos tengo un pequeño problema y quisiera saber si me pueden ayudar, pasa lo siguiente tengo un archivo php que me genera un consulta completa de una tabla y quiero mediante httpService pasarle esos datos a una función y desde esta pasarlos como un elemento, código php:

Código PHP :

 <?php
include("../conexion.php"); //incluimos el archivo conexion.php
    $dom = new DOMdocument('1.0', 'iso-8859-1');                        
    $dom->formatOutput = false;                                               
    $rows = $dom->appendChild($dom->createElement('campo'));      
    $i = 0;
   $sql = "SELECT * FROM prueba"; 
 
    $result = mysql_query($sql,$Mysql); 
    while($fila = mysql_fetch_object($result))
      {
        $rows->appendChild($row = $dom->createElement('campo'));        
        $row->appendChild($dom->createElement('hour', $fila->hour));
        $row->appendChild($dom->createElement('merid', $fila->merid));
        $row->appendChild($dom->createElement('date', $fila->date));
        $row->appendChild($dom->createElement('descrip', $fila->descrip));
       }
    echo $dom->saveXML();                                                            
?>


El httpService;

Código ActionScript :

   <mx:HTTPService id="consulta" url="http://localhost/system/main/php/prueba2.php" 
    useProxy="false" result=" retorno(event)" resultFormat="e4x" method="POST"/>


function que quiero que atrape los datos y la forma que quiero manejarlos

Código :

private function retorno(evt:ResultEvent):void
{
 var objt:Object = new Object();         
objt.date = evt.result.row.date;
objt.hour= evt.result.row.hour;
objt.meridiem = evt.result.row.merid;
objt.desc = evt.result.row.descrip;
}



Cuando ejecuto este código la función me retorno todos los datos pero de esta forma todo seguido:
<date>dato</date>
<hour>dato</hour>
<merid>dato</merid>
<descip>dato</descrip>
<date>dato</date>
<hour>dato</hour>
<merid>dato</merid>
<descip>dato</descrip>

por favor alguien que me oriente que estoy haciendo mal..Gracias.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 12:17 am
perdon la funcion va asi
private function retorno(evt:ResultEvent):void
{
var objt:Object = new Object();
objt.date = evt.result.campo.date;
objt.hour= evt.result.campo.hour;
objt.meridiem = evt.result.campo.merid;
objt.desc = evt.result.campo.descrip;
}

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 03:00 pm
Lo que recibes es un XML y tienes que accederlo con sintaxis de E4X
, ejemplo:

Código ActionScript :

var nodes:XMLList = evt.result.row
for(var i:int = 0; i<nodes.length(); i++)
  trace(evt.result.row[i]@date);
}


Ahi trazas todos los date de cada row, aunque tienes que mandar el XML con esta estructura

Código :

<data>
    <row>
         <date>dato</date>
         <hour>dato</hour>
         <merid>dato</merid>
         <descip>dato</descrip>
    </row>
    <row>
     (.....)
</data>


Hay varios tutos acerca de la sintaxis E4X para parsear XML.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 03:24 pm
Entonces para recibir los datos como expreso en la funcion retorno() ¿Que cambios deberia de hacer?

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 03:35 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 04:00 pm
hermano disculpa la insistencia pero es que necesito manejar los resultados des esta forma por que desde ahi lo inserto en varios objetos mas mira la fucion completa y dime en en que estoy fallando no se mucho de flex todabia pero estoy tratando de aprender.. mira la la funcion que tengo que manejar y a donde tengo que mandarla.

private function SavarClick():void
{
var obj:Object = new Object();
obj.date = currentDate;
obj.hour = cmbHours.selectedItem.data;
obj.meridiem = cmbMeridiem.selectedItem.data;
obj.desc = cmbClse.selectedItem.data;

DataHolder.getInstance().addEvent(obj);
}

esta ya la uso para actualizar directamente el objeto en memoria pero ahora quiero hacerlo para que se actualize desde la bd como puse el ejemplo de arriba

private function retorno(evt:ResultEvent):void
{
var objt:Object = new Object();
objt.date = evt.result.campo.date;
objt.hour= evt.result.campo.hour;
objt.meridiem = evt.result.campo.merid;
objt.desc = evt.result.campo.descrip;

DataHolder.getInstance().addEvent(obj);
}

pero estoy atascado totalmente todo me da error... me entiendes? por favor no te enoges por las tantas preguntas pero es que no se como hacerlo..

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 04:05 pm
No me enojan las preguntas, sino que no se intenten cosas nuevas. Me pusiste 3 veces el mismo código para que te escriba como parsear el XML. Te puse un ejemplo y un tutorial, pero insistes en pedirme que te lo haga. Intenta, aunque te de error lo vemos, sigue la idea de mi primer POST, yo ya lo se hacer y no gano nada escribiendolo, pero tu lo puedes estudiar y agregar un skill nuevo a tus conocimientos. Además Ex4 no es algo propio de AS, se usa en JS, Java y otros lenguajes.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 04:10 pm
entiendo y te lo agradezco mucho, estoy intentando hacerlo solo te lo puese para que entiendas mejor lo que quiero hacer, estoy tratando de entender como lograr lo que te puse o una mejor forma de hacerlo.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 04:33 pm
podrias pasarme un tuto de como usar Trace no encuentro mucha info.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 04:40 pm
Escribe dentro de cualquier funcion que se ejecute>

trace("Sirve para sacar mensajes por consola");

Luego en Flex publica en modo debug, y mira la consola, allí aparecerá el mensajito. Si tuvieras una variable, digamos nombre, puedes trazarla también

trace("Nombre es "+nombre)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 04:57 pm
cuando intento hacerlo con el debug me sale este error

flex builder cannot locate the requierd debugger version of flash player.
you might need to install the debugger version of flash player 9 or reinstall
flex builder

tengo el flash player 11.0.1.152

y tambien lo puse en las propiedades del proyecto el mensaje sigue igual..

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 05:08 pm
ok mira lo que hice fue desintalar flash player y instale el 9 d nuevo y ahi funciono.
ejecute esto
private function retorno(e:ResultEvent):void
{
var nodes:XMLList = e.result.row
for(var i:int = 0; i<nodes.length(); i++)
trace ("hora"+nodes.hour);
}

el debug me devolvio

[SWF] C:\wamp\www\prueba\bin-debug\prueba.swf - 1,046,050 bytes after decompression
hora<hour>11</hour>
<hour>12</hour>
<hour>9</hour>
hora<hour>11</hour>
<hour>12</hour>
<hour>9</hour>
hora<hour>11</hour>
<hour>12</hour>
<hour>9</hour>

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 05:54 pm
Bien, has avanzado. Necesitas el debug flash player para que te muestre los mensajes de errores runtime, un desarrollador no puede usar un Flash Player común o no se entera.
Mira el trace que te puse>

trace(evt.result.row[i]@date);

Adaptado a lo que hiciste sería>

trace ("hora "+nodes.@hour);

¿Miraste el tuto de EX4? Realmente es muy potente y simple de usar para parsear cualquier XML

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:01 pm
sip, olle si utilizo la sintaxis que me das, la primera me da error las segunda solo imprime 'hora' en el debug mas nada..

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:03 pm
Sospecho que está mal estructurado el XML, seguiste la estructura que te sugerí?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:06 pm
esto es lo que tengo

<?php
include("conexion.php"); //incluimos el archivo conexion.php
$dom = new DOMdocument('1.0', 'iso-8859-1');
$dom->formatOutput = false;
$rows = $dom->appendChild($dom->createElement('row'));
$i = 0;
$sql = "SELECT * FROM prueba";

$result = mysql_query($sql,$Mysql);
while($fila = mysql_fetch_object($result))
{
$rows->appendChild($row = $dom->createElement('row'));
$row->appendChild($dom->createElement('hour', $fila->hour));
$row->appendChild($dom->createElement('merid', $fila->meridiem));
}
echo $dom->saveXML();
?>

hasta ahora me ha generado bien pero con la sintaxis que me puiste no nada.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:09 pm
Estás usando DOM cuando es mucho menos demandante usar simple echo, de todas formas me interesa lo que genera y que tenga la estructura que dices, si tienes problemas con el PHP puedes poner un POST en el foro correspondiente para que te ayuden a impirmir el XML que necesitas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:24 pm
ok pero te dije mas arriba cuando ejecuto la funcion me imprime en consola los datos del xml como los puedo usar a mi manera de ahi en adelante en el tuto de E4x solo enseña a pasear el xml como me dijiste anteriormente todabia estoy confundido por donde obtengo lo que necesito.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:29 pm
Así imprimo por consola

trace ("hora "+nodes.@hour);

Ahora por ejemplo si lo quisiera asignar a una propiedad de un objeto haría

miObjecto.hora = nodes.@hour;

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:40 pm
osea que el problema esta en el php cuando genera por que cuando pongo
trace("hora"+nodes.@hour) = nada
trase("hora"+nodes.hour)= hora <hour>9</hour><hour>10</hour><hour>11</hour>

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:45 pm
Te traza todos los nodos hour juntos.
Abre directamente el PHP en el navegador, mira el XML que sale, mira si luce bien, si tiene errores, luego lo copias y pegas en un archivo estático y cargas eso en vez del PHP.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:48 pm
cuando habro directamente el php en el navegador me da esto 11am12pm9am que esquivalente a hour,merid ahi me imprime bien.

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 06:56 pm
El XML y su estructura es lo que interesa, en mi primera respuesta te sugerí una estructura

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 08:58 pm
hola de nuevo he aplicado la esctructura que me dijiste y tengo problemas
mira la estructura que genera
<data>
<row>
<hour>11</hour>
<merid>am</merid>
</row>
<row>
<hour>12</hour>
<merid>pm</merid>
</row>
<row>
<hour>9</hour>
<merid>am</merid>
</row>
</data>

pero con el trace sigue sin mostrar nada que podria estar fallando

var nodes:XMLList = e.result.row
for(var i:int = 0; i<nodes.length(); i++)
trace ("hora "+nodes.@hour);

Por lare

46 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Oct 2011 11:00 pm
Prueba

trace ("hora "+nodes[i].@hour);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 11:06 pm
me lanza este error
[SWF] C:\wamp\www\prueba\bin-debug\prueba.swf - 1,046,713 bytes after decompression
TypeError: Error #1010: Un término no está definido y no tiene propiedades.
at prueba/java2()[C:\wamp\www\prueba\src\prueba.mxml:113]
at prueba/__hs_result()[C:\wamp\www\prueba\src\prueba.mxml:119]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.rpc.http.mxml::HTTPService/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:275]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:191]
at mx.rpc::Responder/result()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:41]
at mx.rpc::AsyncRequest/acknowledge()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
at DirectHTTPMessageResponder/completeHandler()[E:\dev\3.0.x\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:381]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

Por lare

46 de clabLevel



 

msie8
Citar            
MensajeEscrito el 04 Oct 2011 11:15 pm
Ok, superado los 20 POST ya es un hilo teledirigido, donde te digo de hacer una cosa, tu la haces exactamente, me pones el error, etc, etc. Te toca a ti ahora investigar, ver como accedes a los nodos del XML siguiendo los tutoriales de EX4, etc
Lo dejo aquí, si avanzas sustancialmente y tienes dudas distintas, ya me chiflas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2011 11:18 pm
ok gracias hermano por tu sabia ayuda el problema esta en el php segun he notado por que prove el ejemplo del tuto de ex4 y me funciona bien....muchas gracias y disculpa la molestia.

Por lare

46 de clabLevel



 

msie8

 

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