Avatar billede maron Nybegynder
25. juni 2007 - 13:21 Der er 63 kommentarer og
1 løsning

For mange linieskift

Kan man på en eller anden måde undgå at der bliver skrevet en masse linieskift <br> ind i databasen, eller undgå at få dem vist i response.write

Problemet er at der i min gæstebog nogen gange er en masse <br> efter et indlæg og det ser ikke særlig smart ud med alt den tomme plads.
Avatar billede fennec Nybegynder
25. juni 2007 - 13:23 #1
Indsætter du <br> i databasen eller er det et almindelige linjeskift?
Avatar billede maron Nybegynder
25. juni 2007 - 13:26 #2
Linieskift fra formular, den generer så vidt jeg ved <br>
Avatar billede cpufan Juniormester
25. juni 2007 - 14:01 #3
response.write replace(rs("indlaeg"),"<br>"," ")'erstatter alle liniskift med et mellemrum
Avatar billede fennec Nybegynder
25. juni 2007 - 14:09 #4
Nej, et textarea generere ikke <br>, den generere vbcrlf. Du skal selv udskifte dem med <br>, med en replace.

Men hvis jeg husker ret, så fjerner trim også vrcrlf fra start og slut, så hvis du sender dine data igennem den når du indsætter forsvinder linjeskift:

conn.execute("insert into dinTabel(kolonne) values('"& replace(trim(request.form("formFelt")&""),"'","''") &"')")
Avatar billede maron Nybegynder
25. juni 2007 - 14:15 #5
Jo, men linieskift skal stadig kunne anvendes, og kun fjernes når der ikke er anden tekst efter., det gør trim måske netop?
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:23 #6
Erstat 2x linieskift med 1 linieskift..

Det skal kun ske på vej ud af databasen..

Dvs:

insert ....


og på vej ud:

response.write replace(rs("besked"), vbCrLf & vbCrLf, "<br>")
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:24 #7
Man kan selvfølgeligt også bare erstatte 3x linieskift med 1 eller 2..

Linieskift er: vbCrLf

Som erstattes med HTML-linieskift: <br>
Avatar billede fennec Nybegynder
25. juni 2007 - 14:25 #8
Trim fjerner alle blanke tegn før og efter tekst:

tmp = trim("  hej med    dig  ")
response.write tmp 'udskriver "hej med    dig"
Avatar billede maron Nybegynder
25. juni 2007 - 14:33 #9
Trim er så ikke løsningen her.:(
thesurfer >> alle linieskift skal fjernes efter et tekst indhold, ved ikke om det kan lade sig gøre?
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:36 #10
maron> Hvis du erstatter 2xlinieskift med 1 linieskift, vil du højst få 1 linie skift efter teksten.

Du kan også checke, om det sidste tegn er et linieskift:

t = rs("tekst") ' smider indholdet af kolonnen "tekst" over i variablen "t"
t = replace(t, vbCrLf & vbCrLf, vbCrLf) ' erstatter 2x linieskift med 1x linieskift
if right(t, 2) = vbCrLf then t = left(t, len(t) - 2) ' fjern de sidste 2 tegn, hvis det er linieskift
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:37 #11
Det er ikke testet, men skrevet direkte ind her på eksperten.dk.

Hvis den melder fejl, skriv da:

1) Linienr og linie (hvilken linie der er fejl i)
2) Hele fejlmeddelelsen
Avatar billede maron Nybegynder
25. juni 2007 - 14:40 #12
thesurfer >> og det skulle også kunne fjerne eks. 25 linieskift?
Avatar billede carstensuurland Nybegynder
25. juni 2007 - 14:42 #13
Do Until (InStr(1, MinTekst, "<br /><br />") = 0)
  MinTekst = Replace(MinTekst, "<br /><br />", "<br />")
Loop
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:45 #14
carstensuurland> Det her er ikke JavaScript.. :-)

