Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Behoud van hard returns in ASP??

Anoniem
None
11 antwoorden
  • 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)%>>
  • [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"), "
    ", "<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!
  • 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
  • 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.
  • 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.
  • 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
  • Inmiddels weet ik wat de nadelen zijn. Ook de zachte returns worden vertaald naar harde returns. Het ligt er dus maar net aan hoe groot het invoerveld is.

    Elja, kan je mij vertellen hoe ik je replace script [b:7dbc3e1495]precies [/b:7dbc3e1495]moet gebruiken!
  • 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 en 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
  • 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 ;)
  • Dat zal best ja, maar een simpele replace is over het algemeen toch sneller dan een complete regular exprossion… Althans, met PHP is dat in ieder geval wel zo ;)
  • 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.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.