Ir para conteúdo

Arquivado

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

hudsonalves

excluir espaço e acentuação

Recommended Posts

Prezados,

 

Estou modificando a construção do meu site de jogos, uma destas modificações refere-se ao calendário de jogos.

 

Bem, no passado eu mostrava o calendário sem imagem conforme exemplo

 Data       Horário                               Jogo
23/08        22:10                 Santa Teresinha x Cana da xícara

Hoje ao invés dos nomes, eu mostro o distintivo com inclusão do código abaixo substituindo os nomes

<img border="0" src="../times/<%=(rsRelated.Fields.Item("IMAGEM_ESCUDO").Value)%>.jpg" width="48" height="48">

O problema que encontrei é o seguinte, as imagens, mais de 2 mil não estão nomeadas conforme o nome o "santa teresinha" esta assim: "santateresinha.jpg" e o Cana da Xícara esta assim: "canadexicara.jpg" (neste dois exemplos mostro que o nome das imagens não possuem espaço nem acentuação, para times com uma palavra e sem acentuação funciona certinho)

 

Como são muitas fotos para padronizar e o banco de dados também ja possui o cadastro, é possível no código que transformo o nome em imagem, retirar o espaço e a acentuação?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar uma Função para fazer, veja um exemplo que faz isso:

 

FUNÇÃO:

Function TirarAcento(Palavra)
CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ "
SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN_"
Texto = ""
If Palavra <> "" Then
        For X = 1 To Len(Palavra)
               Letra = Mid(Palavra,X,1)
               Pos_Acento = InStr(CAcento,Letra)
               If Pos_Acento > 0 Then Letra = mid(SAcento,Pos_Acento,1)
               Texto = Texto & Letra
        Next
        TirarAcento = Texto
End If

Depois é só chamar a Função "TirarAcento" para o campo desejado.

 

Quando o nome for separado tipo "foto de avião" ela ficará assim "foto_de_aviao"

 

Ficará sem acentos e sem espaço.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

este código funciona apenas na hora do cadastro correto?

 

No meu caso preciso retirar a acentuação e espaço de nome ja cadastrados toda vez que exibo o resultado no html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gilberto, tentei isso mas deu erro

 

 

meu código original

<%=(rsRelated.Fields.Item("IMAGEM_ESCUDO").Value)%>

Alterado conforme exemplo:

<%=TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO"))%>

Tentei assim:

<%=TirarAcento(rsRelated("IMAGEM_ESCUDO"))%>

e assim:

<%=TirarAcento(rsRelated("IMAGEM_ESCUDO").value)%>

gerou o mesmo erro:

Erro de tempo de execução do Microsoft VBScript erro '800a000d'
Tipos incompatíveis: 'TirarAcento'
/ajaxtaipasv3/home/default.asp, linha 130

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente desta forma

<%=rsRelated (TirarAcento("IMAGEM_ESCUDO")) %>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o código completo:

<head><script language="javascript" type="text/javascript">
Function TirarAcento(Palavra)
CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ "
SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN_"
Texto = ""
If Palavra <> "" Then
        For X = 1 To Len(Palavra)
               Letra = Mid(Palavra,X,1)
               Pos_Acento = InStr(CAcento,Letra)
               If Pos_Acento > 0 Then Letra = mid(SAcento,Pos_Acento,1)
               Texto = Texto & Letra
        Next
        TirarAcento = Texto
End If
</script>




</head>
<div class="alert alert-danger">
<table class="table ">
<thead>
<tr>
<th>Grade</th>
<th>Jogo</th>
<th>Data</th>
</tr>
</thead>
<%
Dim varcalendar
varcalendar = strRightSize


Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("../_private/DUportal.mdb")
set rsRelated = conn.execute("SELECT TOP "& varcalendar &" * FROM DATAS, CHANNELS, CATEGORIES WHERE CAT_CHANNEL = CHA_ID AND DAT_CATEGORY = CAT_ID AND CAT_NAME AND DAT_DATED >= DATE() AND DAT_APPROVED=1 AND CHA_ACTIVE = 1 AND CHA_NAME = 'JOGOS' ORDER BY DAT_DATED ASC, DAT_PRICE ASC")
do while not rsRelated.eof
%> 
<tbody>
<tr class="warning">
<td><a href="detailcalendar.asp?iData=<%=(rsRelated.Fields.Item("DAT_ID").Value)%>&iCat=<%=(rsRelated.Fields.Item("DAT_CATEGORY").Value)%>&iChannel=<%=(rsRelated.Fields.Item("CAT_CHANNEL").Value)%>&nChannel=<%=(rsRelated.Fields.Item("CHA_NAME").Value)%>"><b><font size="2" color="#593333"><img border="0" src="../distintivos/<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO")).Value)%>.gif" width="48" height="48" title="<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO")).Value)%>"></font></b></a> x <b> <a href="detailcalendar.asp?iData=<%=(rsRelated.Fields.Item("DAT_ID").Value)%>&iCat=<%=(rsRelated.Fields.Item("DAT_CATEGORY").Value)%>&iChannel=<%=(rsRelated.Fields.Item("CAT_CHANNEL").Value)%>&nChannel=<%=(rsRelated.Fields.Item("CHA_NAME").Value)%>"><font size="2" color="#593333"><img border="0" src="../distintivos/<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO2")).Value)%>.gif" width="48" height="48" title="<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO2")).Value)%>"></font></b></a></td>
</tr>
</tbody>
<%
rsRelated.movenext
loop
rsRelated.close
conn.close
set rsRelated = nothing
set conn = nothing
%>
</table>
</div>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja agora