VBScript i ASP vil automatisk erstatte på et globalt niveau, uden at man skal angive det.. imodsætning til JavaScript.. :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:46 #15
carstensuurland>

Med andre ord:

h = "<br /><br />one<br /><br />two<br /><br />three"

h = replace(h, "<br /><br />", "<br />")

Vil udskrive: <br />one<br />two<br />three


.. Og så skal det være "<br>" og ikke "<br />", da der ikke er nogen grund til at bruge XHTML, da XHTML ikke understøttes ordentligt af de nuværende browsere.

XHTML bliver fortolket som fejlfyldt HTML 4.01, hvor man jo bruger "<br>". :-)
Avatar billede maron Nybegynder
25. juni 2007 - 14:51 #16
Ok thesurfer, nu er det meget tæt på et perfekt resultat, som det er nu kan der vises der maks et linieskift, jeg vil dog gerne kunne få vist op til 2 da det jo angiver et nyt ansnit i et indlæg.

Koden jeg bruger nu ser sådan ud:

indhold = rs("indhold")
indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf)
if right(indhold, 2) = vbCrLf then indhold = left(indhold, len(indhold) - 2)
indhold = Server.HTMLencode(indhold)
indhold = replace(indhold, vbCrLf, "<BR>")
Avatar billede carstensuurland Nybegynder
25. juni 2007 - 14:52 #17
Både IE 6.0, IE 7.0 samt Firefox forstår fint XHTML.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:52 #18
Hvis der max må vises 2 linieskift, laver du bare en erstatning på 3 linieskift :-)

Eksempel:

indhold = replace(indhold, vbCrLf & vbCrLf & vbCrLf, vbCrLf & vbCrlf)

Dette erstatter 3 linieskift med 2 linieskift.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:54 #19
carstensuurland> Browserne fortolker det forkert.

Hvis du har spørgsmål til XHTML-understøttelse, er du velkommen til at spørge olebole eller roenving, som er brugere her på eksperten.dk.

Jeg er ret sikker på, at du kan få masse nyttige oplysninger. :-)
Avatar billede carstensuurland Nybegynder
25. juni 2007 - 14:55 #20
OK... Tak for info, men jeg kan ikke lige se hvor det giver problemer. Jeg er ihvertfald ikke rendt ind i XHTML fortolkningsfejl
Avatar billede thesurfer Nybegynder
25. juni 2007 - 14:57 #21
Det er fordi (ifølge det jeg har fået at vide) browserne fortolker det som HTML 4.01, som de kan finde ud af..

Og så ser de bare bort fra fejlene, som er forskellen på XHTML og HTML 4.01..

Som sagt får du nok en meget bedre forklaring, af olebole eller roenving.

