Ordenar strings

26/11/2010

0

PHP

Bom pessoal, tenho um problema que já me atormenta por um mês, tenho uma aplicação em php que pega informações no banco de dados do tipo string, o campo é chamado de "memnum" porém ele tem ser mandado para pdf como se fossem sub-itens por exemplo:
1.1.1
1.1.2
1.1.3
1.1.4
e assim por diante, o problema é que não consigo ordenar esta informação em ordem crescente e nem decrescente sem que alguns destes itens fiquem desarrumados. um exemplo de ordenação crescente:
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
1.1.8
1.1.9

nem na aplicação e nem no banco de dados é possível ordenar estes valores de forma correta, estou mandado o código e qualquer ajuda será muito bem vinda tanto para a aplicação quanto para o banco de dados que é postgresql.
segue o código da aplicação:

public function getMemoria( $intMETID )
    {
        $strSql = "select * from sicofin.vw_memorias where metid = " . $intMETID;
       
        $objConnection = Propel::getConnection();
        $objResult = $objConnection->query( $strSql );
        $arrRows = $objResult->fetchAll();
       
        $arrMemoria = array();
        if ( count( $arrRows ) )
        {
            $totalProponente = $totalMDA = $totalRen = 0;
           
            foreach ( $arrRows as $x => $row )
            {
                $arrMemoria[ $x ][ "memnum" ]          = $row[ "memnum" ];
                $arrMemoria[ $x ][ "tifdesc" ]         = $row[ "tifdesc" ];
                $arrMemoria[ $x ][ "memobs" ]         = $row[ "memobs" ];
                $arrMemoria[ $x ][ "unmdesc" ]         = $row[ "unmdesc" ];
                $arrMemoria[ $x ][ "memqtde" ]         = number_format( $row[ "memqtde" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrunit" ]     = number_format( $row[ "memvlrunit" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrcnt" ]     = number_format( $row[ "memvlrcnt" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrmda" ]     = number_format( $row[ "memvlrmda" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrren" ]     = number_format( $row[ "memvlrren" ],     2, ",", "." );
                $arrMemoria[ $x ][ "valortotal" ]     = number_format( $row[ "valortotal" ],     2, ",", "." );
               
                var_dump($arrMemoria[$x]["memnum"]);
               
               
                $totalProponente += $row[ "memvlrcnt" ];
                $totalMDA += $row[ "memvlrmda" ];
                $totalRen += $row[ "memvlrren" ];
            }
        }
       
        return $arrMemoria;
    }

Leonardo Dias

Leonardo Dias

Responder

Posts

26/11/2010

Leonardo Dias

Bom pessoal, tenho um problema que já me atormenta por um mês, tenho uma aplicação em php que pega informações no banco de dados do tipo string, o campo é chamado de "memnum" porém ele tem ser mandado para pdf como se fossem sub-itens por exemplo:
1.1.1
1.1.2
1.1.3
1.1.4
e assim por diante, o problema é que não consigo ordenar esta informação em ordem crescente e nem decrescente sem que alguns destes itens fiquem desarrumados. um exemplo de ordenação crescente:
1.1.1
1.1.10
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
1.1.8
1.1.9

nem na aplicação e nem no banco de dados é possível ordenar estes valores de forma correta, estou mandado o código e qualquer ajuda será muito bem vinda tanto para a aplicação quanto para o banco de dados que é postgresql.
segue o código da aplicação:

public function getMemoria( $intMETID )
    {
        $strSql = "select * from sicofin.vw_memorias where metid = " . $intMETID;
       
        $objConnection = Propel::getConnection();
        $objResult = $objConnection->query( $strSql );
        $arrRows = $objResult->fetchAll();
       
        $arrMemoria = array();
        if ( count( $arrRows ) )
        {
            $totalProponente = $totalMDA = $totalRen = 0;
           
            foreach ( $arrRows as $x => $row )
            {
                $arrMemoria[ $x ][ "memnum" ]          = $row[ "memnum" ];
                $arrMemoria[ $x ][ "tifdesc" ]         = $row[ "tifdesc" ];
                $arrMemoria[ $x ][ "memobs" ]         = $row[ "memobs" ];
                $arrMemoria[ $x ][ "unmdesc" ]         = $row[ "unmdesc" ];
                $arrMemoria[ $x ][ "memqtde" ]         = number_format( $row[ "memqtde" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrunit" ]     = number_format( $row[ "memvlrunit" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrcnt" ]     = number_format( $row[ "memvlrcnt" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrmda" ]     = number_format( $row[ "memvlrmda" ],     2, ",", "." );
                $arrMemoria[ $x ][ "memvlrren" ]     = number_format( $row[ "memvlrren" ],     2, ",", "." );
                $arrMemoria[ $x ][ "valortotal" ]     = number_format( $row[ "valortotal" ],     2, ",", "." );
               
               
               
                $totalProponente += $row[ "memvlrcnt" ];
                $totalMDA += $row[ "memvlrmda" ];
                $totalRen += $row[ "memvlrren" ];
            }
        }
       
        return $arrMemoria;
    }

Responder

02/12/2010

Hugo

Boa tarde Leonardo,

          Me desculpe por entrar neste post para fazer uma pergunta que não nada a ver com o assunto tratado.

          Estou a procura de alguém para me dar aulas a distÂncia sobre PHP acessando Mysql. Já sou experiente em desenvolvimento em aplicativos para a plataforma windows.

          Embora eu tenha feito uma pós-graduação em java, não tenho experiência em desenvolvimento web. Por força maior, necessito urgente aprender a desenvolver um sistema de gestão e/ou ecommerce em PHP.

          Você teria interesse nesta empreitada?


Abraços


Responder

09/12/2010

Leonardo Dias

  Não entendi o que você está querendo na verdade, é para dar aulas ou para criar o sistemas de gestão de ecommerce?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar