marcosfj1 0 Denunciar post Postado Janeiro 4, 2011 Seguinte galera nao to conseguindo fazer esta busca funcionar, vou postar meu codigo e o erro que esta dando para ver se alguem pode me ajudar Primeiro, é uma busca onde há o espaço para digitar e o campo que o usuario quer buscar, podendo ser NOME, EMAIL, DT.PEDIDOentao temos assim: <td><strong>Buscar:</strong></td> <td width="219" align="center"><input name="pesquisa_valor" id="pesquisa_valor" type="text" value="<?=$_POST['pesquisa_valor'] ?>" /></td> <td width="53"><strong>Campo:</strong></td> <td width="85"><? // $titulo = array('Nome', 'Email', 'Dt. Ultimo Pedido'); $valor = array('IFNULL(C.nome, C.razao_social)', 'C.email', 'P.dt_pedido'); // echo '<select name="pesquisa_campo" id="pesquisa_campo">'; echo '<option value="" selected="selected">-</option>'; // for ($i=0; $i<sizeof($valor); $i++) { // $selected = ''; if ($valor[$i] == $_POST['pesquisa_campo']) $selected = 'selected="selected"'; // echo '<option value="'.$valor[$i].'" '.$selected.'>'.$titulo[$i].'</option>'; } // echo '</select>'; ?></td> Bom ai entao ele digita o que quer e seleciona o campo que deseja fazer a busca...que será buscado em uma tabela logo abaixo que é trazida do banco de dados...basta entao ele clicar no botao buscar: <td><input name="pesquisar" type="submit" value="Pesquisar" /></td></td> Bom entao eu trato a busca da seguinte maneira para verificar se tem algo no campo dde digitar e na escolha do que buscar: if ($_POST['pesquisa_campo']) $f_pesquisa_campo = " AND {$_POST['pesquisa_campo']} LIKE '%{$_POST['pesquisa_valor']}%'"; Esta variavel $f_pesquisa_campo depois eu chamo ela la na minha consulta SQL, que esta correta e funcionando. Bom isso é meu codigo, e este é o erro q esta dando quando mando buscar algo: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND C.email LIKE '%noronco@gmail.com%'' at line 9 No caso eu busquei o campo email, com o seguinte email noronco@gmail.com Alguem saberia me ajudar? PS: Lembrando que esta tudo dentro de um formulario: <form action="<? $PHP_SELF ?>" method="post" enctype="multipart/form-data" name="form1" id="grid" > Valeu Compartilhar este post Link para o post Compartilhar em outros sites
Go Back 0 Denunciar post Postado Janeiro 4, 2011 $f_pesquisa_campo = " AND {$_POST[pesquisa_campo]} LIKE '%{$_POST[pesquisa_valor]}%'"; Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Janeiro 4, 2011 Pelo que deu pra perceber, você está concatenando a string de consulta a partir de um condicional ativado pelo usuário, no caso, um campo de busca preenchido ou não. Porém, para concatenar uma string, você deve fazer como qualquer outro tipo de valor para uma determinada variável. Você está fazendo isso: $f_pesquisa_campo = " AND {$_POST['pesquisa_campo']} LIKE '%{$_POST['pesquisa_valor']}%'"; Sua variável já começa no meio da consulta. Deve fazer isso para funcionar: $f_pesquisa_campo .= " AND {$_POST['pesquisa_campo']} LIKE '%{$_POST['pesquisa_valor']}%'"; O (.) representa a concatenação de uma string a outra. Neste caso, representa o mesmo que: $f_pesquisa_campo = $f_pesquisa_campo . " AND ..." Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Janeiro 4, 2011 Deve fazer isso para funcionar: $f_pesquisa_campo .= " AND {$_POST['pesquisa_campo']} LIKE '%{$_POST['pesquisa_valor']}%'"; O (.) representa a concatenação de uma string a outra. Neste caso, representa o mesmo que: $f_pesquisa_campo = $f_pesquisa_campo . " AND ..." Cara tentei aqui sua dica mas deu o mesmo erro....acho q nao é isso nao Obrigado pela dica Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Janeiro 4, 2011 Onde está o início da sua consulta SQL? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Janeiro 4, 2011 Onde está o início da sua consulta SQL? A consulta seria esta $sql="SELECT busco os campos que vou trabalhar FROM tabela GROUP BY agrupo um campo $f_pesquisa_campo"; Como ve no final dela eu chamo a variavel que recebe a busca Compartilhar este post Link para o post Compartilhar em outros sites
Daniel Ribeiro 4 Denunciar post Postado Janeiro 4, 2011 Então eu acertei no problema. Sua consulta está ficando assim: "SELECT busco os campos que vou trabalhar FROM tabela GROUP BY agrupo um campo AND {$_POST['pesquisa_campo']} LIKE '%{$_POST['pesquisa_valor']}%" Certo? OBS: Sugiro que escreva a sua consulta da maneira como ela deverá ficar para a filtragem dos dados. Assim fica mais fácil lidar com o problema. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Janeiro 4, 2011 Puts cara resolvi aqui, olha que coisa ridicula Na minha condicao SQL eu chamava uma variavel de ordenaçao depois chamava a de busca, ai foi só inverter primeiro a de busca e depois a de ordenação hehe Valeu a ajuda Compartilhar este post Link para o post Compartilhar em outros sites