De har meget mere styr på det, end jeg har.
Avatar billede bauerdata Nybegynder
25. juni 2007 - 15:02 #22
<HTML><BODY>
<%@ Language=Python %s>
<%
#
indhold="""
  hej med    dig 
jasdf python er nemt og sjovt

asddsf


"""
Response.Write( indhold.strip() ) # Strip fjerner alle ikke synlige tegn før og efter en tekstblok
%>
</BODY></HTML>
Avatar billede maron Nybegynder
25. juni 2007 - 15:11 #23
strip() fjener da alt tekst.:(

Den her virker heller ikke, enten er der ingen linieskift, eller også er der alt får mange.:(
Avatar billede maron Nybegynder
25. juni 2007 - 15:14 #24
Hov glemte koden.
Den her virker heller ikke, enten er der ingen linieskift, eller også er der alt får mange.:(

indhold = rs("indhold")
indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf)
if right(indhold, 2) = vbCrLf then indhold = left(indhold, len(indhold) - 2)
indhold = Server.HTMLencode(indhold)
indhold = replace(indhold, vbCrLf, "<BR>")
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:19 #25
bauerdata> Drop det.
Det er VBScript i ASP og ikke Python.

Jeg har tidligere advaret dig, og nu har jeg anmeld dig for at spamme spørgsmål med irrelevant indhold, jvf. Ekspertens regel §2.1.8:

"[Det er ikke tilladt at:] spamme, flame eller skrive indlæg uden relevans for det aktuelle spørgsmål."
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:22 #26
maron> Jeg prøver lige at teste noget kode..
Avatar billede bauerdata Nybegynder
25. juni 2007 - 15:24 #27
maron det er Language=Python
i python virker strip() som jeg skriver.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:29 #28
bauerdata> Som du nok kan se, så programmerer maron i VBScript, og ikke Python.
Avatar billede bauerdata Nybegynder
25. juni 2007 - 15:37 #29
>>> thesurfer hvis man har et VBScript spørgsmål , hvilken af følgende kategorier skal man så stille spørgsmålet i
1.  ASP->Script ?
2.  ASP->VBScript ?

Du må godt få 2 gæt.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:43 #30
For det første: Den kategoristruktur du viser der, findes ikke
For det andet :
- Hvis det er VBScript i ASP, skal spørgsmål stille i ASP-kategorien
- HVis der er VBScript i Windows Script Host, dvs. ".VBS" filer, skal det stilles i http://www.eksperten.dk/spm/Programmering/Script/VBscript/
Eller WSH-kategorien (mener jeg)
- Hvis det er VBScript i browseren, som kun understøttes af Internet Explorer, skal kan det stilles flere steder, men stilles oftes i f.eks HTML-kategorerine eller IE-kategorien.


Nu synes jeg at du skal holde op med at spilde min tid, holde dig til Python-relaterede spørgsmål!
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:45 #31
skal kan = kan

PS: Der findes dedikerede kategorier til VBScript i Windows Script Host.

Og der er vist noget med, at den ene kategori er lidt malplaceret, hvis man spørger mig..

Jeg mener at det er WSH der ligger/lå i DHTML-kategorien.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:57 #32
maron> Hmm.. Jeg synes at jeg får et rigtigt output?

Eksempel:

<% option explicit %>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%

if request.servervariables("request_method") = "POST" then
dim indhold

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen

if 2 = 3 then

Do Until (InStr(1, indhold, vbCrLf & vbCrLf & vbCrLf) = 0)
  indhold = Replace(indhold, vbCrLf & vbCrLf & vbCrLf, vbCrLf)
Loop

end if

indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf)

if right(indhold, 2) = vbCrLf then indhold = left(indhold, len(indhold) - 2)
indhold = Server.HTMLencode(indhold)
indhold = replace(indhold, vbCrLf, "<BR>")

response.write indhold
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>


<!-- Test f.eks. med denne tekst:

her - 1 mellemrum mellem linierne (nedad)

er - 2 mellemrum mellem linierne (nedad)


noget - 3 mellemrum mellem linierne (nedad)



tekst

-->
Avatar billede thesurfer Nybegynder
25. juni 2007 - 15:58 #33
carstensuurland> By the way:
Jeg testede din loop, hvilket egentligt ville være god nok (går jeg ud fra), hvis VBScript i ASP ikke erstattede globalt..
Avatar billede bauerdata Nybegynder
25. juni 2007 - 15:58 #34
Du har ret, jeg fik rækkefølgen forkert
Den rigtige rækkefølge er
1. Script->VBScript
2. Script->ASP

Jeg mener at 1. er det rigtige svar.
Hvergang jeg kommer med et indlæg så kommenterer du det og truer med at anmelde mig.
Så jeg ved snart ikke hvem som spilder den andens tid.
Vil du ikke gøre mig den tjeneste at anmelde mig omgående, hvis det kan få dig til at holde op med at forfølge mig.
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:04 #35
bauerdata>

1) Jeg truer ikke folk, jeg advarer folk når de gør noget forkert

2) Du blev alle anmeldt her: 25/06-2007 15:19:56

3) Det her er *ikke* VBScript! Det er her VBScript i ASP! :-)
- Der er en forskel: Afviklingsmiljøet
-- VBScript afvikles i Windows Script Host/Windows
-- VBscript i ASP afvikles via en webserver, typisk IIS eller Apache med Sun's Chili!ASP


Forstår du det, eller skal du bruge mere hjælp?
Avatar billede maron Nybegynder
25. juni 2007 - 16:09 #36
thesurfer >> nu er jeg ikke super hård til ASP, så du kan måske forklare din kode og hvorfor du foretager en loop?
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:12 #37
maron> Jeg fortager ikke loopen.. :-)
Jeg testede carstensuurland's kode, da jeg var lidt usikker på hvordan den ville virke.. Det virkede ikke særligt godt hos mig, så jeg smed en IF-sætning udenom, så den ikke blev afviklet..

Loopen ville kun blive afviklet, hvis 2 var lig 3, hvilket aldrig vil lade sig gøre.. :-)


Her er den kode jeg bruger lige uden (dvs, uden loopen):

<% option explicit %>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%

if request.servervariables("request_method") = "POST" then
dim indhold

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen

indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf)

if right(indhold, 2) = vbCrLf then indhold = left(indhold, len(indhold) - 2)
indhold = Server.HTMLencode(indhold)
indhold = replace(indhold, vbCrLf, "<BR>")

response.write indhold
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>


<!-- Test f.eks. med denne tekst:

her - 1 mellemrum mellem linierne (nedad)

er - 2 mellemrum mellem linierne (nedad)


noget - 3 mellemrum mellem linierne (nedad)



tekst

-->
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:14 #38
Og så glemte jeg at forklare koden.. :-)

Forklaring kommer lige om 1 minutstid.. :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:16 #39
Her er den nuværende kode med forklaring i form af kommentar, ved linierne:

<%
option explicit
' med Option Explicit som øverst linie i dokumentet, bliver vi informeret hvis vi bruger variabler vi ikke erklæret
' hvilket typisk typer på, at vi har lavet en stavefejl i navnet på en variabel
%>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%

if request.servervariables("request_method") = "POST" then ' hvis der er submittet, skal der abejdes på de modtagne data (teksten)
dim indhold ' erklær variablen, så

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen

indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf) ' erstatte alle 2x mellemrum med 1x mellemrum. juster selv hvor mange mellemrum der skal fjernes

if right(indhold, 2) = vbCrLf then indhold = left(indhold, len(indhold) - 2) ' hvis sidste 2 tegn er Cr og Lf, hvilket betyder linieskift, fjernes de
indhold = Server.HTMLencode(indhold) ' erstatter HTML tags med HTML entiteter, så HTML kode vises fremfor at blive afviklet
indhold = replace(indhold, vbCrLf, "<BR>") ' erstatte alle linieskift med HTML-linieskiftet

response.write indhold ' udskriv indholdet/teksten, så vi kan se den
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>


<!-- Test f.eks. med denne tekst:

her - 1 mellemrum mellem linierne (nedad)

er - 2 mellemrum mellem linierne (nedad)


noget - 3 mellemrum mellem linierne (nedad)



tekst

-->
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:18 #40
Vær opmærksom på, at "data (teksten)" hører til linien:

hvis der er submittet, skal der abejdes på de modtagne data (teksten)

Men pga pladsmangler på eksperten.dk i bredden, er den kommet ned på næste linie.

Det samme gælder for:

"mange mellemrum der skal fjernes"

"linieskift, fjernes de"

"afviklet"
Avatar billede maron Nybegynder
25. juni 2007 - 16:19 #41
thesurfer >> koden virker ikke efter hensigten.
Hvis du skriver en tekst formularen og afslutter med at holde ENTER nede og generere en masse linieskift, kommer de alligevel med i response.write
Avatar billede maron Nybegynder
25. juni 2007 - 16:25 #42
Så den linie her, skal vel rettet til hvis 2 eller flere Cr Lf fjernes de??

if right(indhold, 2) = vbCrLf then indhold = left(indhold, len(indhold) - 2) ' hvis sidste 2 tegn er Cr og Lf, hvilket betyder linieskift, fjernes de
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:31 #43
Hmm... Det kigger jeg lige på..
Det er bare at lave en loop, der hele tiden kigger på de sidste 2 tegn..

Laver lige noget kode til dig..
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:50 #44
Jeg tror at jeg næsten er der.. :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:53 #45
Hvis denne kode virker som den skal, skal jeg nok forklare den.. :-)

<%
option explicit
' med Option Explicit som øverst linie i dokumentet, bliver vi informeret hvis vi bruger variabler vi ikke erklæret
' hvilket typisk typer på, at vi har lavet en stavefejl i navnet på en variabel
%>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%

if request.servervariables("request_method") = "POST" then ' hvis der er submittet, skal der abejdes på de modtagne data (teksten)
dim indhold ' erklær variablen, så

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen

indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf) ' erstatte alle 2x mellemrum med 1x mellemrum. juster selv hvor mange mellemrum der skal fjernes
dim i

i = len(indhold) - 1
do while mid(indhold, i, 2) = vbCrLf
i = i - 2
loop
end if

indhold = left(indhold, i + 1)
indhold = Server.HTMLencode(indhold) ' erstatter HTML tags med HTML entiteter, så HTML kode vises fremfor at blive afviklet
indhold = replace(indhold, vbCrLf, "<BR>") ' erstatte alle linieskift med HTML-linieskiftet

response.write indhold ' udskriv indholdet/teksten, så vi kan se den
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>
Avatar billede thesurfer Nybegynder
25. juni 2007 - 16:54 #46
Det gør den ikke, fordi der er et END IF for meget.. :-)

Sådan:

<%
option explicit
' med Option Explicit som øverst linie i dokumentet, bliver vi informeret hvis vi bruger variabler vi ikke erklæret
' hvilket typisk typer på, at vi har lavet en stavefejl i navnet på en variabel
%>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%

if request.servervariables("request_method") = "POST" then ' hvis der er submittet, skal der abejdes på de modtagne data (teksten)
dim indhold ' erklær variablen, så

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen

indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf) ' erstatte alle 2x mellemrum med 1x mellemrum. juster selv hvor mange mellemrum der skal fjernes
dim i

i = len(indhold) - 1
do while mid(indhold, i, 2) = vbCrLf
i = i - 2
loop

indhold = left(indhold, i + 1)
indhold = Server.HTMLencode(indhold) ' erstatter HTML tags med HTML entiteter, så HTML kode vises fremfor at blive afviklet
indhold = replace(indhold, vbCrLf, "<BR>") ' erstatte alle linieskift med HTML-linieskiftet

response.write indhold ' udskriv indholdet/teksten, så vi kan se den
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>
Avatar billede maron Nybegynder
25. juni 2007 - 17:11 #47
Tak jeg prøver...:O)
Avatar billede maron Nybegynder
25. juni 2007 - 17:17 #48
thesurfer >> koden fjerner linieskift i teksten, men ikke efter teksten :-(
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:22 #49
Dammit.. jeg prøver lige at lave noget generelt kode, og smider det i en funktion..
Avatar billede maron Nybegynder
25. juni 2007 - 17:27 #50
Ups. min fejl, tror altså det virker alligevel, tester lige en smule mere.:)
Avatar billede maron Nybegynder
25. juni 2007 - 17:30 #51
Ikke noget at klage over, det var præcis den funktion jeg havde brug for.
Jeg siger tusind tak for hjælpen. :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:34 #52
Ok. Så smider jeg et svar :-)
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:34 #53
Hmm.. det virker da ikke?

Eksempel:






her

er


noget



tekst
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:35 #54
Hmm.. det virker da ikke?

Eksempel:
---





her

er


noget



tekst







---
Avatar billede thesurfer Nybegynder
25. juni 2007 - 17:41 #55
Nu fjerner den også alle linieskift før teksten (i starten) og efter teksten (i slutningen):

