Ga naar inhoud

Behoud van hard returns in ASP??


Aanbevolen berichten

Kan iemand mij vertellen hoe ik de harde returns van gebruikers behoud in het volgende script...tekstveld. En met een <br> opsla in de database. Dank.... Mattn <br>Hier de tekst<br> <textarea name='Tekst' cols="63" rows="4"><%=Geouwehoer.Value("Tekst")%></textarea><br><br><br> <input type="submit" name="$SubmitChanges" value="bewerken" <%=SetupADOAction(Geouwehoer, false)%>>
Link naar reactie
[quote:37caea42de]Kan iemand mij vertellen hoe ik de harde returns van gebruikers behoud in het volgende script...tekstveld. En met een <br> opsla in de database. Dank.... Mattn [/quote:37caea42de] [code:1:37caea42de]<br>Hier de tekst<br> <textarea name='Tekst' cols="63" rows="4"><%=Geouwehoer.Value("Tekst")%></textarea><br><br><br> <input type="submit" name="$SubmitChanges" value="bewerken" <%=SetupADOAction(Geouwehoer, false)%>>[/code:1:37caea42de] OK, volgens mij moet het ongeveer zo......let wel, ik heb het niet getest! Je moet de waarde van de textarea uitlezen en even bewerken met een Replace commando (ervan uitgaande dat je VBScript gebruikt voor je ASP code!) [code:1:37caea42de]<html> <body> <form action="foo.asp" method="post"> <textarea name='Tekst' cols="63" rows="4"><%=text.Value("Tekst")%></textarea> <br> <input type="submit" value="Submit"> </form> <% If Request.Form("Tekst")<>"" Then nieuweTekst = Replace(Request.Form("Tekst"), "\r", "<br>") # en/òf nieuweText = Replace(Request.Form("Tekst"), "\n", "<br>") # En vervolgens kan je het in een database opslaan. End If %> </body> </html>[/code:1:37caea42de] Ik hoop dat je er wat aan hebt....................succes ermee!
Link naar reactie
Ehm, bovenstaande zal vast ook wel werken, maar ziet er meer java/c++ achtig uit. Zal het eens een keer gaan proberen.. ;) Persoonlijk doe ik de replace altijd zo: sTekst = replace(sTekst, vbCrLf, "<br>") Dat werkt in elk geval ook. Je kunt er trouwens ook nog voor kiezen om dit te doen op het moment dat je de code afbeeld ipv wanneer je 'm opslaat. Scheelt niet echt veel, maar is handiger als je een edit-functie gebruikt. Hoef je niet alles terug te brengen met een tegenovergestelde replace functie.. Elja
Link naar reactie
Mijn ervaring is dat als ik de tekst met <br> erin opsla in de database dat ik dan vaker een conversiefunctie moet gebruiken dan wanneer ik het bericht met gewone linebreaks opsla in de dbase en pas voor weergave de <br>'s erin bouw. Als je de tekst muteerbaar wil maken in een textarea zou je nl. eerst terug moeten vervangen naar vbCrLf en bij opslaan weer naar <br>. En dan doel ik met name op forumberichten als deze, waarin tags gebruikt kunnen worden. Ik heb zelf ook een dergelijke toepassing gemaakt, waarin ik de berichten in html in de dbase opsla, maar dan in geval van bewerken eerst alle html naar tags moet vervangen en daarna bij opslaan weer terug. Makkelijker is dus om de berichten met tags op te slaan en pas bij weergave van een topic de tags naar html te vervangen.
Link naar reactie
Hartstikke bedankt voor jullie reacties. Ik zal ze zeker gaan testen. Nadat ik mijn oproep geplaatst had ben ik echter in het forum gaan zoeken, beetje verkeerde volgorde ok. Nergens een antwoord op mijn vraag, maar wel bruikbare gedeeltes. Ik heb er het volgende van gemaakt. Het tekstinvoerveld: <textarea name='Tekst' cols="63" rows="4" [b:a385407523]wrap="hard"[/b:a385407523]><%=text.Value("Tekst")%></textarea> (ik heb er wrap="hard" aan toegevoegd! En in het view-scherm heb ik de tekst tussen <pre>tekst</pre> gezet. Dit werkt uitstekend en ik kan nog geen nadelen ontdekken. Misschien weten jullie die? Nogmaals bedankt Mattn.
Link naar reactie
Hmm, zo heb ik het ook ooit eens gedaan ja.. Leek op het eerste gezicht prima en ik weet ook niet precies meer wat er mis mee was. Ik geloof dat het problemen gaf bij het weergeven van de pagina's. Dat nu alles een bepaalde lengte moest zijn, oid.. Helaas schiet het me nu niet te binnen. Als ik jouw was zou ik toch gaan voor de hier eerder genoemde oplossing. Persoonlijk gebruik ik een extern bestandje met zelfgemaakte functie's om de tekst op te maken (dus met <!--#INCLUDE bestand.asp --> oid..) :) Dat werkt wel lekker als je dezelfde tekstopmaak op verschillende pagina's wilt tonen. Kun je ook smileys in toevoegen, of je 'eigen' html codes. Kijk maar eens op m'n website (zie onder) voor een 'life-example' ;) Elja
Link naar reactie
Sja, het opslaan doe je dus gewoon op de normale manier. De gebruiker tikt de tekst in in een textarea en middels de sumbit schrijf je de tekst, zonder deze aan te passen, weg in de database. Dan zal de code om de tekst te weergeven er ongeveer zo uit kunnen zien: [code:1:f3dc37a9e2] <html> <head> <title>blabla</title> </head> <body> <b>De geschreven tekst:</b><br> <% 'Open database connectie (niet getoond hier) Dim sTekst 'Declare de variabele sTekst = rs.Fields.Item("tekst").Value 'Haal de tekst uit de database 'Sluit de database connectie (ook niet getoond hier) sTekst = replace(sTekst, vbCrLf, "<br>") 'Zet enters om in br's. response.write(sTekst) %> </body> </html> [/code:1:f3dc37a9e2] Dit zou genoeg moeten zijn. Wil je nu bijvoorbeeld ook nog voorkomen dat de tekstschrijver html-code kan gebruiken (daarmee zou ie tenslotte je site overhoop kunnen halen) zet deze dan VOORDAT je de enters omzet om in normale tekst: <% sTekst = server.HTMLEncode(sTekst) %> Eventueel kun je nu ook nog bijvoorbeeld je eigen html-ripoff maken. Door bijvoorbeeld [b:f3dc37a9e2]bold[/b:f3dc37a9e2] toe te staan (zoals op deze site dus). :-) Hier doe je dit door [ b ] en [ / b ] zonder de spaties te gebruiken. Simpel: [code:1:f3dc37a9e2] <% sTekst = replace(sTekst, "[b]", "<b>") sTekst = replace(sTekst, "[B]", "<b>") sTekst = replace(sTekst, "[/b]", "</b>") sTekst = replace(sTekst, "[/B]", "</b>") 'offe.. smilies.. sTekst = replace(sTekst, ":)", "<img src="images/smiley.gif">") [/code:1:f3dc37a9e2] Dit moet je dan dus allemaal uitvoeren nadat je de html code die de schrijver evt. heeft gebruikt hebt omgezet naar normale tekst. Hopelijk is het allemaal een beetje duidelijk zo.. Anders hoor ik het wel.. Succes! Elja
Link naar reactie
is er geen regExp object dat je kunt gebruiken? want dit: [code:1:162adbd45a] sTekst = replace(sTekst, "[b]", "<b>") sTekst = replace(sTekst, "[B]", "<b>") sTekst = replace(sTekst, "[/b]", "</b>") sTekst = replace(sTekst, "[/B]", "</b>") [/code:1:162adbd45a] doet gewoon pijn aan mijn regexp-ziel ;)
Link naar reactie
Als ik een klein testje uitvoer, dan gaat mijn enkele preg_replace een stuk sneller dan 4 str_replaces. Als er maar 1 str_replace wordt uitgevoerd zou dat wel sneller zijn ja. En bij een moeilijkere regexp wordt het weer wat anders, dat is dus nogal variabel, omdat perl-compatible regexps aan backtracking doen en dat [i:30c7640532]kan[/i:30c7640532] dus langer duren.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...