Ir para conteúdo

POWERED BY:

Arquivado

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

hargon

[Resolvido] Fazer busca pela letra inicial

Recommended Posts

Não salvou conteúdo do post, mas pelo título imagino que o que você quer seja:

SELECT nmcampo FROM tabela WHERE nmcampo LIKE '"& letra & "%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz !!! O que houve com o conteudo. sumiu ???!!!!

 

Bom, Hargon você ja deu um ideia do select usando like, beleza...mas tem um problema. O sistema de busca por letra é igual a este site

 

http://www.letrasdasmusicas.com.br/search.php

 

Clico na letra A, ele filtra resultados como que começam com a letra A. Para ficar mais claro a ideia de como fazer:

 

- Na primeira pagina fica todo o alfabeto a b c d e f g h i j k l m n o p q r s t u v w x y z 0-9, ok. Mas como faço para criar os os links de cada letra e como direciona para pagina de resultados.

 

Os links ficaram tipo assim: search?letra=A??? Pode parecer que estou pedindo um cod pronto, mas se me mostrarem o caminho como deve ser feito, ja esta de bom tamanho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz !!! O que houve com o conteudo. sumiu ???!!!!

 

Bom, Hargon você ja deu um ideia do select usando like, beleza...mas tem um problema. O sistema de busca por letra é igual a este site

 

http://www.letrasdasmusicas.com.br/search.php

 

Clico na letra A, ele filtra resultados como que começam com a letra A. Para ficar mais claro a ideia de como fazer:

 

- Na primeira pagina fica todo o alfabeto a b c d e f g h i j k l m n o p q r s t u v w x y z 0-9, ok. Mas como faço para criar os os links de cada letra e como direciona para pagina de resultados.

 

Os links ficaram tipo assim: search?letra=A??? Pode parecer que estou pedindo um cod pronto, mas se me mostrarem o caminho como deve ser feito, ja esta de bom tamanho.

Pode parecer que não, mas o hargon já deu a resposta ... quem sabe trocar "& letra &" por "& Request.QueryString("letra") &" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para buscar por ex. a letra A

SELECT cod, nome FROM assine WHERE nome LIKE 'A%' ORDER BY nome ASC

Lembrando que você pode trocra pela variavel que recebe o valor da busca

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ???? Se for como faço ???? A minha select que utilizo é assim:

 

<%
PagAtual = Request.QueryString("PagAtual")

Set Conn= server.createobject("adodb.connection")
DSNtest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("db/filmes.mdb")
Conn.Open DSNtest


Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM fotos WHERE idcat=" & idcat & " ORDER BY id desc"
RS.Open SQL, conn, 3

If RS.EOF Then
Response.Redirect ("nenhumregistro.asp")
end if


Const NumPorPage = 9

   Dim PagAtual

   IF Request.QueryString("PagAtual") = "" Then
			   PagAtual = 1 
		 Else
				PagAtual = Request.QueryString("PagAtual")
   End If

   RS.CacheSize = NumPorPage

   
	RS.MoveFirst				
	RS.PageSize = NumPorPage	

	Dim TotalPages			  
	TotalPages = RS.PageCount

	RS.AbsolutePage = PagAtual  

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ? Se for como faço ? Ou usaria o OR ? A select ficaria assim:

 

sql = "[code]SELECT FROM filmes WHERE nome LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%' e assim por diante ORDER BY nome ASC"

 

Não tem necessidade de fazer um select tão grande. Faça assim:

 

Na letra a coloque o link "search?letra=a", na b coloque o link "search?letra=b" e assim por diante.

No código ASP voce coloca o Request.QueryString("letra") e o select ficará assim:

 

"

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' ORDER BY nome ASC"

 

Pronto. Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ? Se for como faço ? Ou usaria o OR ? A select ficaria assim:

 

sql = "[code]SELECT FROM filmes WHERE nome LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%' e assim por diante ORDER BY nome ASC"

 

Não tem necessidade de fazer um select tão grande. Faça assim:

 

Na letra a coloque o link "search?letra=a", na b coloque o link "search?letra=b" e assim por diante.

No código ASP voce coloca o Request.QueryString("letra") e o select ficará assim:

 

"

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' ORDER BY nome ASC"

 

Pronto. Entendeu?

 

 

Agora sim.... deu pra entender !!!!! Vou testar o cod, não fechem o topico ainda. Vou dar retorno pra ver se deu certo !!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso já foi discutido no fórum

 

é tipo isso

 

select Nome from filmes Where Left(Nome, 1) = '"&Request.QueryString("letra")&"'

 

com base na query do Rodrigo Loures

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bleza ....

 

Mas, eu teria que criar um select pra cada letra, é isso ? Se for como faço ? Ou usaria o OR ? A select ficaria assim:

 

