PHP & MySQL - Código Postal

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):

<?php

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

//$aa=mysql_connect('localhost','root','root');
//mysql_select_db('codigopostal');

$sql="insert into concelho(codigocon, nome, codigodis) values ";

while(!feof($file1)){
$linha=fgets($file1,4096);
$dados=explode(";",$linha);
$dist=$dados[0];
$conc=$dados[1];
$nome=$dados[2];

$sql.="(".$conc.",'".$nome."',".$dist."),";
}

echo "<br>".$sql;

?>
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.
 
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,
 
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,
 
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')");	
	}

}

?>
 
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.
 
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!
 
Back
Topo