Ir para conteúdo
Fórum Script Brasil
  • 0

Indexação De Registros


Rudimar

Pergunta

Quando exibo uma lista de registros indexados (order by), alguns registros são exibidos fora da sequência.

Em PHP existe reindexação de arquivos ??

Quando trabalhei com Clipper, Fox , etc, voce tinha a opção de abrir o arquivo indexado ou não. E toda vez que a base de dados sofria alguma alteração (inclusão de registros, exclusão, etc) voce podia usar o reindex para reindexar o arquivo.

Então pergunto: PHP precisa reindexar o arquivo?? Ou é só usar a cláusua order by??

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

é só usar order, que tipo de dados tu ta usando para classificar quando não da certo?

estou usando varchar.

Olha para entender o problema vou passar a url. Acesse:

diariodasleis

Após acessar o link marque a opção Legislação Federal

Não selecione mais nada. Então clique no botão Pesquisar

Aparece uma lista de ementas. Note as normas a esquerda em negrito. Em seguida vem o número da norma. E depois a data da norma.

No link em azul, no final do link, existe entre parenteses a Data do Diário Oficial.

A indexação está assim: Data do Diário Oficial, Data da Norma e Número da norma. Tudo em ordem decrescente, de modo que as normas mais recentes ficam no topo da página.

Veja as normas 11, 12 101 e 102. Estão fora da ordem.

Deveria aparecer primeiro no topo a 102, 101, 12 e 11, visto que a Data do Diário Oficial é 27-01-2004 e a Data da Norma é 26.01.2004. Ambas as datas são as mesmas para todas as ementas citadas (11, 12, 101 e 102).

Abaixo segue parte da instrução sql que fiz para indexar os registros:

$sql = Select * from ....etc...

$sq] = $sql . "order by Secao, DataDiarioOficial DESC, DataLei DESC, Numero DESC";

Grato.

Link para o comentário
Compartilhar em outros sites

  • 0
não precisa indexar

Bem então pelo jeito, campo varchar não é confiável para indexar quando se trata de números... Estou certo??

Tentei colocar dentro de uma instrucao sql para converter a string para inteiro, assim:

$sql = $sql "Select * from Tabela

$sql = $sql . "order by Secao, DataDiarioOficial DESC, DataLei DESC, (int)(Numero) DESC";

Isto funciona??

Deu erro na instrução sql...

Link para o comentário
Compartilhar em outros sites

  • 0
porque você não coloca o campo no formato date?????

fica melhor...

Bem para datas o jeito foi definir no banco de dados o tipo de dados como date. Só que fica no formato americano. Via programa, ao exibir a data, faço umas manipulações para ficar no nosso formato.

Quanto ao campo que contém o numero, o jeito foi mudar o tipo de campo de VARCHAR para INTEGER.

Aí funcionou...

Obrigado a todos...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...