Ordenar strings

26/11/2010

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;
    }

PHP

Leonardo Dias

Respostas

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 Citar

02/12/2010

Hugo Currículo

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 Citar

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 Citar