O grande problema é que eu não sei os campos das colunas no ficheiro
PHP, tem de ser totalmente genérico. Estou a tentar fazer desta forma
mas ainda não consegui resolver:

///// PHP /////

VOU BUSCAR AS COLUNAS DA TABELA (para serem os Keys do
ArrayCollection)

function getColumnsFromQuery($address, $user, $pass, $bd, $query)
        {
                $this->conn = @mysql_pconnect($address, $user, $pass);
                mysql_select_db ($bd);
                mysql_query("CREATE VIEW lol AS $query");
                $result = mysql_query("SHOW COLUMNS FROM lol");
                if (!$result) {
                 echo 'Could not run query: ' . mysql_error();
        }
        $fieldnames=array();

                if (mysql_num_rows($result) > 0) {
                        while ($row = mysql_fetch_assoc($result)) {
                                $fieldnames[] = $row['Field'];
                        }
        }
        mysql_query("DROP VIEW lol");
        return $fieldnames;


     }

VOU BUSCAR TODOS OS VALORES DA TABELA (para serem os Values do
ArrayCollection)

        function getValues($address, $user, $pass, $bd, $query) {
                $this->conn = @mysql_pconnect($address, $user, $pass);
                mysql_select_db ($bd);
                $result = mysql_query($query);
                while($row=mysql_fetch_array($result)) {
                $return[] = $row;
                }
                return $return;
        }


/////// AS3 //////

Apanho os resultados das chamadas destas funcoes como objectos, crio
um Array 'columns' que contém as keys, e um array 'results' com os
valores da tabela.
De seguida chamo uma função que supostamente criaria o ArrayCollection
a partir destes dois arrays:

                public function createAC(keys:Array, 
values:Array):ArrayCollection {
                        var ac1: ArrayCollection = new ArrayCollection();
                        var k:int = 0;
                        var v:int = 0;
                        var temp:int = 0;

                        for (; k<values.length; k++, temp++) {
                                var array:Array = new Array();
                                for (; v < values[0].length; v++){
                                        
array.push({(keys[temp]):values[temp][v]});
                                }
                                ac1.addItem(array);
                                }
                        return ac1;
                }

Aqui basicamente é criado um array por coluna, onde são inseridos os
keys e respectivos valores, finalmente adicionando-os ao
ArrayCollection que irá ser devolvido.

O problema é que se eu for chamar qualquer coisa do tipo (sendo Mes)
uma das colunas da tabela, logo uma das keys):
ac1[0].Mes
ele diz que não está definido.

Assim, quando tento tornar este 'ac1' como o dataProvider do gráfico,
ele não consegue,obviamente, ir buscar valores nenhuns!!

Estou a ver isto tudo ao contrário? Há alguma solução + fácil pra
isto?

[ ]
manel

