Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

shauss

PHP/Mysql duvida comparação de dados.

Mensagens Recomendadas

shauss

Boas,

a minha db tem por exemplo os campos cpo_cod3(os 3 numeros do codigo postal),cpo_cod4(os 4 numeros do codigo postal),art_desig(morada),nporta.

então o meu problema é o seguinte, eu tenho por exemplo estas 3 moradas:

1111-123 rua da esquina nºimpares de 3 a 29

1111-124 rua da esquina nºpares de 2 a 24

1234-125 rua da esquina seg.social

eu queria que quando ocorre-se essa situação me retorna-se "morada vaga" mas em vez disso ele retorna a 1ª morada e só depois escreve "morada vaga" fica algo do género:

1111-123 rua da esquina nºimpares de 3 a 29

morada vaga.

O código que estou a utilizar é:

$sql="SELECT *
FROM cpo_cod_pos, ficheiro
WHERE cpo_cod_pos.art_desig LIKE ficheiro.art_nome and cpo_cod_pos.loc_dsc LIKE ficheiro.art_local";
$resultado = mysql_query($sql,$ligacao);
$row3=mysql_num_rows($resultado);
	for ($i=0; $i<$row3; $i++)
	{
		$reg=mysql_fetch_array($resultado); 
		$reg['IDmorada'] = str_replace("%","",$reg['IDmorada']);
		if ($repeticao==$reg['art_desig']){
		if ($repcp4!=$reg["cpo_cod4"] and $repcp3!=$reg["cpo_cod3"]){
			echo '<tr><td>'.$reg['IDmorada'].'</td>';
			echo '<td align="center" colspan="8">morada vaga</td>';
			}
		}else{

Desde já agradeço a vossa ajuda.

Cumps,

SHAUSS

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Se ele aparece "morada vaga", eu n encontro aonde é q isso aparece neste código. Preciso de mais código para te ajudar


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

Se ele aparece "morada vaga", eu n encontro aonde é q isso aparece neste código. Preciso de mais código para te ajudar

já alterei o post inicial pode ser que assim já percebas melhor. quanto ao código o resto é só escrever os dados mas se for realmente necessário eu posto aqui.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Quantos resultados é q ele dá?

+:

Tu n indicas o q é q pesquisas e até procuras com o like

Mostra aí o q tens nessas células. Temo ("cheira-me") que estejas a usar wildcars sem querer.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

Quantos resultados é q ele dá?

+:

Tu n indicas o q é q pesquisas e até procuras com o like

Mostra aí o q tens nessas células. Temo ("cheira-me") que estejas a usar wildcars sem querer.

Tabela Ficheiro

ID art_nome art_local

6 %rua%rosa%araujo% %lisboa%

8 %rua%afonso%henriques% %serra%da%silveira%

os resultados que dá é:

  ID no ficheiro Original: Código postal                     Artéria:

        6                           1250-194  LISBOA                 Rua Rosa Ara�jo

        6                                   morada vaga

        8                           2605-125  BELAS Rua Dom Afonso Henriques

o que eu queria que aparecesse era:

  ID no ficheiro Original: Código postal                     Artéria:

        6                                   morada vaga

        8                           2605-125  BELAS Rua Dom Afonso Henriques

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

Responde a isto sff:

Porque é que usas o like?

Qual a função do %?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

Responde a isto sff:

Porque é que usas o like?

Qual a função do %?

Uso o like porque me parece a forma mais simples de fazer uma comparação de strings.

Não sei muito bem explicar, mas assim de uma forma geral penso que por exemplo se tiver %$string% para alem de procurar $string em si procura também a $string com algo ha frente ou atras. epah se me tavas a "testar" presumo que falhei se não sabes mesmo o melhor é googlar q eu sou um tosco neste aspecto  :wallbash:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

eu queria que quando ocorre-se essa situação me retorna-se "morada vaga" mas em vez disso ele retorna a 1ª morada e só depois escreve "morada vaga" fica algo do género:

1111-123 rua da esquina nºimpares de 3 a 29

morada vaga.

O código que estou a utilizar é:

		if ($repcp4!=$reg["cpo_cod4"] and $repcp3!=$reg["cpo_cod3"]){
			echo '<tr><td>'.$reg['IDmorada'].'</td>';
			echo '<td align="center" colspan="8">morada vaga</td>';
			}

Estás a dizer para escrever morada vaga e a morada na mesma condição .. não percebo o que queres ..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

Estás a dizer para escrever morada vaga e a morada na mesma condição .. não percebo o que queres ..

nao.. eu estou a escrever o ID correspondente ha morada e digo que a morada é vaga.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

@yoda

Eu já pensei tb nisso. Mas é só um id, supostamente n incomoda.

E além disso, pelo q ele mostra aquilo é num novo <tr> e não num novo <td>. Se fosse num novo <td> é q poderia ser algo com o IDmorada.

Uso o like porque me parece a forma mais simples de fazer uma comparação de strings.

Não sei muito bem explicar, mas assim de uma forma geral penso que por exemplo se tiver %$string% para alem de procurar $string em si procura também a $string com algo ha frente ou atras. epah se me tavas a "testar" presumo que falhei se não sabes mesmo o melhor é googlar q eu sou um tosco neste aspecto  :wallbash:

É q tens aí um:  $reg['IDmorada'] = str_replace("%","",$reg['IDmorada']);

e pareceu-me que estavas a usar o simbulo % para separar dados.

o % e o _ em SQL são wildcards, há q ter atenção a isso.

add:

N sei se sabes mas é bom avisar:

Nunca uses wildcards para simplificar coisas, usa-os qd queres pesquisar algo q não sabes o q é mas sabes parte do q é.

Se tens nomes de ruas, etc... só se, por exemplo, um utilizador quiser procurar é q usas wildcards, senão usa literals.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

eu uso os % porque me dá mais garantias de resultado correcto. E apenas nesta questão me está a falhar alguma coisa, até porque o meu 'stor' de programação já me disse que na teoria tá certo e não sabe onde possa estar o erro.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

se calhar o erro está noutro sítio


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
brunoais

o q é q o:

$reg['IDmorada']

tem gravado?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

o q é q o:

$reg['IDmorada']

tem gravado?

tem gravado o ID do registo correspondente na tabela ficheiro.

Acho que farias melhor em usar regex para verificar a integridade da morada, e há pela net snippets de código para verificar códigos postais, entre muitas outras coisas.

eu ainda sou "noob" em php portanto nao faço a minima do que sejam esses termos que acabas-te dizer  :wallbash: (regex,snippets)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

O que tu queres é verificar se uma morada segue determinadas regras, certo?

Não, eu quero que quando as moradas forem iguais e o codigo postal de 4 numeros(cp4) for diferente aparecer vago, o problema que eu acho que seja é que aquela morada tem dois cp4's iguais e um diferente e isso também devia contar mas ele escreve a primeira morada e depois as outras duas já faz o que devia.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shauss

Deixa aí as tais moradas que estão na base de dados.

 

Cp4  cp3 local                        Artéria                              nporta

1500-423  LISBOA Pra�a Marechal Humberto Delgado

1250-194  LISBOA Rua Rosa Ara�jo           Impares de 1 a 59

1250-195  LISBOA Rua Rosa Ara�jo             Pares de 2 a 34

1269-183  LISBOA Rua Rosa Ara�jo                 43

2605-125  BELAS Rua Dom Afonso Henriques

Isto são as moradas que estou a usar porque eu tenho muitas moradas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Então o que disseste não faz sentido.

Tens 2 moradas com o Cp4 igual e a morada igual, e com o Cp3 diferente. Suponho que o que querias dizer era que quando o Cp3 é diferente e os outros 2 iguais, que a morada é vaga.

Aquilo que pretendes é o quê exactamente? Impedir que moradas iguais sejam inseridas?

Já agora, http://www.ctt.pt/feapl/jsp/validarmorada/public/validarmorada.jsf?lang=def

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.