Ir para conteúdo

Arquivado

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

mbpp

Pesquisa Avançada problemas

Recommended Posts

Oi tudo bem? Tou com um problema bem estranho no meu script, por alguma razão ele não funciona direito, e o mais estranho é que ele se comporta de forma estranha.

 

Por exemplo na pesquisa da query formato e categoria, os primeiros dois funcionam bem, só o ultimo elseif não funciona correctamente, e o mais estranho é que se for trocar a posição do ultimo elseif com o penultimo o ultimo elseif fica funcionando e o último deixa de funcionar, não entendo a razão, deixo abaixo o codigo:

if (isset($_REQUEST['pesquisar'])) {
				
					
					if ($_GET['pesquisa-livre']){
					$pesquisalivre = $_GET['pesquisa-livre'];
					$sql= "SELECT * FROM produtos WHERE nome_produto LIKE '%$pesquisalivre%' AND ativo = '1'";
					}
					elseif ($_GET['formato']){
					$formato = $_GET['formato'];
					$sql= "SELECT * FROM produtos WHERE fk_formato = '$formato' AND ativo = '1'";
					}
					elseif ($_GET['categoria']){
					$categoria = $_GET['categoria'];
					$sql= "SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND ativo = '1'";
					}
					else{
						$sql= "SELECT * FROM produtos WHERE  ativo = '1'";
						}

....

Pois acho que já sei o problema, ou melhor, eu sei o problema, estou fazendo uma querry para com as tagas do get Indicada, mas o problema é que no url o formulário me vai por os outros nomes do resto das inputs, alguem sabe como impedir isso? So por no url o nome dos inputs que pesquiso, ou não posso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o certo é ter um sql só e as CONDIÇÕES serem montadas dinamicamente.

$where = 'WHERE';
if($_GET['a']) {
$where .= ' a = '.$_GET['a'].' and';
}else if($_GET['b']){
$where = ' b = '.$_GET['b'].' and'; 
}
if($where != 'WHERE'){
$where = substr($where,0,3);
}else{
$where = '';
}

$sql = 'SELECT * FROM produtos '.$where;

do jeito que você escreveu seria algo assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

as soluções fornecidas continuams em ter uma solução, so me indicaram outras formas de o fazer,mas agradeço na mesma...

Compartilhar este post


Link para o post
Compartilhar em outros sites

talvez o que precise seja verificar se não esta vazia, ex:

...
if (isset($_GET['pesquisa-livre']) && ! empty($_GET['pesquisa-livre'])) {
	$pesquisalivre = $_GET['pesquisa-livre'];
	$sql= "SELECT * FROM produtos WHERE nome_produto LIKE '%$pesquisalivre%' AND ativo = '1'";

} elseif (isset($_GET['formato']) && ! empty($_GET['formato'])) {
	$formato = $_GET['formato'];
	$sql= "SELECT * FROM produtos WHERE fk_formato = '$formato' AND ativo = '1'";

} elseif (isset($_GET['categoria']) && ! empty($_GET['categoria'])) {
	$categoria = $_GET['categoria'];
	$sql= "SELECT * FROM produtos WHERE fk_categoria = '$categoria' AND ativo = '1'";

} else {
	$sql= "SELECT * FROM produtos WHERE  ativo = '1'";
}
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o meu problema de forma mais organizada e clean usando javascript, para não criar aqueles problemas em relação ao get to url pus o seguinte codigo javascript:

/* Campos existentes no Formulário:
- formato;
- categoria;
- pesquisa livre;


MauroBonucci
*/

$( "select" )
.change(function () {
var formato = $("#formato").val();
var categoria = $("#categoria").val();
var pesquisaLivre = $("#pesquisa-livre").val();

if (formato !== "ALL"){
	$( "#formato" ).attr({
	name: "formato"
	});
}else{
	$( "#formato" ).removeAttr("name");
	}
	
	
if (categoria !== "ALL"){
	$( "#categoria" ).attr({
	name: "categoria"
	});
}else{
	$( "#categoria" ).removeAttr("name");
	}
	
	})
    .change();
  
 
$('input').blur(function(){

if($(this).val().length > 0){
$( "#pesquisa-livre" ).attr({
	name: "pesquisa-livre"
	});
}else{
	
	$( "#pesquisa-livre" ).removeAttr("name");
	
	}});

E depois foi só criar as querys para os if statements para cada caso. Creio fique melhor assim.

 

Obrigado na mesma Leonardo.

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.