mbpp 2 Denunciar post Postado Outubro 25, 2014 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
Vinicius Rangel 208 Denunciar post Postado Outubro 26, 2014 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
Leonardo Leal 4 Denunciar post Postado Outubro 26, 2014 E é bom tratar o conteúdo oriundo de fora do sistema, isto é, não usar o $_GET diretamente em um SQL. Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Outubro 26, 2014 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
Leonardo Leal 4 Denunciar post Postado Outubro 27, 2014 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
mbpp 2 Denunciar post Postado Outubro 27, 2014 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