Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

url amigável

Recommended Posts

Bom dia,

 

Estou desenvolvendo um sistema de pesquisa pelo método get. Passo 4 parâmetros pela pesquisa.

Para montar a url amigável, uso .htaccess. Para fazer a url amigável da pesquisa, faço da seguinte forma (sem pesquisa por get):

RewriteRule ^resultado/([0-9-]+)/([a-z0-9-]+)/?$ paginas/resultado.php?pag=$1&p=$2 [NC,L]

Gostaria de saber se tem alguma forma de fazer com que a pesquisa saia do formulário com url amigável, atualmente está retornando desta forma: http://localhost/102/resultado/?pesquisar_empresa=Pesquisar+empresas&ramo_pesquisa=&estado_pesquisa=09&cidade_pesquisa=2272

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ha duas formas de se fazer isso!

 

Javascript e php

 

Segue a lógica

 

php ao enviar o form redireciona como url amigável

if(isset($_GET['search_1'], $_GET['search_2'])) {
    header(sprintf("Location: /address/%s/%s.html", $_GET['search_1'], $_GET['search_2']));
    die;
}

exemplo em javascript

$(document).ready(function() {
    $('.search-form').submit(function() {

        var value = $('.search-form input:text').val();
        value = value = value.replace(/\W/,''); // replace
        window.location.href = value + "-keyword" + ".html";
     return false;
    });
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Williams,

 

Não consegui alterar os espaços em branco nas palavras digitadas no campo text, exemplo:

Digitou: valor para pesquisar
Retornar: valor+para+pesquisar

Está retornando: valor+para pesquisar

 

Como inserir o + em todos espaços em branco na frase digitada?

jQuery('#pesquisar').submit(function() {
    var empresa = jQuery('#pesquisar_empresa').val().replace(' ','+');
    var segmento = jQuery('#ramo_pesquisa').val();
    var estado = jQuery('#estado_pesquisa').val();
    var cidade = jQuery('#cidade_pesquisa').val();
    window.location.href = empresa + "/" + segmento + "/" + estado + "/" + cidade + "/";
 return false;
});

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma olhada aqui e aqui

 

eu uso URLify

 

Exemplo para slugs

if ($('.urlify').length) {
        $('.urlify').keyup(function() {
            var slug = URLify($(this).val());
            var update = ($('.urlify').attr('rel') || '').split(',');
            for (var item in update) {
                var obj = $(update[item]);
                if (obj.is('input')) {
                    obj.val(slug);
                } else {
                    obj.text(slug);
                }
            }
        });
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar replace pare remover o + ou até mesmo substituir por outro caractere

 valor = valor.replace('+', '');

e ainda da para filtrar e validar os dados com regex

 valor = valor.replace(/[^a-zA-Z_0-9-]/g, '');

Edit:

 

Para funcionar os sinais + - ou _

 

teria que que alterar a regex na RewriteRule

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enquanto eu editava sobre o .htaccess você também estava respondendo.

 

Que bom que resolveu!

 

Sucesso! :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Williams,

 

Reparei aqui que só entra no .submit se preencher todos os campos. Como faço para não ter essa obrigatoriedade? Ao invés de entrar no .submit usa o action do form. Testei com um alert dentro desta função.

jQuery('#pesquisar').submit(function() {
    var empresa = formata_url(jQuery('#pesquisar_empresa').val());
    var segmento = (jQuery('#ramo_pesquisa').val() === '') ? '0' : jQuery('#ramo_pesquisa').val();
    var estado = (jQuery('#estado_pesquisa').val() === '') ? '0' : jQuery('#estado_pesquisa').val();
    var cidade = jQuery('#cidade_pesquisa').val();
    location.href = "<?php echo URL; ?>resultado/" + empresa + "/" + segmento + "/" + estado + "/" + cidade + "/";
    return false;
});

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou com click?



Faz uns teste com if else neste code acima!



$('#button').click(function() {

....


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo joga nas var primeiro depois faça validações, da forma como você esta fazendo eu desconheço.

$(document).ready(function() {

	$('#pesquisar').submit(function(e) {

		// verificação de erro foi realizada
		e.preventDefault();

		var pesquisar = $('#pesquisar_empresa').val();
		var ramo      = $('#ramo_pesquisa').val();
		var estado    = $('#estado_pesquisa').val();
		var cidade    = $('#cidade_pesquisa').val();
		
		if( pesquisar == '' ){
		    pesquisar = false;
		}
		
		//Restante da validações
		
	}

});	

Monte o redirect quando a variáveis retornar true.

 

Se tiver dificuldade posso mover para o fórum de Javascript, só avisar!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

:huh: Isso é estranho!

 

Abre um novo tópico na área de Javascript, JS não é muito a minha praia, faço somente coisas básicas para hobby e só em Jquery por sinal.

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.