<%
option explicit
' med Option Explicit som øverst linie i dokumentet, bliver vi informeret hvis vi bruger variabler vi ikke erklæret
' hvilket typisk typer på, at vi har lavet en stavefejl i navnet på en variabel
%>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"><%=request.form("indhold")%></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%
if request.servervariables("request_method") = "POST" then ' hvis der er submittet, skal der abejdes på de modtagne data (teksten)
dim indhold ' erklær variablen, så

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen

indhold = replace(indhold, vbCrLf & vbCrLf, vbCrLf) ' erstatte alle 2x mellemrum med 1x mellemrum. juster selv hvor mange mellemrum der skal fjernes
dim i

' fjern alle linieskift før teksten:
do while left(indhold, 2) = vbCrLf
    indhold = mid(indhold, 2)
loop


' fjern alle linieskift efter teksten:
i = len(indhold) - 1
if instr(indhold, vbCrLf) > 0 then
    do while mid(indhold, i, 2) = vbCrLf
    i = i - 2
    loop
end if
indhold = left(indhold, i + 1)

indhold = Server.HTMLencode(indhold) ' erstatter HTML tags med HTML entiteter, så HTML kode vises fremfor at blive afviklet
indhold = replace(indhold, vbCrLf, "<BR>") ' erstatte alle linieskift med HTML-linieskiftet

response.write indhold ' udskriv indholdet/teksten, så vi kan se den
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>
Avatar billede maron Nybegynder
25. juni 2007 - 17:44 #56
Kanon :o)
Og points...
Avatar billede snowball Novice
25. juni 2007 - 18:42 #57
bauerdata: Dine Python eksempler er ikke til nogen hjælp når det ikke er Python der benyttes i forvejen. Dine indlæg skaber derfor blot megen forvirring og er reelt ikke til gavn for den der stiller spørgsmålet.

Du bedes derfor venligst stoppe med at komme med Python kode med mindre dette er relevant for spørgsmålet, tak :)

Snowball / Admin
Avatar billede thesurfer Nybegynder
26. juni 2007 - 16:16 #58
Så! Nu skulle funktionen virke perfekt! :-)

Hvis ikke, smider jeg min computer væk, og flytter ud på en øde ø......


Eksempel på brug af funktionen:

indhold = rs("indhold")
indhold = ret_tekst(indhold) ' her kaldes funktionen.. :-)
indhold = replace(indhold, vbCrLf, "<br>")
response.write indhold


Funktionen kan smides over i en ekstern fil, f.eks. "func.asp", der så skal inkluderes (før brug) med f.eks:

<!-- #include file="func.asp" -->


Her er koden, som jeg gerne vil have at du tester, og fortæller mig om det virker.. :-)

<%
option explicit
' Med Option Explicit som øverst linie i dokumentet, bliver vi informeret hvis vi bruger variabler vi ikke erklæret
' hvilket typisk typer på, at vi har lavet en stavefejl i navnet på en variabel

' ------ NOTE START -----
' Denne funktion KAN smide i en separat fil, f.eks. med filnavnet "funk.asp"
' Filen "funk.asp" inkluderes så med:
'
' <!-- #include file="funk.asp" -->
'
' Derefter kan funktion sådan: indhold = ret_tekst(indhold)
'
' hvor "indhold" er variablen der indeholder indholdet fra databasen
' ------ NOTE  SLUT -----

function ret_tekst(indhold)

dim max_antal_linieskift
max_antal_linieskift = 2 ' JUSTER DENNE, forklaring: max antal af linieskift/mellemrum mellem teksterne/linier


dim i, linier, iMAL ' iMAL = i og MaxAntalLinieskift

linier = split(indhold, vbCrLf) ' "linier" er nu en array, der indeholder alle linier, delt op pr linie

dim fundet_tekst, nytindhold, linieskift, linie, antal_linieskift

' Nulstil variablerne:
fundet_tekst = false
nytindhold = ""
linieskift = ""
linie = ""
antal_linieskift = 0