<tbody>
<tr class="warning">
<td><a href="detailcalendar.asp?iData=<%=rsRelated.Fields.Item("DAT_ID").Value%>&iCat=<%=rsRelated.Fields.Item("DAT_CATEGORY").Value%>&iChannel=<%=rsRelated.Fields.Item("CAT_CHANNEL").Value%>&nChannel=<%=rsRelated.Fields.Item("CHA_NAME").Value%>"><b><font size="2" color="#593333"><img border="0" src="../distintivos/<%=TirarAcentors(Related.Fields.Item("IMAGEM_ESCUDO").Value)%>.gif" width="48" height="48" title="<%=TirarAcentor(sRelated.Fields.Item("IMAGEM_ESCUDO").Value)%>"></font></b></a> x <b> <a href="detailcalendar.asp?iData=<%=rsRelated.Fields.Item("DAT_ID").Value%>&iCat=<%=rsRelated.Fields.Item("DAT_CATEGORY").Value%>&iChannel=<%=rsRelated.Fields.Item("CAT_CHANNEL").Value%>&nChannel=<%=rsRelated.Fields.Item("CHA_NAME").Value%>"><font size="2" color="#593333"><img border="0" src="../distintivos/<%=TirarAcentors(Related.Fields.Item("IMAGEM_ESCUDO2").Value)%>.gif" width="48" height="48" title="<%=TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO2").Value)%>"></font></b></a></td>
</tr>
</tbody>

Altera o seu código por esse.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

não deu outra, rolou o mesmo erro:

Erro de tempo de execução do Microsoft VBScript erro '800a000d'
Tipos incompatíveis: 'TirarAcentors'
/jogos/home/default.asp, linha 130

Eu havia mudado a palavra do trecho abaixo para "acento" neste trecho:

<%=acento(Related.Fields.Item("IMAGEM_ESCUDO").Value)%>

e o erro é o mesmo, provavelmente não esteja identificando o JS

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça novo teste...

 

Retire de javascript

<script language="javascript" type="text/javascript">
.
.
.
</script>

E teste o código como ASP

<% 
.
.
.
%>

Veja se muda algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não rola, tentei da primeira vez, gera o erro

Erro de compilação do Microsoft VBScript erro '800a03ea'
Erro de sintaxe

Ronaldo Bueno,

 

Isso mesmo, as imagens da pasta estão sem acentos e sem espaços, o BD possui os nomes horas com acentos e espaços ou só com acento ou só com espaços

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a linha que gera o erro ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual a linha que gera o erro ?

 

 

 

a linha é essa:

<td><a href="detailcalendar.asp?iData=<%=(rsRelated.Fields.Item("DAT_ID").Value)%>&iCat=<%=(rsRelated.Fields.Item("DAT_CATEGORY").Value)%>&iChannel=<%=(rsRelated.Fields.Item("CAT_CHANNEL").Value)%>&nChannel=<%=(rsRelated.Fields.Item("CHA_NAME").Value)%>"><b><font size="2" color="#593333"><img border="0" src="../distintivos/<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO")).Value)%>.gif" width="48" height="48" title="<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO")).Value)%>"></font></b></a> x <b> <a href="detailcalendar.asp?iData=<%=(rsRelated.Fields.Item("DAT_ID").Value)%>&iCat=<%=(rsRelated.Fields.Item("DAT_CATEGORY").Value)%>&iChannel=<%=(rsRelated.Fields.Item("CAT_CHANNEL").Value)%>&nChannel=<%=(rsRelated.Fields.Item("CHA_NAME").Value)%>"><font size="2" color="#593333"><img border="0" src="../distintivos/<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO2")).Value)%>.gif" width="48" height="48" title="<%=(TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO2")).Value)%>"></font></b></a></td>

Mais precisamente quando eu altero este trecho:

<%=(rsRelated.Fields.Item("IMAGEM_ESCUDO").Value)%>

para este

<%=TirarAcento(rsRelated.Fields.Item("IMAGEM_ESCUDO"))%>

Ou este:

<%=TirarAcento(rsRelated("IMAGEM_ESCUDO"))%>

ou este:

<%=TirarAcento(rsRelated("IMAGEM_ESCUDO").value)%>

Qualquer inclusão do "TirarAcento"gera o erro:

Erro de tempo de execução do Microsoft VBScript erro '800a000d'
Tipos incompatíveis: 'TirarAcento'
/ajaxtaipasv3/home/default.asp, linha 130

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rode uma rotina que substitua os nomes, terá menos problemas no futuro.

 

Outra pergunta:

 

Exemplo de como esta seu trabalho

 

No bd esta

 

Time coração

 

E na imagem esta

 

Timecoracao

 

Assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu testei a função TirarAcento e ela resultou aqui assim

 

resp = TirarAcento("time coração")

 

resp ficou time_coracao

 

é assim mesmo? com underline?

 

por posts anteriores vi que tinha que ficar assim: timecoracao

 

já corrigiram a função e o erro continua?

 

vi que a função foi adaptada no vetor CAcento colocaram o espaço e no SAcento colocaram o underline para substituir mas só isso não resolve complete no final da função um replace no underline para nada ou remova dos vetores e espaço e o underline e dê no final o replace no espaço por nada!! pronto!!

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.