Ir para conteúdo

POWERED BY:

Arquivado

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

marcosfj1

[Resolvido] Erro na busca

Recommended Posts

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

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

 

 

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.