On 17 Set, 18:16, "Miguel Vaz" <[EMAIL PROTECTED]> wrote:
> Os nomes dos campos são sempre os mesmos, correcto? Ou pretendes uma função
> que se adapte ao tipo de tabelas que eventualmente tiveres? Megalómano,
> vamos bloquear os nomes. ;-)
>
> imaginando que a tua tabela é:
>
> tabela_de_tralha
>
> campos:
> id,month,profit,expense
>
> em PHP:
>
> function faz_super_ninja_query():void{
>
> $query = "Select * from tabela_de_tralha";
>
> $this->conn = @mysql_pconnect($address, $user, $pass);
> mysql_select_db ($bd);
> $result = mysql_query($query);
> $i=0;
>
> while($row=mysql_fetch_array($result)) {
>
>    $dados[$i]["Month"] = $row["month"];
>    $dados[$i]["Profit"] = $row["profit"];
>    $dados[$i]["Expense"] = $row["expense"];
>
>    $i++
>
>  }
>
> return $dados
>
> }
>
> Não testei, mas parece-me bem. No flex recebes uma estrutura idêntica à que
> pretendes. Trata de receber o resultado num arrayCollection.
>
> Ficas com algo assim:
>
> dados[1]["Month"] com valor "janeiro"; // ou dados.getItemAt(1).Month
> dados[1]["Profit"] etc
> ...
> dados[2]...
>
> perdoa se entendi mal ou se escrevi código errado. Não me é possivel testar
> onde estou. Espero que pelo menos ajude alguma coisa. :-)
>
> Miguel Vaz
>
> 2008/9/17 Manuel Rosa <[EMAIL PROTECTED]>
>
> > É mesmo apenas uma tabela... como não sabia criar o ArrayCollection de raíz
> > tava a ir buscar o nome das colunas da tabela, e outro com os dados:
> > function getColumnsFromQuery($address, $user, $pass, $bd, $query)
> >  {
> > $this->conn = @mysql_pconnect($address, $user, $pass);
> > mysql_select_db ($bd);
> >  mysql_query("CREATE VIEW lol AS $query");
> > $result = mysql_query("SHOW COLUMNS FROM lol");
> >  if (!$result) {
> >         echo 'Could not run query: ' . mysql_error();
> >                 }
> >            $fieldnames=array();
> >                 if (mysql_num_rows($result) > 0) {
> >            while ($row = mysql_fetch_assoc($result)) {
> >             $fieldnames[] = $row['Field'];
> >            }
> >                }
> >         }
>
> > e,
>
> > function getValues($address, $user, $pass, $bd, $query) {
> > $this->conn = @mysql_pconnect($address, $user, $pass);
> >  mysql_select_db ($bd);
> > $result = mysql_query($query);
> > while($row=mysql_fetch_array($result)) {
> >        $return[] = $row;
> >    }
> >     return $return;
> >  }
>
> > Se houver uma forma melhor de criar logo o ArrayCollection com as Keys
> > sendo o nome das colunas e os Values sendo os respectivos valores na tabela,
> > melhor!!!
>
> > 2008/9/17 Miguel Vaz <[EMAIL PROTECTED]>
>
> >> Podes resolver o problema em AS, criando um novo array, mas talvez fosse
> >> mais fácil resolver a nivel do mysql. Dizes que tens duas queries, talvez 
> >> aí
> >> possas construir de raiz a estrutura de dados mais facilmente.
>
> >> Podes mostrar os queries e estrutura das 2 tabelas?
>
> >> Miguel Vaz
>
> >> 2008/9/17 Manel <[EMAIL PROTECTED]>
>
> >>> Boas,
>
> >>> Tendo 2 arrays um com:
> >>>  {Month, Profit, Expenses} e outro com { {"Jan", 2000, 1500} , {"Feb",
> >>> 1000, 200} , { "Mar", 1500, 500} }
>
> >>> como consigo criar um ArrayCollection do tipo:
> >>> public var testValues:ArrayCollection = new ArrayCollection([
> >>>        {Month: "Jan", Profit:2000, Expenses:1500},
> >>>                {Month: "Feb", Profit:1000, Expenses:200},
> >>>                {Month: "Mar", Profit:1500, Expenses:500}
> >>>        ]);
>
> >>> Isto porque quero alimentar um gráfico com um arraycollection obtido
> >>> através de duas queries mysql, sendo que recebo das mesmas um array
> >>> com o nome das colunas, e outro com os respectivos valores em cada
> >>> linha.
>
> >>> Para depois ter qualquer coisa do tipo:
>
> >>>                var vAxis:CategoryAxis = new CategoryAxis();
> >>>                vAxis.categoryField = "Month" ;
> >>>                vAxis.dataProvider =  testValues;
> >>>                myChart.verticalAxis = vAxis;
> >>>                myChart.dataProvider = testValues;
> >>>                myChart.series = mySeries;
>
> >>> Espero ter-me feito entender.
>
> >>> Desde já obrigado.
> >>> [ ]
> >>> manel
--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade 
Portuguesa de Desenvolvimento de RIAs - www.riapt.org" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a