Cristian_ 0 Denunciar post Postado Outubro 18, 2011 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
Cristian_ 0 Denunciar post Postado Outubro 20, 2011 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
Fernando C 128 Denunciar post Postado Outubro 20, 2011 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
Cristian_ 0 Denunciar post Postado Outubro 20, 2011 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
Fernando C 128 Denunciar post Postado Outubro 20, 2011 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
BCunha 0 Denunciar post Postado Outubro 25, 2011 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
Cristian_ 0 Denunciar post Postado Outubro 25, 2011 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
Fernando C 128 Denunciar post Postado Outubro 27, 2011 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