sql = "[code]SELECT FROM filmes WHERE nome LIKE 'A%' OR LIKE 'B%' OR LIKE 'C%' e assim por diante ORDER BY nome ASC"

 

Não tem necessidade de fazer um select tão grande. Faça assim:

 

Na letra a coloque o link "search?letra=a", na b coloque o link "search?letra=b" e assim por diante.

No código ASP voce coloca o Request.QueryString("letra") e o select ficará assim:

 

"

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' ORDER BY nome ASC"

 

Pronto. Entendeu?

 

Bah... ta quase pronto, ele acha os resultados certinho !!!! Porem um erro persiste, nao consigo visualiza os resultados.

 

ADODB.Recordset error '800a0cc1' 

Item cannot be found in the collection corresponding to the requested name or ordinal.

Muito esquisito isso, a linha que ele acusa é essa:

 

<td valign="top" width="80"><a href="ver_filme.asp?idcat=<%=RS("idcat")%>&idfoto=<%=RS("id")%>"><img 
border="0" src="<%=rs("thumb")%>"></a></td>

Mas eu declarei a querystring da idcat,... o que pode ser ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

do jeito que você está buscando vai pegar todos que tem a letra A ou B, o que você deve querer foi o que passei ele lista doso os filmes que COMEÇEM e não que TEM NO MEIO a letra A ou B...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que passei no primeiro post funciona perfeitamente... basta fazer a adaptação que o nagaozen disse, pois quando postei não tinha referência exata do que se tratava e apenas exemplifiquei a consulta.

 

Poste como sua consulta está agora, pois o erro gerado diz que você está tentando utilizar um campo que não foi informado na consulta SQL. Se você tiver apenas copiado algum dos exemplos, sem alterar, pode ser o motivo do erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo... Como você disse hargon, o erro era que faltava um campo que nao foi informado na sql. Esta praticamente pronto. Só que ele filtra todos os cadastros daquela tabela. Mas, eu não sei se tem como fazer, mas eu queria que ele filtrasse por categoria.

 

Por exemplo, existem varias categorias, clico em uma categoria, ele me informa todos os cadastros daquela categoria, certo. Eu quero que esse filtro de letra seja apenas na categoria que estou. Não sei se fui muito claro. Mas, isso teria que utilizar duas where ou dois sets ????

 

A where que utilizo pra pegar todos os cadastros da categoria corresponte:

 

WHERE idcat=" & idcat & "

Tem como fazer isso ?????

 

Lembrando que o sistema que 100%, só falta esse detalhe !!!!!

 

E mais uma coisa, e pra buscar os que começam com numeros ??????

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

 

SELECT FROM filmes WHERE nome LIKE '"&letra&"%' WHERE idcat=" & idcat & " ORDER BY nome ASC"

lembrando que seu campo idcat esta como numérico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrigindo a sugestão do xan...

"SELECT FROM filmes WHERE nome LIKE '" & letra & "%' AND idcat=" & idcat & " ORDER BY nome ASC"

 

O segundo WHERE foi substituído por AND.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei os dois, porem deu o mesmo erro nos dois:

 

Microsoft JET Database Engine error '80040e14'

The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.

Compartilhar este post


Link para o post
Compartilhar em outros sites

imprime na tela esta instruçao

 

nao fez snetido este erro ainda

 

ted encontrou o provavel erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a mesma coisa... isso é regra de SQL. Apenas informe em letra o valor 0.

 

% após a palavra, retorna registros que iniciam com a palavra buscada.

'" & letra & "%'

 

% antes da palavra, retorna registros que terminam com a palavra buscada.

'%" & letra & "'

 

% no inicio e no fim da palavra, retorna registros que possuem no meio a palavra buscada.

'%" & letra & "%'

 

No seu caso, você está buscando por um caracter, mas se informasse uma palavra inteira ou uma frase também funcionaria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a mesma coisa... isso é regra de SQL. Apenas informe em letra o valor 0.

 

% após a palavra, retorna registros que iniciam com a palavra buscada.

'" & letra & "%'

 

% antes da palavra, retorna registros que terminam com a palavra buscada.

'%" & letra & "'

 

% no inicio e no fim da palavra, retorna registros que possuem no meio a palavra buscada.

'%" & letra & "%'

 

No seu caso, você está buscando por um caracter, mas se informasse uma palavra inteira ou uma frase também funcionaria.

 

Bah !!! Hargon, desculpa a minha ignorancia... em relação a %, deu pra entender o fundamento de cada um. O problema foi essa

 

É a mesma coisa... isso é regra de SQL. Apenas informe em letra o valor 0.
No seu caso, você está buscando por um caracter, mas se informasse uma palavra inteira ou uma frase também funcionaria.

Não sei como aplicar na sql.

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.