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

Erro No Looping


DackAle

Pergunta

E ae galera

Tava aqui tentando desenvolver uma função para cortar o texto e por 3 pontinhos, extamente aonde tem o ultimo espaço, o caso é que funcionou, se eu pegar um texto só do banco de dados, funciona, mas se for dentro de um looping (no caso, mostraria varios titulos e ia cortando eles) da erro...

exemplo, se for um unico titulo, tipo

Hoje é sexta feira, dia de cerveja

Hoje é sexta feira...
Funciona normalmente, mas se for dentro de um looping exemplo:
Hoje é sexta feira, dia de cerveja

Amanhã é sabado dia de balada
da erro, por ser mais de um conteudo... gera este erro
Chamada de procedimento ou argumento inválido: 'left'
<%
SQL="SELECT id,titulo,data FROM noticias"
SET RS = Server.CreateObject("Adodb.recordset")
rs.open sql,conexao    
         
if not rs.eof then
         while not rs.eof
         texto = rs("titulo")

texto2 = left(texto,70)
texto3 = InStrRev(texto2,chr(32),70)
texto_f = replace(left(texto,cint(texto3) - 1),chr(13),"<br>")
      	%> <%=texto_f%><% if len(texto) > 70 then %>...<%end if%>
<% 
         rs.movenext
         wend
         rs.close
         set rs = nothing
       end if
         %>

Tipo ele salva o texto num variavel, pega os primeiros 70 caracteres, depois ele procura o espaço de tras para frente (instrrev) e salva a opsição do espaço, na ultima ele pega os caracteres que foi indicado pelo texto3 e o -1 é pra tirar o espaço e alem disso faz a função para o enter funcionar...

No primeiro registro ele mostrar a opsição certtinho, só que no segundo ele mostra a posição no texto3 como 0...

alguém tem ideia do porque pode estar dando este erro ? Estranho é que sozinho minha função funciona, mas no looping da erro...

Valeu galeraaa =)

Abraços

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Olha aki um exemplo funfando em um looping:

<%
dim frases(2)
frases(0)="o mundo precisa de genios humildes, hoje em dia somos poucos"
frases(1)="O que eu mais admiro na minha perfeição é minha modéstia"
frases(2)="Se for dirigir não beba, se for beber me chame"
tamanho=30
for each frase in frases
  texto2 = left(frase,Cint(tamanho))
  texto3 = InStrRev(texto2,chr(32),CInt(tamanho))
  if len(frase) >= Cint(tamanho) then
    response.write left(frase,Cint(texto3))&"...<br><br>"
  else
    response.write left(frase,Cint(texto3))&"<br><br>"
  end if
next %>

Link para o comentário
Compartilhar em outros sites

  • 0

quer ver uma funcao q:

- poe os 3 pontinhos, reticiências,perfeitamente

- faz o limite de caracteres em uma só palavra

- não corta a palavra no meio

quer?

olha aki na página principal do link em verde q tá na minha assinatura.

na pagina principal ali onde lista as notícias...

Link para o comentário
Compartilhar em outros sites

  • 0

E ae galera

texto3 = InStrRev(texto2,chr(32),70)

Nessa linha o instrrev, que faz a mesma coisa que o instr, só que ele começa a procura pelo caractere da direita pra esquerda, procura o espaço (chr(32)) nos primeiros 70 caracteres do texto2 (aonde limitei a 70 caracteres)

Então exemplos eu já vi varios na net o caso era que eu queria desenvolver mesmo, sabe ? funçando mesmo, cheguei a 50% já que se for só um recordset ele faz normalmente...rs

dai vo ver se descubro o porque, mas mesmo assim valeu pela ajuda pessoa =)

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

cara, faz assim simples (e ainda com ex. !!!)

function Resume(str,limite)
  If len(str) > limite then str = Left(str,limite) & "..." Else str = str
  Resume = str
end function
while not rs.eof
  Response.Write Resume(rs("texto"),250)
rs.movenext
wend

Link para o comentário
Compartilhar em outros sites

  • 0

e ae galera =)

Então consegui refaze-la funcionando perfeitamente, fiko assim, maior mas funcional e eu que fiz...rs

<%
titulo = left(rs("titulo"),70)

if len(rs("titulo")) > 70 then
titulo2 = InStrRev(titulo,chr(32),-1,1)
response.write left(titulo,titulo2 - 1)
else
response.write rs("titulo")
end if

if len(rs("titulo")) > 70 then
resposen.write "..."
end if
%>

Abraços e Valeu =)

Link para o comentário
Compartilhar em outros sites

  • 0

Tá mas vem cá, porque dessa parada de pegar o primeiro espaço apartir do final da str?

Link para o comentário
Compartilhar em outros sites

  • 0

vo tentar explicar a logica que eu utilizei GUTO =)

<%

titulo = left(rs("titulo"),70)

'Aqui basicamente pego os 70 primeiros caracteres do recordset titulo

