webForumDet fria alternativet

Hur gör man för att undvika att forumet "förstörs"?

ASP

8 svar · 345 visningar · startad av koltrasten

Medlem sedan okt. 2002272 inlägg
Frågan#1

Hej!
Jag har ett forum. Man skriver inlägget i en textarea. Därefter läggs det in i en databas. Sedan hämtas den från databasen och läggs ut på en ASP-sida.
Problemet är att designen förstörs om man skriver något i stil med:
sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd;sdsd osv.

Jag vill alltså ha radbrytningar. Hur gör man det?

Medlem sedan sep. 2002366 inlägg
#2

Här kommer en funktionen som det säkert finns nån fördefinerad funktion för i ASP.. som jag som vanligt inte kann ;)

Function form_text(txt,max_len)
	txt = vbCrLf & txt
	pos_first = 1
	pos_next = 1
	Do While pos_next > 0
		pos_first = InStr(pos_first,txt,vbCrLf)
		pos_next = InStr(pos_first+1,txt,vbCrLf)
		If pos_next-pos_first > max_len And pos_next > 0 Then
			tmp_txt = Mid(txt,pos_first,max_len)
			tmp_txt_rest = Mid(txt,pos_first+max_len,pos_next-pos_first-max_len)
			txt = Replace(txt,tmp_txt & tmp_txt_rest,tmp_txt & vbCrLf & tmp_txt_rest)
			pos_first = pos_first+max_len
		Else
			pos_first = pos_first + 1
		End If
	Loop
	form_text = txt
End Function

funkar alltså såhär t ex:
<%= Replace(form_text(text,50),vbCrLf,"<br>")%>

denna kapar ord rakt av.. sånt får du fixa själv ;)

den här funktionen lägger in ett vBCrLf i början av texten föresten.. så den kan starta sökandet nånstans ;)
Men det är ju bara o ta "Left" när man vill skriva ut texten sen om man inte vill ha det ;)

-Eitraz

Medlem sedan okt. 2002272 inlägg
#3

Tack! :)

Jag återkommer och berättar om den fungerade! §e

Medlem sedan juni 20003 076 inlägg
#4

Eitraz skrev:

som det säkert finns nån fördefinerad funktion för i ASP

Nope! Det finns faktiskt inte, inte heller i vb-script, fast det borde finnas kan man ju kanske tycka! :)

Medlem sedan sep. 2002366 inlägg
#5

Hehe, vad dum jag var.. Jag gjorde ju sökningen efter "ny rad".. Det ska ju vara efter mellanslag.. Blir såhär istället då :)

Function form_text(txt,max_len)
	txt = vbCrLf & txt
	pos_first = 1
	pos_next = 1
	Do While pos_next > 0
		pos_first = InStr(pos_first,txt," ")
		pos_next = InStr(pos_first+1,txt," ")
		If pos_next-pos_first > max_len And pos_next > 0 Then
			tmp_txt = Mid(txt,pos_first,max_len)
			tmp_txt_rest = Mid(txt,pos_first+max_len,pos_next-pos_first-max_len)
			txt = Replace(txt,tmp_txt & tmp_txt_rest,tmp_txt & vbCrLf & tmp_txt_rest)
			pos_first = pos_first+max_len
		Else
			pos_first = pos_first + 1
		End If
	Loop
	form_text = txt
End Function

Ska nog funka bättre ;)

-Eitraz

Medlem sedan sep. 2002366 inlägg
#6

Uppdaterade mitt felaktiga inlägg till en ny kod ;)

-Eitraz

Medlem sedan nov. 200211 inlägg
#7

eller gör så här!

om jag förstår dig rätt så behöver du bara lägga till wrap="HARD" i din textarea kod.... så radbryts allt och hammnar inte på samma rad

ex.

<textarea name="namnet" class="text" cols="45" wrap="HARD" rows="5"></textarea>[
Medlem sedan okt. 2002272 inlägg
#8

:o
Oj, tack så mycket!

Medlem sedan sep. 2002366 inlägg
#9

hehe, lite smidigare :)

-Eitraz

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