Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ativar e desativar letra inicial


Loko da Web

Pergunta

Boa noite !

Desenvolvi um script pra busca por letra inicial, dessa maneira:

A B C D E F G H I J K L M N O P Q R S T U V X Z #

O sistema funciona 100%, agora eu preciso de ajuda para quando não houver um nome que comece, por exemplo com a letra A, a letra fique inativa, e quando houver um nome que comece com letra B, o link fica ativo. Um exemplo dessa aplicação pode ser conferida neste site:

http://www.locahouse.com.br/v2/categoria.asp?ID=1

O usuario clica no link mais alugados, apresenta a pagina correspondente, e na busca por letra algumas estao inativas, devido não ter registros que comecem com a letra.

Tentei usar uma logica, usando IF e ELSE, o porem é que funciona apenas após o ELSE...

<%
if rs("nome") = "" then       
Response.Write("<div class='pag-link2'>")       
Response.Write("X")       
Response.Write("</div>  ") 
else       
Response.Write("<div class='pag-link2'>")       
Response.Write("<a href='buscar_letra_resultado_status.asp?letra=X&idstatus=" & idstatus & "'>")       
Response.Write("X")       
Response.Write("</a></div>  ") 
end if
%>
ou
if isnull(rs("nome")) then
Response.Write("<div class='pag-link2'>")       
Response.Write("X")       
Response.Write("</div>  ") 
else       
Response.Write("<div class='pag-link2'>")       
Response.Write("<a href='buscar_letra_resultado_status.asp?letra=X&idstatus=" & idstatus & "'>")       
Response.Write("X")       
Response.Write("</a></div>  ") 
end if

Dai eu colocaria um if pra cada letra do alfabeto,...

No IF apresenta o link inativo, no ELSE apresenta o link ativo,...mas só funciona o links ativos, mesmo quando não há registros correspondente a letra, inverti as ordem e deu a mesma coisa. Ou seja, o link ativo no if e link inativo no ELSE, o link ficava inativo mesmo que havia registro correspondente a letra.

E ai galera como pode ser feita ??? Existe um solução ????

Agradeço a ajuda de todos !!!!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Eu faria outra lógica... por exemplo:

Faça uma consulta geral ao bd identificando nessa coluna especificaas letras iniciais de todas as palavras, depois cria uma única função para as letras inexistentes fdazendo com que simplesmente o link não seja montado...

Formataria em css as cores dos links e as cores dos textos normais... e pronto!

o que acha?

Link para o comentário
Compartilhar em outros sites

  • 0
Eu faria outra lógica... por exemplo:

Faça uma consulta geral ao bd identificando nessa coluna especificaas letras iniciais de todas as palavras, depois cria uma única função para as letras inexistentes fdazendo com que simplesmente o link não seja montado...

Formataria em css as cores dos links e as cores dos textos normais... e pronto!

o que acha?

Teria um exemplo pra aplicar ????? Achei interessante, se mostrar o caminho do paraiso, agradeço !!!!!!! :rolleyes:

Link para o comentário
Compartilhar em outros sites

  • 0
poste aqui o codigo em que você faz a busca de acordo com a letra inicial que eu esboço alguma coisa pra você!

A parte em que você recebe a letra escolhida, e busca no banco as palavras onde ocorrem essa letra inicial...

[]'s

Ok... é o seguinte, essa busca estou utilizando num sistema de videolocadora. Tenho um pagina que lista todos os filmes de um determinado genero, chamado todos_filmes.asp, nessa pagina coloquei esse cod (pra fazer a busca):

<table align="center" border="0" cellpadding="0" cellspacing="0" width="575">
<tr>
<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=A&idcat=<%=RS("idcat")%>">A</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=B&idcat=<%=RS("idcat")%>">B</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=C&idcat=<%=RS("idcat")%>">C</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=D&idcat=<%=RS("idcat")%>">D</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=E&idcat=<%=RS("idcat")%>">E</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=F&idcat=<%=RS("idcat")%>">F</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=G&idcat=<%=RS("idcat")%>">G</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=H&idcat=<%=RS("idcat")%>">H</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=I&idcat=<%=RS("idcat")%>">I</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=J&idcat=<%=RS("idcat")%>">J</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=K&idcat=<%=RS("idcat")%>">K</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=L&idcat=<%=RS("idcat")%>">L</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=M&idcat=<%=RS("idcat")%>">M</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=N&idcat=<%=RS("idcat")%>">N</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=O&idcat=<%=RS("idcat")%>">O</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=P&idcat=<%=RS("idcat")%>">P</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=Q&idcat=<%=RS("idcat")%>">Q</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=R&idcat=<%=RS("idcat")%>">R</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=S&idcat=<%=RS("idcat")%>">S</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=T&idcat=<%=RS("idcat")%>">T</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=U&idcat=<%=RS("idcat")%>">U</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=V&idcat=<%=RS("idcat")%>">V</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=X&idcat=<%=RS("idcat")%>">X</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=Z&idcat=<%=RS("idcat")%>">Z</td>

