webForumDet fria alternativet

dela text i gästbok

ASP

6 svar · 369 visningar · startad av eriks

Medlem sedan apr. 20011 418 inlägg
Frågan#1

Hej! När folk skriver för långa ord i gästboken så blir det inte bra, och jag tänkte lösa detta... Frågan är om man ska splitta texten när man lägger in den i databasen eller när man plockar ut den. Vilket är bäst? Jag antar att det finns en funktion för att göra detta.

Tack! /Erik

Medlem sedan dec. 20002 526 inlägg
#2

skulle saga splitta efter!

Medlem sedan sep. 20026 425 inlägg
#3

Eeeeller lös det med Javascript:

I head:

<script language="javascript" type="text/javascript">
<!--
function kollagb(){
	if (document.gbook.namn.value==""){
		alert("Du måste ange ditt namn.");
		return false;
 		} else if (document.gbook.medd.value==""){
		alert("Du måste skriva ett meddelande.");
		return false;
		} else if (document.gbook.medd.value.length > 300){
		alert("Ditt meddelande är större än 300 tecken. Var vänlig reducera meddelandet.");
		return false;
}
}
//-->
</script>

I body:

<form onsubmit="return kollagb();">
</form>

Ändra 300 mot passande siffra. :)

Medlem sedan apr. 20011 418 inlägg
#4

Hur skriver man en sådan split? man måste använda en if-sats eller?

Medlem sedan dec. 20003 887 inlägg
#5
intIndex = 0
intCursor = 0
intRowLength = 60 [blue]'antal tecken per rad[/blue]
strText = Request.Form("txtMeddelandet") [blue]'eller hur du nu hämtar texten...[/blue]
strText = Replace(strText, vbCrLf, " ")
strText = Replace(strText, "<br>", " ")

While intIndex < Len(strText)
  If intCursor Mod intRowLength = 0 Then
    If Mid(strText, intCursor, 1) = " " Then
      strOutput = strOutput & Mid(strText, intIndex, intRowLength) & "<br>"
      intIndex = intIndex + intRowLength
    Else
      strOutput = strOutput & Mid(strText, intIndex, InStrRev(strText, " ", intIndex + intRowLength)) & "<br>"
      intIndex = intIndex + intRowLength - InStrRev(strText, " ", intIndex + intRowLength)
    End If
  End If

  intCursor = intCursor + 1
Wend

If intIndex > Len(strText) And intCursor < Len(strText) Then
  strOutput = strOutput & Mid(strText, intCursor)
End If

If strOutput = "" Then strOutput = strText

Skrivet ur huvudet, så jag lovar inget :) Fungerar det som jag tänkt så kommer strOutput att innehålla meddelandet med radbrytningar där det är angett.

Medlem sedan mars 20025 907 inlägg
#6

m_soderlund: Den koden kontrollerar ju bara så att hela inlägget är mindre än 300 tecken. Den bryter ju inte ord som är för långa (vilket var trådskaparens fråga.).

Engine^: Har tyvärr ingen möjlighet att pröva din kod, så jag frågar dig istället :)
Har den koden samma problem som koden jag använde i den här tråden? Dvs. Även om en textsträng skulle behöva brytas 2 gånger, så bryts den bara en gång?

Medlem sedan dec. 20003 887 inlägg
#7

Vet ej, eftersom jag inte heller har någon möjlighet att testa koden just nu, men jag tror inte att den ska stjälpas av den tuvan.

271 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
138 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)