1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP & MySQL - Código Postal

Discussão em 'Web Development' iniciada por Old Snake, 16 de Abril de 2008. (Respostas: 13; Visualizações: 14244)

  1. Old Snake

    Old Snake Power Member

    Boas! :)

    Estou a ter algumas dificuldades num trabalho que estou a fazer (para a escola), que tem haver com códigos postais :005:

    Basicamente tenho de ter tudo especificado numa base de dados (estou a usar MySQL para isso) e criar algo que me permita obter a morada através de um código postal e vice-versa.
    Consegui obter a lista de todos os códigos postais no site do CTT (lista).

    Para organizar os distritos, concelhos e freguesias não tive qualquer problema. Os dados da lista que referi acima vinham num bloco de notas da seguinte maneira:


    distrito – ex: 01;Aveiro (01 corresponde ao código do distrito, sendo Aveiro o seu nome)
    concelho – ex: 18;24;Vouzela (18 corresponde a distrito, 24 a conselho)
    freguesia – ex: 09;11;10;Bendada (09 distrito, 11 concelho, 10 freguesia)


    Consegui obter os dados facilmente usando estas linhas de código em php (o meu prof já tinha um exemplo feito muito parecido logo foi praticamente só copiar):

    Este exemplo é referente ao concelho. As linhas de código para aceder à b.d. estão como “comentário” porque o PC estava com problemas a conectar. Acaba por não fazer grande diferença, já que os resultados me aparecem prontos a “copiar & colar” no MySQL, permitindo ainda corrigir alguns erros que apareçam.

    Só que agora para as moradas é que tenho um grande problema, já que umas me aparecem assim - 01;01;03;278;Pisão;;;;;;;;;;;3750;056;AGUADA DE CIMA – enquanto que outras assim - 01;01;04;289;Águeda;180101;Rua;do;;;Caldeireiro;;;;;3750;135;ÁGUEDA.

    Já não consigo fazer isto através do explode ; , e sinceramente não consigo pensar num método que me permita resolver este problema (diga-se desde já que não sou grande coisa a programação, infelizmente…). Além disso não sei a que se referem os números 289 e 180101 (do 2º exemplo nas moradas) :S

    Se me puderem dar umas ideias agradecia imenso! :) ;)

    Abraço

    P.S. Estava indeciso em escolher entre “Programação” e “Web Development” para meter isto, não sei se optei pela opção mais correcta.
     
  2. mascker

    mascker Power Member

    Boas,

    Lê o ficheiro leiame.txt que vem com o zip

    Saudações
     
  3. Old Snake

    Old Snake Power Member

    Obrigado :)

    Isso passou-me completamente ao lado. Veio dar uma grande ajuda ;)

    Assim já consegui resolver o problema.

    Abraço
     
  4. hostmake

    hostmake Power Member

    eu só quero agradecer pelo zip, passei tudo para 1 BD também, e criei 1 sistema completo de Portugal em ajax, muito porreiro.

    :p
     
  5. MySeLf

    MySeLf Power Member

    Eu também estou a fazer uma base de dados em SQL server 2005 e infelizmente também preciso de uma tabela com os códigos postais todos do país.

    Infelizmente tenho que os inserir através dum script de SQL com a sintaxe.

    INSERT INTO CODIGOPOSTAL (CODIGOPOSTAL, LOCALIDADE)
    VALUES ('12345','abrantes')

    e para conseguir construir um script através daquele ficheiro é um 31 dos bonitos.

    Alguém tem alguma sugestão?!

    Thanks In Advance,
     
  6. hostmake

    hostmake Power Member

    O código que tu queres já está feito neste tópico, 85 % pelo menos.
     
  7. MySeLf

    MySeLf Power Member

    infelizmente não sei trabalhar com php.

    O meu problema não consiste em inserir os dados mas sim na forma como estes são inseridos. têm que obrigatóriamente ser inseridos através do dito script com aquela sintaxe.

    Ou seja. o que eu preciso é de um programa que pegue no ficheiro, vá buscar os campos, e crie um fixeiro com aquela sintaxe por cada linha.

    Secalhar vou ser obrigado a fazer um programa em C.

    No entanto se alguém conseguir criar um em PHP que me faça isso de maneira a reproveitar o código ficava eternamente agradecido.

    Cumprimentos,
     
  8. hostmake

    hostmake Power Member

    Olhando para o código do nosso amigo, e juntando as tuas necessidades.

    PHP:
    <?php

    $file1
    =fopen("todos_cp.txt","rb");

    while(!
    feof($file1)) 
    {

    $linha=fgets($file1,4096);
    $dados=explode(";",$linha);

    $cpostal=trim($dados[14]);
    $localidade=trim($dados[16]);

        if (!
    array_key_exists($localidade$codigos)) {
            
    $codigos[$localidade]=$cpostal;
            
    $doSQL MYSQL_QUERY("INSERT INTO CODIGOPOSTAL (CODIGOPOSTAL, LOCALIDADE) VALUES ('$cpostal','$localidade')");    
        }

    }

    ?>
     
  9. MySeLf

    MySeLf Power Member

    Obrigado mas entretanto desenrasquei-me com o excel e um bocádo de ginástica :D

    De qualquer das formas, tal como disse, o meu muito obrigado. Pode ser que venha a ser útil para as outras milhentas tabelas.

    Estou a fazer uma bd e interface em VB para um trabalho da universidade. Decidimos fazer uma bd que apoia o procedimento de doar / procurar doador compatível de medula. Está a dar pano pra mangas. he he

    Cumprimentos e mais uma vez obrigado.
     
  10. Boa noite,

    Seria possível voltar a fornecer a listagem de códigos postais que conseguiu reunir? O link não está a funcionar.

    Desde já, muito obrigado!
     
  11. hostmake

    hostmake Power Member

    Para teres uma versão atualizada regista-te no site dos CTT, se quiseres a mesma desatualizada de 2008, penso que posso ir procurar.
     
  12. Já me registei no site dos CTT, mas não consigo dar com aquilo, em que zona é que a posso encontrar?
     
  13. legion

    legion Power Member

  14. Deus te pague que eu não tenho trocado nem conta PayPal! :p


    As voltas que eu já tinha dado à procura disto!!! Obrigado!!:D:D
     

Partilhar esta Página