for i = lbound(linier) to ubound(linier)
    linie = linier(i) ' så kan man nøjes med at arbejde med "linie", i stedet for at skulle bruge: (i)

    if linie <> "" and fundet_tekst = false then fundet_tekst = true ' hvis det er første linie med tekst, sæt fundet_tekst til sand

    if fundet_tekst = true then ' hvis fundet_tekst er sand, tilføjes indeholdet til nyt indhold

        if linie = "" then antal_linieskift = antal_linieskift + 1 ' til antallet af linieskift op

        if linie <> "" then ' linier er ikke tom, dvs, den indeholder tekst
   
            if antal_linieskift > max_antal_linieskift then antal_linieskift = max_antal_linieskift

            for iMAL = 1 to antal_linieskift ' der dannes linieskiftene

                linieskift = linieskift & vbCrLf ' tilføj linieskift til variablen, der indeholder linieskift

            next

            antal_linieskift = 0 ' nulstil tællereren af linieskift

            nytindhold = nytindhold & linieskift & linie & vbCrLf ' tilføj linien sammen med linieskift til nyt indhold

            linieskift = "" ' nulstil variablen der indeholder linieskift
        end if
    end if
next

nytindhold = left(nytindhold, len(nytindhold) - 2) ' fjern det sidste linieskift, som blev tilføjet af loop'en
ret_tekst = nytindhold
end function
%>

<form name="frm" action="index.asp" method="post">
<textarea name="indhold" style="width:300px;height:200px;"><%=request.form("indhold")%></textarea>
<input type="submit" name="submit" value="Send">
</form>

<%
if request.servervariables("request_method") = "POST" then ' hvis der er submittet, skal der abejdes på de modtagne data (teksten)
dim indhold

indhold = request.form("indhold") 'rs("indhold") ' simulering af data der hentes fra databasen
indhold = ret_tekst(indhold)

indhold = replace(indhold, vbCrLf, "<br>")

response.write indhold ' udskriv indholdet/teksten, så vi kan se den
end if

response.write "<hr>" & now ' tidsstempel, så vi kan se at det er en ny side, der vises
%>
Avatar billede maron Nybegynder
26. juni 2007 - 16:29 #59
Jamen virkede det ikke allerede ved
25/06-2007 17:44:31
Avatar billede thesurfer Nybegynder
26. juni 2007 - 16:40 #60
Jeg går ud fra, at du mener koden fra 25/06-2007 17:41:32..

Nej, for der fjernede den kunne overflødige linieskift, før og efter tekst..

Nu fjerner den overflødige linieskift, før, i og efter tekst.. :-)

Den gamle kode, ville acceptere det her:

a





b

Det gør den nye kode ikke.. den vil lave det om til:

a


b

Max 2 linieskift mellem linierne, da jeg har sat: max_antal_linieskift = 2

Du er velkommen til at rette "2" til noget andet..
Avatar billede maron Nybegynder
26. juni 2007 - 17:05 #61
Ok tak, det prøver jeg.
Avatar billede maron Nybegynder
26. juni 2007 - 18:08 #62
Nej synes ikke koden virker optimalt, jeg kan ikke anvende HTMLencode der opstår et eller andet problem.
Avatar billede maron Nybegynder
26. juni 2007 - 23:59 #63
Det virker altså fuldkommen perfekt :-)
Jeg har bare været overtræt.- takker mange gange for hjælpen.
Avatar billede thesurfer Nybegynder
27. juni 2007 - 01:35 #64
Angående 26/06-2007 18:08:00:

Jeg skulle lige til at hive et kort frem, og finde en øde ø.... :-)

Det var så lidt :-)

Jeg er glad for at du stillede dette spørgsmål..
Jeg skal nemlig til at lave en gæstebog, for en jeg kender, og regner med at bruge dette script.. :-)

- Jeg håber at andre kan bruge det, eller finde inspiration i det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester