Vinny 1 Denunciar mensagem Publicado 30 de Dezembro de 2012 Olá pessoal, mas uma vez uma duvida. xD Estou montando um site de classificados e todas as URLs são amigáveis (Friendly URLs). Porém ainda não consegui transformar as páginas dos anúncios em amigavel. Até o momento o URL é o seguinte: site.com/index.php?page=anuncio&id=17 Eu quero transformar isso em: site.com/anuncio-titulo-do-anuncio-postado Bem, estou com muita duvida em relação a isso, primeiramente qual a melhor forma da transformação? Primeiramente eu pensei em usar alguma função que capta o titulo do anúncio e substitui espaços e outros com "-", salvar o novo titulo substituido no banco de dados e depois fazer a consulta para retornar com o ID do registro e exibir acessando: site.com/anuncio-titulo-do-anuncio-postado Essa é a melhor forma? Qual função eu devo usar para criar o URL amigavel e salvar no banco de dados? Como devo fazer a exibição para que quando o visitante clicar em site.com/anuncio-titulo-do-anuncio-postado ele seja direcionado para a página do anúncio. Eu tentei fazer esse metodo mas não deu certo, então apaguei tudo e voltei com o site.com/index.php?page=anuncio&id=17. Alguma indicação neste caso? Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
brunoais 67 Denunciar mensagem Publicado 31 de Dezembro de 2012 Para esse caso aconselho-te a usar a mesma ideia que o IP.B usa. Usa um URL do tipo: site.com/idAnuncio-anuncio-titulo-do-anuncio-postado. Por exemplo: Para: site.com/index.php?page=anuncio&id=17 Fica: site.com/17-anuncio-titulo-do-anuncio-postado. Parece-te bem? (se sim, já te ajudo mais, se precisares) "[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
Vinny 1 Denunciar mensagem Publicado 31 de Dezembro de 2012 Parece bem melhor e ajuda a identificar o id do anuncio. Mais o problema é que eu não consigo fazer a exibição do anúncio acessanndo site.com/17-anuncio-titulo-do-anuncio-postado Apenas usando: site.com/index.php?page=anuncio&id=17 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
abolinhas 1 Denunciar mensagem Publicado 1 de Janeiro de 2013 (editado) Tenta colocar isto no teu .htaccess RewriteEngine On RewriteRule ^page-([^-]*)-([^-]*)$ /index.php?page=$1&id=$2 [L] url original http://site.com/index.php'>http://site.com/index.php?page=anuncio&id=17 url amigável http://site.com/page-anuncio-17.html Editado 1 de Janeiro de 2013 por abolinhas Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Vinny 1 Denunciar mensagem Publicado 1 de Janeiro de 2013 Olá abolinhas, Agradecido pela dica, mas o .htacees já está configurado. O que pretendo diferente do seu exemplo, é transformar isso: site.com/index.php?page=anuncio&id=17 Em: site.com/17-compro-playstation-3/ Nos meus testes eu ainda não adicionei o id do anuncio ao URL, porém eu consigo acessar: site.com/compro-playstation-3/ Contudo retornar em branco o conteúdo onde deveria aparecer as informações do anuncio. Eu acho que estou fazendo algo no codigo. Mas ainda tentando encontrar uma solução viavel. Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Vinny 1 Denunciar mensagem Publicado 2 de Janeiro de 2013 Consegui um avanço. Ao acessar: site.com/index.php?page=anuncio&url=compro-playstation-3 e depois tentar site.com/compro-playstation-3 recebo esse errp: Unknown column 'compro' in 'where clause' Não to conseguindo o codigo reconhecer o campo compro-playstation-3 do banco de dados, o que fazer? Meu codigo é o seguinte: <?php $url = $_GET['url']; //$id = $_GET['id']; $sql = "SELECT * FROM anuncios WHERE url = {$url}"; $query = mysql_query($sql, $conn) or die(mysql_error()); while ($array = mysql_fetch_assoc($query)) { if($array['vendido'] == 1){ echo '<div class="alert alert-error"> <h4 style="text-align:center;">Atenção!</h4> Desculpe, mas o anunciante deste item marcou o anúncio como finalizado. Você não poderá mais interagir neste anúncio. Faça uma busca ou crie um novo anúncio. </div>'; } echo ' <div> <div class="userphoto"> <span class="label label-success">ANUCIANTE</span><br /><br /> <a href="http://facebook.com/'.$array['facebook'].'/"><img class="img-polaroid alt="" src="http://graph.facebook.com/'.$array['facebook'].'/picture?type=large" /></a> <br /><strong>'.$array['name'].'</strong> <br /> '; if (false === $registerOrLoginNeeded) { if ($array['username'] === $_SESSION['username'] and $array['vendido'] == 0) { echo '<br /> <div class="btn-group"> <a class="btn btn-small" href="#"><i class="icon-user icon-black"></i> Ações</a> <a class="btn btn-small dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#"><i class="icon-pencil"></i> Atualizar</a></li> <li class="divider"></li> <li><a href="'.$excluir_anuncio.''.$array['id'].'"><i class="icon-trash"></i> Excluir</a></li> <li class="divider"></li> <li><a href="'.$vendido.''.$array['id'].'"><i class="icon-ban-circle"></i> Marcar como Vendido</a></li> </ul> </div>'; } } echo '</div> <h3><span class="label label-warning">'.$array['tipo'].'</span> '.$array['titulo'].'</h3>'; if($array['vendido'] == 0){ echo '<div class="pull-right clearfix" id="redes_sociais"> <a href="https://twitter.com/share" class="twitter-share-button" data-url="'.$ver_anuncio.''.$array['id'].'" data-text="'.$array['titulo'].'" data-lang="pt">Tweetar</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <br /> <div class="fb-like" data-href="'.$ver_anuncio.''.$array['id'].'" data-send="false" data-layout="button_count" data-width="150" data-show-faces="false" data-font="verdana"></div> </div>'; } echo ' <strong>Preço:</strong> R$ '.$array['preco'].' <br /> <strong>Categoria:</strong> '.$array['categoria'].' <br /> <strong>'.$array['data'].'</strong> <br /><br /> <p>'.nl2br($array['descricao']).'</p> '.$array['url'].' </div> <br /> '; if($array['vendido'] == 1){ echo '<div class="alert alert-error">Este anúncio já foi finalizado, você não pode enviar comentário.</div>'; } elseif ($registerOrLoginNeeded === true) { echo '<div class="alert alert-error">Você deve estar logado para poder enviar comentários neste anúncio.</div>'; } else { echo '<div class="fb-comments" data-href="'.$ver_anuncio.''.$array['id'].'" data-width="600" data-num-posts="5"></div>'; } } ?> Será que preciso mudar na estrutura da tabela para que reconheça todo o campo? Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1185 Denunciar mensagem Publicado 2 de Janeiro de 2013 $sql = "SELECT * FROM anuncios WHERE url = '{$url}'"; // <-------- string na comparação IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Vinny 1 Denunciar mensagem Publicado 2 de Janeiro de 2013 HappyHippyHippo, perfeito. Muitoooo obrigado. Ainda na questão das URLs, como faço para que o url retorne o ID do anuncio, exemplo: site.com/17-compro-playstation-3/ Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1185 Denunciar mensagem Publicado 2 de Janeiro de 2013 site.com/17-compro-playstation-3/ \/ \----/ \-----------/ ID PAGE URL RewriteEngine On RewriteRule ^([^-]*)-([^-]*)-([^-]*)$ /index.php?id=$1&page=$2&url=$3 [L] IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
Vinny 1 Denunciar mensagem Publicado 2 de Janeiro de 2013 Obrigado mas resolvi deixar como: site.com/anuncio/compro-playstation-3/ Quem sabe eu mude de ideia e coloco o id num futuro. Deixo meu agradecimento para HappyHippyHippo, abolinhas e brunoais pelas respostas e por me ajudar a resolver este problema. Isto que estava bloqueado os recursos do site, agora o que me resta é finalizar os detalhes. Muito obrigado. Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites