Comunidad de diseño web y desarrollo en internet online

Preg. ¿como llenar un array con datos de un servicio de htt?

Citar            
MensajeEscrito el 27 Dic 2008 08:11 pm
servicio:

este servicio ejecuta un consulta en una base de datos para rescatar una tabla de tres
campos:

nombre
salario
puesto

que son como 100 registros

Código :


<mx:HTTPService id="loadTable" url="http://localhost/sistem/bin/prueba.php" useProxy="false" method="POST" >
</mx:HTTPService>

aca lo cargo en un datagrid dentro de un panel:

   <mx:Panel x="24" y="24" width="586" height="353" layout="absolute" title="Tabla: USUARIOS" status="Status" titleIcon="@Embed(source='assets/Panel.png')">
      <local:CustomDataGrid x="0" y="0" width="566" height="277" 
         id="dgUsuarios" 
         dataProvider="{loadTable.lastResult.video.sistema}"
         change="updateRowStyle()" scroll="updateRowStyle()"
         >
         <local:columns>
            <mx:DataGridColumn headerText="nombre"     dataField="nombre"     textAlign="center"/>
            <mx:DataGridColumn headerText="salario"    dataField="salario"    textAlign="center"/>
            <mx:DataGridColumn headerText="puesto"     dataField="puesto"     textAlign="center"/>
         </local:columns>
      </local:CustomDataGrid>
      
      <mx:ControlBar>
         <mx:Button label="Load" width="100" click="loadTable.send()"/>         
      </mx:ControlBar>
   </mx:Panel>

---------------------------------------------------------------------------------------

   <mx:Script>
      <![CDATA[
         import mx.controls.dataGridClasses.DataGridColumn;

         private function toggleFilter():void {
            if (checkBox.selected) {
               arrColl.filterFunction = processFilter;
            } else {
               arrColl.filterFunction = null;
            }
            arrColl.refresh();
         }

         private function processFilter(item:Object):Boolean {
            return parseFloat(item.value) == 0;
         }

         private function value_labelFunc(item:Object, col:DataGridColumn):String {
            return item[col.dataField].toFixed(2);
         }
      ]]>
   </mx:Script>

   <mx:ArrayCollection id="arrColl">
      <mx:source>
         <mx:Array>
            <mx:Object name="ColdFusion" value="0.00" />
            <mx:Object name="Dreamweaver" value="0.12" />
            <mx:Object name="Fireworks" value="1.01" />
            <mx:Object name="Flash" value="0" />
            <mx:Object name="Flash Player" value="-0.00" />
            <mx:Object name="Flex" value="0.00" />
            <mx:Object name="Illustrator" value="2.92" />
            <mx:Object name="Lightroom" value="0.32" />
            <mx:Object name="Photoshop" value="0.06" />
         </mx:Array>
      </mx:source>
   </mx:ArrayCollection>

   <mx:Panel status="{arrColl.length}/{arrColl.source.length} item(s)">
      <mx:DataGrid id="dataGrid"
            dataProvider="{arrColl}"
            verticalScrollPolicy="on">
         <mx:columns>
            <mx:DataGridColumn dataField="name" />
            <mx:DataGridColumn dataField="value"
                  labelFunction="value_labelFunc" />
         </mx:columns>
      </mx:DataGrid>
      <mx:ControlBar>
         <mx:CheckBox id="checkBox"
               label="Filter DataGrid"
               click="toggleFilter();" />
      </mx:ControlBar>
   </mx:Panel>



Lo que quiero es llenar un arreglo con los datos que trae el servicio de consulta.
para aprovechas algunas funciones que se pueden hacer con los arrays en flex,
con eso me evito de hacer mas consultas a la base de datos y mas codigo.

mi pregunta es como indicar en una estructura de arreglo como la anteior los datos
que debe almacenar que trae el servicio:
url="http://localhost/sistem/bin/prueba.php"
como le indico almacenar los datos de la consulta en el arreglo a manera de object ya que
en un datagrid se puede indicar facilmente usando los datafiel y el dataprovider

saludos y de antemano agradesco quien pueda guiarme en como resolverlo.

saludos..

Por L30N1D4Z

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Dic 2008 12:33 pm
Como saca los datos el PHP? ¿Pares de nombre/valor? ¿String largo separado por comas? ¿Remoting, 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 05 Ene 2009 04:07 pm
que tal disculpa la dardanza al responder..

ha mira la el php hace la consulta y saca los valores de los campos.... y en base al campo y su valor relleno los datagrid.

no es string largo remotin o xml...


ahora usando XML se pueden reelnar, grid, arrays, etc... es una buena opcion, pero yo mi idea es pasar de la consulta a un astructura de estas xml o array..

deja estructurara mas apliamente mas informacion y lo checamos va!!!..

saludos.

Por L30N1D4Z

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 04:31 pm
Entonces son pares de nombre/valor, algo como

nombre0=pepe&edad0=8&nombre1=Juan&edad1=6 .... etc

deja estructurara mas apliamente mas informacion y lo checamos va!!!..


No entiendo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 04:45 pm
ahorita tengo que terminar un pendiente. mañana pongo el codigo de la consulta y lo discutimos...

Por L30N1D4Z

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 04:50 pm
Don't worry, no tengo ningún apuro

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Ene 2009 03:59 pm
Que onda....

del servicio que mando de la aplicacion de flex pasa a este archivo de php llamado prueba.php que
hace una consulta a una bd bajo esta estructura:

<?
include("funcserver.php");


$Query = "SELECT * from cUsuarios where activo='1'";
$Result = mysql_query( $Query );
$Return = "<video>";
while($sistema = mysql_fetch_object($Result))
{
$Return .= "<sistema>
<nombre>".$sistema->nombre."</nombre>
<salario>".$sistema->salario."</salario>
<puesto>".$sistema->puesto."</puesto>
<activo>".$sistema->activo."</activo>
</sistema>";
}
$Return .= "</video>";

mysql_free_result( $Result );
print ($Return);
?>



en el siguiete ejemplo se generan datos con un for y pasan a un array
para llena un dataGrid.

-----------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" backgroundColor="white">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import flash.display.Sprite;
import mx.controls.Alert;

import mx.collections.ArrayCollection;
[Bindable] public var f:ArrayCollection = new ArrayCollection();

private function a():void
{
var h:Object = new Object();
for(var i:int=0;i<10;i++)
{
h = {};
h["products"] = "Producto_"+i.toString();
h["price"] = 10*i;
f.addItem(h);
}
}
]]>
</mx:Script>

<mx:Script>
<![CDATA[
import mx.controls.dataGridClasses.DataGridColumn;

private function toggleFilter():void {
if (checkBox.selected) {
f.filterFunction = processFilter;
} else {
f.filterFunction = null;
}
f.refresh();
}

private function processFilter(item:Object):Boolean {
return parseFloat(item.price) == 10;
}

private function value_labelFunc(item:Object, col:DataGridColumn):String {
return item[col.dataField].toFixed(2);
}
]]>
</mx:Script>

<mx:Button x="479.5" y="393" label="Llena Grid" click="a()"/>
<mx:Panel y="69" width="276" height="302" layout="absolute" horizontalCenter="0" borderColor="#060000"
status="{f.length}/{f.source.length} item(s)">

<mx:DataGrid dataProvider="{f}"
verticalScrollPolicy="on"
x="0" y="0" height="226"
width="256" editable="false" id="dataGrid">

<mx:columns>
<mx:DataGridColumn headerText="Productos" dataField="products" itemRenderer="local.activoItemRenderer" headerRenderer="mx.controls.Label"/>
<mx:DataGridColumn headerText="Precio" dataField="price" labelFunction="value_labelFunc" itemRenderer="local.activoItemRenderer" headerRenderer="mx.controls.Label"/>
</mx:columns>
</mx:DataGrid>
<mx:ControlBar>
<mx:CheckBox id="checkBox"
label="Filter DataGrid"
click="toggleFilter();" />
</mx:ControlBar>

</mx:Panel>

</mx:Application>
-----------------------------------------


el objetivo final es trabajar con los datos almacenados en el array de manera local
para hacer visualizacion o filtros mas especificos en flex .utilizando solo una vez la consulta
principal para traer los datos.

Por L30N1D4Z

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Ene 2009 05:18 pm
Aha ... ¿y el problema era?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Ene 2009 04:20 pm
Ha, ... es que no se como pasar todos los datos de la consulta y llenar un array por campos segun los datos de la consulta.
o pasar todos los datos por campos a un archivo interno o externo a un aplicacion flex de tipo xml tambien seria una opcion

Por L30N1D4Z

13 de clabLevel



 

msie7
Citar            
MensajeEscrito el 07 Ene 2009 04:30 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Ene 2009 03:38 pm
OK. Gracias.... muy buen punto...

voy a revisarlo.....

Por L30N1D4Z

13 de clabLevel



 

msie7

 

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