Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Heitor Glockner

URL Amigável

Recommended Posts

Olá pessoal,

 

meu problema é o seguinte:

 

estou aprendendo URL amigável, porém não sei como transformar meu id na descrição do campo e depois recuperar esse id. Abaixo dou um exemplo:

 

Minha tabela cidades no BD:

__________________
cid_id| cid_nome
______|___________
  1  |Porto Alegre
  2  |  São Paulo
  3  |   Curitiba
______|___________

A minha url inicial para referenciar São Paulo seria:

http://localhost/teste/index.php?cidade=2

 

Já estou conseguindo tornar a url amigável deixando este link como:

http://localhost/teste/2

 

Porém meu problema é transformar esse id 2 para sao-paulo e depois resgata-lo, deixando o link como:

http://localhost/teste/sao-paulo

 

Não sei se tenho que acrescentar um novo campo cid_url para quando fazer a busca procurar pelo cid_url ao invés do cid_id ou cid_nome.

 

Qual a maneira correta de fazer isso, levando em consideração que posso ter uma quantidade imensa de cidades ?

 

Espero não ter sido muito confuso no que eu quero.

 

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo é isso mesmo que você disse:

 

Não sei se tenho que acrescentar um novo campo cid_url para quando fazer a busca procurar pelo cid_url ao invés do cid_id ou cid_nome.

 

Infelizmente é assim, você precisará criar um novo campo na tabela e colocar o nome lá, de alguma forma, seja dinamicamente ou um a aum mesmo.

 

Espero ter ajudado,

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, como eu e o Matheus Tavares disse, você pode fazer na "mão" ou de forma dinâmica no caso da função do Matheus, mais de qualquer forma terá que armazenar essas informações em algum lugar por exemplo o banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma mais fácil....

 

http://rafaelmarin.wordpress.com/2007/01/05/urls/

 

dá uma estudada em expressão regular antes, que vai te ajudar a entender esse artigo rs

 

Na verdade a parte da expressão regular já está pronta e funcionando,

 

eu estive olhando o site http://www.groupon.com.br que trabalha com url amigável

ele substitui qualquer espaço ou parentese por hífen de forma dinâmica como no endereço http://www.groupon.com.br/ofertas/sao-paulo---sul-e-oeste/1-ingresso-para-passar-o-dia--day-use--de-r-60-por-r-30-no-viva-parque/218425

 

minha dúvida é como ele sabe que sao-paulo é São Paulo por exemplo,

creio que a única alternativa seja BD mesmo, caso alguém saiba de algo sem BD me avise.

 

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, é isso mesmo, grava no BD, essa é a melhor alternativa. Você pode pensar em outras maneiras, mais porque não utilizar essa?

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô cara... você já tem as cidades no BD.

Basta fazer a comparação da URL com a cidade do BD, pois ambas estarão com a função que retira acentos, troca espaços, e tal, que citei lá em cima. Não há nenhuma necessidade de adicionar mais um campo no BD pra fazer isso.

 

É como comparar senhas que estão criptografadas (ex: com md5) em um sistema de login. Você não precisa fazer o processo inverso, somente comparar.

 

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô cara... você já tem as cidades no BD.

Basta fazer a comparação da URL com a cidade do BD, pois ambas estarão com a função que retira acentos, troca espaços, e tal, que citei lá em cima. Não há nenhuma necessidade de adicionar mais um campo no BD pra fazer isso.

 

É como comparar senhas que estão criptografadas (ex: com md5) em um sistema de login. Você não precisa fazer o processo inverso, somente comparar.

 

Entendeu?

 

Sim sua lógica está correta, porém o único problema é que eu tenho que passar absolutamente todas as cidades do banco para uma função que faz a conversão e a parti daí comparar cidade por cidade com a url atual. Para poucas cidades funciona tranquilamente, porém tenho 5507 cidades e além disso tem outros parâmentros que passo através da url de maneira amigável, que caso comparados um por um com os parâmetros passados por get gerariam uma lentidão enorme.

 

Creio realmente que a melhor maneira é registrar no BD e a partir daí só comparar via sql com a url atual.

 

Obrigado pela ajuda de vocês !

 

UMa dica.

 

Ao invés de utilizar -, use +.

 

Por exemplo você tem a cidade sao paulo

 

ficaria assim

 

www.site.com.br/cidade/sao+paulo

 

:thumbsup:

 

Eu realmente não sei por que utilizar "-", porém todos os sites que se utilizar de url amigável utilizam "-".

 

Obrigado !

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.