<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=0&idcat=<%=RS("idcat")%>">#</td>
</tr>
</table>
Esses link abrem um outra pagina chamado buscar_letra_resultado.asp, a select esta dessa maneira:
<%
idcat=request.querystring("idcat")
nome_cat=request.querystring("nome_cat")
cat=request.querystring("cat")
idfoto=request.querystring("idfoto")
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

Dim letra
letra = Request.QueryString("letra")

If isNumeric(letra) Then
     letra = "[0-9]"
End If

Set RS= Server.CreateObject("ADODB.Recordset")
sql = "SELECT fotos.nome, fotos.nome_original, fotos.idcat, fotos.id, fotos.thumb, fotos.ano, fotos.detalhe, categorias.nome_cat FROM fotos INNER JOIN categorias ON fotos.idcat = Categorias.id Where fotos.nome LIKE '"& letra&"%' AND 

fotos.idcat=" & idcat & " ORDER BY fotos.nome ASC"
RS.Open SQL, conn, 3

If RS.EOF Then
Response.Redirect ("default.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  

%>

Link para o comentário
Compartilhar em outros sites

  • 0

A idéia do Bareta realmente é muito boa... a minha ideia seria essa aqui:

todos_filmes.asp

Set RS1= Server.CreateObject("ADODB.Recordset")
sql1 = "SELECT distinct nome from fotos order by nome asc"
RS1.Open SQL1, conn, 3


<table align="center" border="0" cellpadding="0" cellspacing="0" width="575">
<tr>
<%
While Not Rs.EOF 
%>
<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(RS1("nome")),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(RS("nome")),1)%></td>
<%
RS.MoveNext
Wend
%>

</tr>
</table>

<%
RS1.close

Set RS1 = Nothing

%>

testa aí e depois nos conta o que achou!

Link para o comentário
Compartilhar em outros sites

  • 0
A idéia do Bareta realmente é muito boa... a minha ideia seria essa aqui:

todos_filmes.asp

Set RS1= Server.CreateObject("ADODB.Recordset")
sql1 = "SELECT distinct nome from fotos order by nome asc"
RS1.Open SQL1, conn, 3


<table align="center" border="0" cellpadding="0" cellspacing="0" width="575">
<tr>
<%
While Not Rs.EOF 
%>
<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(RS1("nome")),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(RS("nome")),1)%></td>
<%
RS.MoveNext
Wend
%>

</tr>
</table>

<%
RS1.close

Set RS1 = Nothing

%>

testa aí e depois nos conta o que achou!

Caraca.... tu é o cara, to sem palavras !!!!! kkkkk Rafael deu tudo certo, adorei essa lógica, ele vai mostrar apenas a letras que correspondem o mesmo... Fantastico, eu quebrando a minha cuca um tempao e você me detona em poucas horas.

Muito obrigado !!!!! :lol:

Link para o comentário
Compartilhar em outros sites

  • 0

;) que isso...

Se você quiser tem jeito das outras letras aparecerem... mais fracas ou menores... mas dai sim teria que criar uma condicional e tal... eu particularmente gosto dessa logica porque o codigo fica super enxuto e robusto, incluindo tags <td> apenas onde necessário mesmo...

qualquer. coisa estamos ae!

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe reabrir o tópico :blush: .... Mas, fiz uns testes em relação a registros que começam com numeros, e constatei o seguinte:

- Quando tem registros que começam com 0, 1, 2,.... Como 007 - Cassino Royale, 8 Miles,... Ira ser criado um link com o numero correspondente, ou seja, 0, 8,...

- Não sei se é possivel, mas gostaria que quando houver registro que comecem com numeros, fosse criado apenas um link "representando" os numeros, como # ou 0-9. Dessa forma não fica extenso.

Se puderem me ajudar nesse detalhe, agradeço de verdade !!!! :D

Link para o comentário
Compartilhar em outros sites

  • 0

Claro que tem... ficaria assim:

<%
While Not Rs.EOF
rsnome = RS1("nome")
if  rsnome = "0" then
rsnome = "#"
else if rsnome = "1" then
rsnome = "#"
elseif rsnome = "2" then
rsnome = "#"
'cont...
end if
%>
<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(rsnome),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(rsnome),1)%></td>
<%
RS.MoveNext
Wend
%>

Link para o comentário
Compartilhar em outros sites

  • 0
Claro que tem... ficaria assim:

<%
While Not Rs.EOF
rsnome = RS1("nome")
if  rsnome = "0" then
rsnome = "#"
else if rsnome = "1" then
rsnome = "#"
elseif rsnome = "2" then
rsnome = "#"
'cont...
end if
%>
<td align="center"><div class="pag-link2"><a href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(rsnome),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(rsnome),1)%></td>
<%
RS.MoveNext
Wend
%>
Rafael não deu certo... uma coisa que estava vendo, quando tem filme como 007 - cassino royale e 8 mile, ira ser criado um link pro 0 e 8, mas quando clico no 0 ira mostrar os dois filmes (007 e 8 mile), então por isso preciso que quando for criado link 0 e 8, apareça apenas um numero como # ou 0-9. Meu loop esta dessa maneira:
<%
While Not Rs1.EOF 
rsnome = RS1("nome")
if  rsnome = "0" then
rsnome = "#"
elseif rsnome = "1" then
rsnome = "#"
elseif rsnome = "2" then
rsnome = "#"
elseif rsnome = "3" then
rsnome = "#"
elseif rsnome = "4" then
rsnome = "#"
elseif rsnome = "5" then
rsnome = "#"
elseif rsnome = "6" then
rsnome = "#"
elseif rsnome = "7" then
rsnome = "#"
elseif rsnome = "8" then
rsnome = "#"
elseif rsnome = "9" then
rsnome = "#"
end if
%>
<td align="center"><div class="pag-link2"><a 

href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(RS1("nome")),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(RS1("nome")),1)%>

</td><td> </td>
<%
RS1.MoveNext
Wend
%>

Link para o comentário
Compartilhar em outros sites

  • 0

ooopps, esqueci um detalhe importante...foi mau! tente assim:

<%
While Not Rs1.EOF
rsnome = LEFT(trim(RS1("nome")),1)
if  rsnome = "0" then
rsnome = "#"
elseif rsnome = "1" then
rsnome = "#"
elseif rsnome = "2" then
rsnome = "#"
elseif rsnome = "3" then
rsnome = "#"
elseif rsnome = "4" then
rsnome = "#"
elseif rsnome = "5" then
rsnome = "#"
elseif rsnome = "6" then
rsnome = "#"
elseif rsnome = "7" then
rsnome = "#"
elseif rsnome = "8" then
rsnome = "#"
elseif rsnome = "9" then
rsnome = "#"
end if
%>
<td align="center"><div class="pag-link2"><a

href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(RS1("nome")),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(RS1("nome")),1)%>

</td><td> </td>
<%
RS1.MoveNext
Wend
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Uhm... entendi... acho que nesse caso você terá que colocar tudo na mesma condicional, como ex.:

<%

While Not Rs1.EOF
rsnome = LEFT(trim(RS1("nome")),1)
if  rsnome = "0" OR  rsnome = "1" OR rsnome = "2" OR rsnome = "3" OR rsnome = "4" OR rsnome = "5" rsnome = "6" rsnome = "7" OR  rsnome = "8"  OR rsnome = "9" then
rsnome = "#"
else
end if
%>
<td align="center"><div class="pag-link2"><a

href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(RS1("nome")),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(RS1("nome")),1)%>

</td><td> </td>
<%
RS1.MoveNext
Wend
%>

Testa aí depois me diga o que ocorreu.

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Apresentou esse erro:

Microsoft VBScript compilation error '800a03f9' 

Expected 'Then' 

/sistema_locadora/sistema_locadora/todos_filmes.asp, line 202 

if  rsnome = "0" OR  rsnome = "1" OR rsnome = "2" OR rsnome = "3" OR rsnome = "4" OR rsnome = "5" rsnome = "6" rsnome = "7" OR  rsnome = "8"  OR rsnome = "9" then
--------------------------------------------------------------------------------------------------^

Link para o comentário
Compartilhar em outros sites

  • 0

e agora:

<%

While Not Rs1.EOF
rsnome = LEFT(trim(RS1("nome")),1)
if  rsnome = "0" OR  rsnome = "1" OR rsnome = "2" OR rsnome = "3" OR rsnome = "4" OR rsnome = "5" OR rsnome = "6" OR rsnome = "7" OR  rsnome = "8"  OR rsnome = "9" then
rsnome = "#"
else
end if
%>
<td align="center"><div class="pag-link2"><a

href="buscar_letra_resultado.asp?letra=<%=LEFT(trim(RS1("nome")),1)%>&idcat=<%=RS1("idcat")%>"><%=LEFT(trim(RS1("nome")),1)%>

</td><td> </td>
<%
RS1.MoveNext
Wend
%>

Link para o comentário
Compartilhar em outros sites

  • 0

Acontece... pressa agente só faz besteira... não tinha visto aqui um detalhe, tente agora:

<%

While Not Rs1.EOF
rsnome = LEFT(trim(RS1("nome")),1)
if  rsnome = "0" OR  rsnome = "1" OR rsnome = "2" OR rsnome = "3" OR rsnome = "4" OR rsnome = "5" OR rsnome = "6" OR rsnome = "7" OR  rsnome = "8"  OR rsnome = "9" then
rsnome = "#"
else
end if
%>
<td align="center"><div class="pag-link2"><a

href="buscar_letra_resultado.asp?letra=<%response.write rsnome%>&idcat=<%=RS1("idcat")%>"><%response.write rsnome%>

</td><td> </td>
<%
RS1.MoveNext
Wend
%>
Outra coisa nada a ver com o assunto: porque você botou essas duas <todos> aqui:
href="buscar_letra_resultado.asp?letra=<%response.write rsnome%>&idcat=<%=RS1("idcat")%>"><%response.write rsnome%>

</td><td> </td>
<%
RS1.MoveNext
Wend
%>
pode tirar aquilo ali, deixei assim:
<%

While Not Rs1.EOF
rsnome = LEFT(trim(RS1("nome")),1)
if  rsnome = "0" OR  rsnome = "1" OR rsnome = "2" OR rsnome = "3" OR rsnome = "4" OR rsnome = "5" OR rsnome = "6" OR rsnome = "7" OR  rsnome = "8"  OR rsnome = "9" then
rsnome = "#"
else
end if
%>
<td align="center"><div class="pag-link2"><a

href="buscar_letra_resultado.asp?letra=<%response.write rsnome%>&idcat=<%=RS1("idcat")%>"><%response.write rsnome%>

</td>
<%
RS1.MoveNext
Wend
%>

;)

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael, não precisa mais, consegui fazer de outra maneira (sei a ideia que estou usando agora é diferente do prinicipio)... A select é a mesma coisa, eu consegui fazer dessa forma:

variaveis:

letra = Request.QueryString("Letra")
letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0"
Loop:
<%

Count = 0  

i = 0 

For i = 1 to 27

  Response.write("<td align='center'>")
  Response.write("<div align='center' class='pag-link2'>")
  Response.write("<a href=teste.asp?letra="&(Mid(letras, i,1))&"&idcat=" & idcat & ">")
  Response.write(""&(Mid(letras, i,1))&"") 
  Response.write("</a>")
  Response.write("</div>")
  Response.write("</td>")
  Response.write("<td>")
  Response.write("&nbsp;")
  Response.write("</td>")
Next    
%>

Dai ficaria assim:

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

A unica coisa chata foi o zero... tentei fazer do jeito que você fez nos posts acima, mas se troco 0 por #, o parametro que ira ser passado sera # e não um numero. não sei se teria como fazer um replace, fazendo com que o # fosse um numero ????

Rafael, muito obrigado por tudo !!!! Se souber de uma ideia de como fazer esse esquema !!!!

Editado por Loko da Web
Link para o comentário
Compartilhar em outros sites

  • 0
Beleza... tava pensando um jeito de resolver aquele entrave e não tava descobrindo! que bom que você resolveu!

Quanto ao replace, acredito que ficasse dessa forma:

replace(Mid(letras, i,1))0,#)
[]'s Rafael Spilki
Cara, não esquenta, a propósito deu tudo certo... mais uma vez obrigado pela atenção e paciencia. você é dez !!!! :D Só corrigindo pra caso alguém queira... deve acrescentar aspas duplas.
"&Replace(Mid(letras, i,1),"#","0")&"
E colocar a variavel dessa forma:
letras = "ABCDEFGHIJKLMNOPQRSTUVWXYZ#"

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...