Ir para conteúdo

POWERED BY:

Arquivado

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

alysson122010

url amigavel

Recommended Posts

Pessoal to fazendo uma url amigavel que pega o titulo que eu coloco.

Nos links que eu listo eu coloquei assim

<?php
$variavel = $semana['titulo'];
$variavel_limpa = strtolower( ereg_replace("[^a-zA-Z0-9-]", "-", strtr(utf8_decode(trim($variavel)), utf8_decode("áàãâéêíóôõúüñçÁÀÃÂÉÊÍÓÔÕÚÜÑÇ"),"aaaaeeiooouuncAAAAEEIOOOUUNC-")) );
echo $variavel_limpa; // ceu-azul
?>
pra onde tiver espaço e acentos e taus no titulo ele substituir por hifen e ficar sem acento as letras.
ate ai tudo bem.
mais na hora que é pra mostrar aqui
<?php
$pag = (isset($_GET['pag'])) ? strip_tags((int)$_GET['pag']) : '1';
$url = $_GET['titulo'];
$seleciona_posts = mysql_query("SELECT * FROM postagens WHERE titulo = '$url'");
if(mysql_num_rows($seleciona_posts) == 0){
echo 'Não foram post no banco de dados!';
}else{
while($posts = mysql_fetch_array($seleciona_posts)){
$id = $posts['id'];
?>
ele nao reconhece a nova url que .htaccess
que coloquei assim RewriteRule ^(.*).html$ ver.php?titulo=$1
mais so que quando entro com a url nova por exemplo
download-filmes.html
ele não mostra porque la no banco de dados o titulo ta sem hifen e ta com acentos
como faço para ele reconhecer?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça uma função inversa, que coloque os acentos na variável $_GET['titulo'] antes da consulta sql. O melhor mesmo seria consultar o id e não o titulo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí você pode criar uma coluna em seu banco chamada url e salva o titulo formatado

 

titulo : Meu título é esse

url : meu-titulo-e-esse

 

e faz a validação pelo campo URL

 

Eu faço dessa maneira e funciona bem... aí eu comparo o campo URL com o que vem da url mesmo, se é igual, traz o conteúdo, desta maneira, não zica.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo @Maykel-ctba, passando uma url não existente no banco de dados, chama a 404

 

@allsson122010 essa function EREG_REPLACE já está DEPRECATED, se não me engano a partir da versão 5.3 do php no lugar dela pode se usar a PREG_MATCH

 

Você poderia criar uma função para fazer isso e assim diminuir as linhas de código do seu projeto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw :)



agora me responde uma coisa.

 

como posso fazer pra tipo eu ter um campo input text chamado que é titulo e outro input text url pra oque eu escrever em titulo no url ele mostrar so que ja com a arrumação como mostrei acima como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais como posso fazer em jquery o java script

 

tipo escrever em um input e já aparecer em outro já arrumado tipo automatico exemplo

 

Download games grátis

 

ai no outro ja aparece automatico

 

download-games-gratis

 

para que quando for cadastrar no banco cadastra a 2 opção que é a arrumadinha como faço isso em java script?



?

Compartilhar este post


Link para o post
Compartilhar em outros sites

JavaScript é client-side, portanto pode ser manipulado pelo usuário e isso pode trazer um problema de segurança. Se eu entendi, você quer que após o título seja digitado apareça um slug editável, isso você faz da mesma forma.. só que não se esqueça de manter a lógica de validação no server-side.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem código tenho o problema é que quero que eu faça um insert que tenha o campo titulo e o campo slug só que quero que o slug pegue o titulo normal e deixe no padrão de url amigável automático mais não sei nem por onde começar.

 

como posso fazer isso :( ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
function urlizer($string){
		
		$acentos = array(
			'A' => '/À|Á|Â|Ã|Ä|Å/',
			'a' => '/à|á|â|ã|ä|å/',
			'C' => '/Ç/',
			'c' => '/ç/',
			'E' => '/È|É|Ê|Ë/',
			'e' => '/è|é|ê|ë/',
			'I' => '/Ì|Í|Î|Ï/',
			'i' => '/ì|í|î|ï/',
			'N' => '/Ñ/',
			'n' => '/ñ/',
			'O' => '/Ò|Ó|Ô|Õ|Ö/',
			'o' => '/ò|ó|ô|õ|ö/',
			'U' => '/Ù|Ú|Û|Ü/',
			'u' => '/ù|ú|û|ü/',
			'Y' => '/Ý/',
			'y' => '/ý|ÿ/',
			'a.' => '/ª/',
			'o.' => '/º/'
		);
		
		$limpa = preg_replace($acentos, array_keys($acentos), htmlentities($string, ENT_NOQUOTES, "UTF-8"));
		
		$arraySimbolos = array("'",":","\"","/","”","“",",","!","@","#","$","%","¨","&","*","(",")",";","<",">","?","|","º","+","-",".");
		for($i = 0; $i < count($arraySimbolos); $i++){
			$limpa = str_replace($arraySimbolos[$i],"",$limpa);
		}
		
		$limpa = strtolower($limpa);
		
		$limpa = str_replace("--","-",$limpa);
		$limpa = str_replace("---","-",$limpa);
		$limpa = str_replace("----","-",$limpa);
		$limpa = str_replace("-----","-",$limpa);
		$limpa = str_replace("------","-",$limpa);
		$limpa = str_replace("  "," ",$limpa);
		$limpa = str_replace("   "," ",$limpa);
		$limpa = str_replace("    "," ",$limpa);
		$limpa = str_replace("     "," ",$limpa);
		
		$limpa = str_replace(" ", "-", $limpa);
		
		return $limpa;
	}

 

Pra usar:

 

$string = "Título da página";
echo urlizer($string); // * retornará "titulo-da-pagina"

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara cria uma coluna na base de dados chamada "alias" e quando for cadastrar um post você usa o método que criou para retirar acentos e colocar hifens e insere io titulo neste campo para utilizar a url amigavel (o joomla trabalha assim) ai quando for buscar o post você recupera ele pelo alias, se quiser deixar um pouco melhor recupera o id da ultima postagem e insere no final do alias para poder consultar pelo id do post também.

O amigo Rogério também sugeriu esta forma e acredito que a maioria dos desenvolvedores trabalham assim, que por ventura se você precisasse fazer a operação inversa para acentuar você teria que ter um script ou uma tabela com todas as palavras do dicionario para saber qual tem acento (meio complexo né), mas faça como eu estou te sugerindo e como o amigo Rogério sugeriu que você passa de ano.

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.