if len(rs("titulo")) > 70 then
titulo2 = InStrRev(titulo,chr(32),-1,1)
response.write left(titulo,titulo2 - 1)
else
response.write rs("titulo")
end if

'emcima faço a verificação pra ver o recordset tem mais de 70 caracteres, se tiver então eu vo utilizar a função que limita o texto com 70 caracteres...

O Insrtrev, ele procura o caractere que eu quero (no caso o ESPAÇO (chr(32)) de tras pra frente, o instr procura da esq pra dir, ele faz ao contrario...
Ou seja ele vai procurar o ultimo espaço aonde limitei a 70 caracteres e vai me retornar o valor de onde encontrou o espaço, por exemplo, ele encontrou o espaço la pro caracteres 65, então eu pego e faço mais um left, aonde eu utilizo o valor que o instrrev me passa pra limitar nesse espaço...

if len(rs("titulo")) > 70 then
resposen.write "..."
end if
%>

A logica que utilizei foi essa e funcionou ehehe parece meio complexo, mas pelo menos funcionou, o que fiz foi fazer o contrario do instr, procurar o espaço da dir pra esq, salvar a posição e fazer mais um left com esse valor =)

Abração

Link para o comentário
Compartilhar em outros sites

  • 0

Brother, continuo sem ver o porque desse trabalho todo.

Coloque 1000 caracteres e faça o teste...

porque na sua função, vai retornar a primeira incidência de espaço... e não vejo o porque disso.

Pense bem nakilo q você fez, desculpe, mas está mal formulado.

Veja a forma q eu fiz no post anterior e teste, veja se não é akilo q você precisa.

Eu fiz uma vez um tutorial sobre isso, bem simples,o único da minha vida, pro site TutoriasMania... se eu achar o link, eu posto.

Mas ressalto, é bem simples.

O que eu fiz pro meu site, é grande comparado a este q postei agora anteriormente; e tem akelas características na quais dei antes.

Abraços! biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

GUTO, eu procuro dentro do que eu LIMITEI (no caso quero pegar só 70 caracteres), o ULTIMO espaço, porque ? Pra poder quebrar o texto nele, e não ficar aquela coisinha porca

"e ele foi embora com ela po..."

é a função 3 pontinhos, quebrando no ultimo espaço antes do que limitei...

basicamente, limito a 70 caracteres, procuro o ultimo espaço nos 70 caracteres, salvo a posição, e faço mais um left, com a posição do espaço...

Testei com 2000 cacracteres e funfo hahaha

Sobre o codigo, como disse já achei varios prontos, mas gosto de tentar desenvolver minhas funções e afins, mesmo que possa estar "porquinha", hoje ela esta funcionando, semana que vem quem sabe não consiga faze-la de uma forma melhor e menor, mas pelo menos esta funcional...rs

Abraçosss

Link para o comentário
Compartilhar em outros sites

  • 0

Ok brother, numa boa!

Eu não tinha reparado na sua primeira linha

titulo = left(str,70)
tongue.gif Desculpe, foi falta de atenção. Mas é uma gambiarrazinha essa hein tongue.gif E brother, não vai dar erro algum nesta sua primeira linha, claro que não, mas talvez o valor de rs("titulo") não seja maior de 70 sempre... Vamos melhora-la? Teste aí...fiz agora.. acho q está ok!
<%
Function ResumeString(str,qtd)
'// str = rs("titulo")
'// qtd = 70

Dim strTitulo, intPos

strTitulo = Left(str,qtd)

'// Aqui basicamente pego os 9 (limite) primeiros caracteres do recordset titulo

If len(str) > qtd then
  intPos = InStrRev(strTitulo,chr(32),-1,1)
  Response.Write Left(strTitulo, intPos- 1)
Else
  Response.Write str
End if

If Len(str) > qtd Then Resposen.Write "..."

End Function
%>

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

GUTO, eu procuro dentro do que eu LIMITEI (no caso quero pegar só 70 caracteres), o ULTIMO espaço, porque ? Pra poder quebrar o texto nele, e não ficar aquela coisinha porca

"e ele foi embora com ela po..."

é a função 3 pontinhos, quebrando no ultimo espaço antes do que limitei...

basicamente, limito a 70 caracteres, procuro o ultimo espaço nos 70 caracteres, salvo a posição, e faço mais um left, com a posição do espaço...

Testei com 2000 cacracteres e funfo hahaha

Sobre o codigo, como disse já achei varios prontos, mas gosto de tentar desenvolver minhas funções e afins, mesmo que possa estar "porquinha", hoje ela esta funcionando, semana que vem quem sabe não consiga faze-la de uma forma melhor e menor, mas pelo menos esta funcional...rs

Abraçosss

Olá !!!

Nós da Hostmix Internet uma empresa de hospedagem e registro de site desejamos a todos um feliz ano novo!!

www.Hostmix.com.br smile.gif

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,2k
    • Posts
      652k
×
×
  • Criar Novo...