Ir para conteúdo

Arquivado

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

Cristian_

[Resolvido] Problema com LIKE

Recommended Posts

Boa tarde,

 

Amigos do fórum, estou com problema em um select utilizando LIKE

Eu tenho uma tabela onde pego o nome dos visitantes e gostaria de receber uma lista dos nomes referentes a busca. Por exemplo:

 

Busca: Dani

 

Resultados:

Daniela

Daniel

Danilo

Danieli

 

Estou fazendo pelo dreamweaver CS5 e usando o select abaixo:

 

$query_rsbusca = sprintf("SELECT * FROM visitantes WHERE visitantes.nomeVisitante LIKE '".$search."%'", GetSQLValueString($search_rsbusca, "text"));

 

Porém ao carregar a página dá esse erro:

 

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 'LIMIT 0, 10' at line 1

 

A versão do meu servidor mysql é a 5.1.

 

Olhei a documentação e pelo que entendi a utilização esta correta... pq dá erro então?

 

Desde já agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema assim:

 

$query_rsBusca = sprintf("SELECT * FROM visitantes WHERE visitantes.nomeVisitante LIKE %s ORDER BY nomeVisitante ASC", GetSQLValueString("%" . $colname_rsBusca . "%", "text"));

 

Mas agora estou enfrentando outro... Na página que estou desenvolvendo há um campo de busca onde eu quero buscar os dados dos visitantes por NOME ou RG. A consulta acima retorna os registros com base no nome digitado.

Estou tentando usar assim para funcionar pelo nome OU rg:

 

$query_rsBusca = sprintf("SELECT * FROM visitantes WHERE visitantes.nomeVisitante LIKE %s OR visitantes.rgVisitante LIKE %s ORDER BY nomeVisitante ASC", GetSQLValueString("%" . $colname_rsBusca . "%", "text"));

 

Mas não funciona... Alguem pode me ajudar na questão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente usar outra variavel p/ fazer a busca pelo rg; ex:

 

SELECT *
FROM TABELA
WHERE nome LIKE '%colname%' or rg like 'teste'
ORDER BY nome asc

tentei aqui e deu certo.. claro, você precisa relacionar essa outra variavel ao campo de busca do form, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fernando, entendi a logica da coisa mas quando tentei criar essa nova variável dentro do recordset e dá um erro dizendo que a variável não é valida.

Estou tentando criar exatamente igual a que já existe (colname).

 

O id do meu campo de busca é 'search' e tentei tambem fazer assim:

 

$rg = $_GET['search']

 

$query_rsBusca = sprintf("SELECT * FROM visitantes WHERE visitantes.nomeVisitante LIKE %s OR visitantes.rgVisitante LIKE "$rg" ORDER BY nomeVisitante ASC", GetSQLValueString("%" . $colname_rsBusca . "%", "text"));

 

 

Qnado você fez e deu certo foi tb pela janelinha do recorset no dreamweaver?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola..

Estou tentando criar exatamente igual a que já existe (colname).

veja bem, eu disse exatamente o contrário; eu criei mais uma variavel (sim, eu prefiro usar o recordset do dream).

mas vamos passo a passo:

1. abra o recordset no modo simple;

2. em filter configure o campo c/ o nome da coluna onde você guarda os nomes;

3. a direita selecione "contains";

4. abaixo: URL Parameter

5. à direita o nome da cx de busca no form

teste; se td ok (a busca pelo nome), acione o modo avançado (Advanced) p/ adcionar a busca tb p/ RG..

 

No quadro SQL já deverá estar configurada a instrução básica, algo como:

SELECT *
FROM TABELA
WHERE nome LIKE '%colname%'

e logo abaixo a configuração dessa variavel

(você verá 1 linha c/1 sinal de mais e 1 de menos; o "mais" adciona 1 nova variavel; o "menos" a apaga);

logo abaixo dessa linha, a 1ª variavel (colname) já deverá estar ok,

n precisa fazer nada;

no quadro SQL adicione o q eu pus acima:

 

or rg like 'teste'
ORDER BY nome asc

 

(atenção q PHP é case sensitive, verifique o nome da coluna se é maiusculo ou minusculo, ok?)

 

na linha q tem o + e o - clique no +;

surgirão 3 campos p/ você preencher;

no 1º digite o nome da 2ª variavel

(no exemplo q eu usei é "teste", sem aspas);

no campo do meio 1 operador - como está usando "like" use o % (porcentagem) e no 3º campo (run time value) copie a variavel sql igual à de cima

ex $_GET['campo do formulario']

(pode ser tb $_POST['campo do formulario'], depende, claro, do metodo do form);

mas é só copiar a que esta relacionada à variavel "colname".

 

tenta ai, n e mt complicado n..

amanha eu volto; qqer coisa disponha

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta isto aqui...

 

select visitantes.nomeVisitante from Visitantes where $busca = visitantes.nomeVisitante;

 

obs: no "$busca" vai a var que voce utilizou para pegar a string que o usuário digitou;

 

 

mas da próxima vez explica melhor a sua dúvida, não deu para entender muito bem o nome da tabela a var que voce está usando, e nem o nome dado para a coluna que você quer pegar.

 

Cristian, fui estudar o like novamente e faça o seguinte, veja se dá certo:

<?php

$search = $_POST['nome'];

 

$busca = mysql_query ("select * from Visitantes where nomeVisitantes like '%$search%'")

or die(mysql_error());

 

?>

<html>

<head>

</head>

<body>

 

<input type="text" name="nome" />

<input type="submit" name="buscar" value="buscar" />

 

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!

Fernando, segui exatamente o seu tutorial e deu certo, consegui o resultado que esperava!!! Obrigado pela paciência, me ajudou muito mesmo!

 

Obrigado também a BCunha pelo empenho em me ajudar! Graças a pessoas como vocês, nós iniciantes temos a oportunidade de um aprendizado melhor!

 

Abraço

 

Cristian

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, Cristian.. q bom q deu certo, mas a proposito, tb consegui fazer direto no código só c/ 1 variavel;

caso alguem se interesse pela solução sem o dreamweaver, segue abaixo o código

(mas aviso: está bem básico, sem proteções contra sql injection etc.):

 

<?php //AQUI A STRING DE CONEXÃO ?>

<?php
$nome=($_POST['cxbusca']);
$Recordset1=mysql_query("SELECT * FROM TABELA WHERE nome LIKE '%$nome%' or rg like '$nome' ORDER BY nome asc");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>busca imasters nome ou rg</title>
</head>
<body>
<p>busca imasters nome ou rg</p>
<form id="Pesquisa" name="Pesquisa" method="post" action="">
 <label>
 <input name="cxbusca" type="text" id="cxbusca" size="15" />
 </label>
 <input type="submit" name="Submit" value="Pesquisar" />
</form>
<br />
<table border="1">
 <tr>
   <td>id</td>
   <td>nome</td>
   <td>rg</td>
 </tr>
 <?php
if(!empty($nome))
do { ?>
   <tr>
     <td><?php echo $row_Recordset1['id']; ?></td>
     <td><?php echo $row_Recordset1['nome']; ?></td>
    <td><?php echo $row_Recordset1['rg']; ?></td>
   </tr>
   <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>

outro [ ] e sucesso

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.