Avatar billede dsjk Novice
29. december 2001 - 15:23 Der er 20 kommentarer og
1 løsning

linieskift i textarea

Hej

Jeg har oprettet en nyhedsside, hvor man kan skrive nyheder ind, som så bliver gemt i en access database.
Problemet er bare: Hvordan gemmer jeg, de linieskift som er blevet lavet, når nyheden skrives inde i textarea. So far får jeg kun text i en lang kører?

Gerne en udførlig forklaring/løsning da jeg ikke er 100 meter mester i asp.

jeg har sat koden ind her:

<%
\' *** Edit Operations: declare variables

MM_editAction = CStr(Request(\"URL\"))
If (Request.QueryString <> \"\") Then
  MM_editAction = MM_editAction & \"?\" & Request.QueryString
End If

\' boolean to abort record edit
MM_abortEdit = false

\' query string to execute
MM_editQuery = \"\"
%>
<%
\' *** Insert Record: set variables

If (CStr(Request(\"MM_insert\")) <> \"\") Then

  MM_editConnection = MM_cdsj_STRING
  MM_editTable = \"nyheder\"
  MM_editRedirectUrl = \"admnyhed.asp\"
  MM_fieldsStr  = \"frm_navn|value|frm_email|value|frm_emne|value|frm_besked|value\"
  MM_columnsStr = \"navn|\',none,\'\'|email|\',none,\'\'|emne|\',none,\'\'|besked|\',none,\'\'\"

  \' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, \"|\")
  MM_columns = Split(MM_columnsStr, \"|\")
 
  \' set the form values
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
  Next

  \' append the query string to the redirect URL
  If (MM_editRedirectUrl <> \"\" And Request.QueryString <> \"\") Then
    If (InStr(1, MM_editRedirectUrl, \"?\", vbTextCompare) = 0 And Request.QueryString <> \"\") Then
      MM_editRedirectUrl = MM_editRedirectUrl & \"?\" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & \"&\" & Request.QueryString
    End If
  End If

End If
%>
<%
\' *** Insert Record: construct a sql insert statement and execute it

If (CStr(Request(\"MM_insert\")) <> \"\") Then

  \' create the sql insert statement
  MM_tableValues = \"\"
  MM_dbValues = \"\"
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    FormVal = MM_fields(i+1)
    MM_typeArray = Split(MM_columns(i+1),\",\")
    Delim = MM_typeArray(0)
    If (Delim = \"none\") Then Delim = \"\"
    AltVal = MM_typeArray(1)
    If (AltVal = \"none\") Then AltVal = \"\"
    EmptyVal = MM_typeArray(2)
    If (EmptyVal = \"none\") Then EmptyVal = \"\"
    If (FormVal = \"\") Then
      FormVal = EmptyVal
    Else
      If (AltVal <> \"\") Then
        FormVal = AltVal
      ElseIf (Delim = \"\'\") Then  \' escape quotes
        FormVal = \"\'\" & Replace(FormVal,\"\'\",\"\'\'\") & \"\'\"
      Else
        FormVal = Delim + FormVal + Delim
      End If
    End If
    If (i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & \",\"
      MM_dbValues = MM_dbValues & \",\"
    End if
    MM_tableValues = MM_tableValues & MM_columns(i)
    MM_dbValues = MM_dbValues & FormVal
  Next
  MM_editQuery = \"insert into \" & MM_editTable & \" (\" & MM_tableValues & \") values (\" & MM_dbValues & \")\"

  If (Not MM_abortEdit) Then
    \' execute the insert
    Set MM_editCmd = Server.CreateObject(\"ADODB.Command\")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> \"\") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
set nyheder = Server.CreateObject(\"ADODB.Recordset\")
nyheder.ActiveConnection = MM_cdsj_STRING
nyheder.Source = \"SELECT * FROM fnyheder ORDER BY dato ASC\"
nyheder.CursorType = 0
nyheder.CursorLocation = 2
nyheder.LockType = 3
nyheder.Open()
nyheder_numRows = 0
%>
<html>
Avatar billede dth Nybegynder
29. december 2001 - 15:26 #1
streng = Replace(streng, vbCrlf, \"<BR>\")
Avatar billede dsjk Novice
29. december 2001 - 15:27 #2
hvor og hvordan skal den indsættes?

dsjk
Avatar billede dth Nybegynder
29. december 2001 - 15:30 #3
Hvad hedder variablen hvor dine inputs fra Textareaet ligger??
Avatar billede dsjk Novice
29. december 2001 - 15:32 #4
selve textarea hedder

\"frm_besked\"

dsjk
Avatar billede dth Nybegynder
29. december 2001 - 15:34 #5
Ja den hiver du så over i en variable med

streng = Request.form(\"frm_besked\")

Men hvad hedder den streng??
Avatar billede dth Nybegynder
29. december 2001 - 15:36 #6
Prøv dette

If (i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & \",\"
      MM_dbValues = MM_dbValues & \",\"
    End if
    MM_tableValues = MM_tableValues & MM_columns(i)
    MM_dbValues = MM_dbValues & FormVal
  Next
*** mm_dbValues = Replace(MM_dbValues, VbCrLf, \"<BR>\")
  MM_editQuery = \"insert into \" & MM_editTable & \" (\" & MM_tableValues & \") values (\" & MM_dbValues & \")\"

  If (Not MM_abortEdit) Then
    \' execute the insert
    Set MM_editCmd = Server.CreateObject(\"ADODB.Command\")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close
Avatar billede dsjk Novice
29. december 2001 - 15:39 #7
Det ser ud til at virke. jeg arbejder lige lidt mere på det, og vender tilbage.

tak
dsjk
Avatar billede dth Nybegynder
29. december 2001 - 15:40 #8
Det jeg har tilføjet er det efter *** dem skal du selvfølgelig ikke tage med over..... :-)
Avatar billede dth Nybegynder
29. december 2001 - 15:40 #9
OK....
Avatar billede dsjk Novice
29. december 2001 - 15:53 #10
ok, det virker ok.
Men jeg har lige en ting til.

Man kan også rette i nyhederne efter de er skrevet ind. Hvis man skal rette en nyhed kommer den frem i et textarea, men her står \"<br>\" kan jeg så lave disse om til linieskift, samt, når den rettede nyhed gemmes, lave både gl. og nye linieskift om til <br> igen?

jeg har prøvet at sætte samme sætning ind i følgende kode, men det ser ikke helt ud til at du. (sætningen er ikke med her)

<%
\' *** Edit Operations: declare variables

MM_editAction = CStr(Request(\"URL\"))
If (Request.QueryString <> \"\") Then
  MM_editAction = MM_editAction & \"?\" & Request.QueryString
End If

\' boolean to abort record edit
MM_abortEdit = false

\' query string to execute
MM_editQuery = \"\"
%>
<%
\' *** Update Record: set variables

If (CStr(Request(\"MM_update\")) <> \"\" And CStr(Request(\"MM_recordId\")) <> \"\") Then

  MM_editConnection = MM_cdsj_STRING
  MM_editTable = \"nyheder\"
  MM_editColumn = \"newsid\"
  MM_recordId = \"\" + Request.Form(\"MM_recordId\") + \"\"
  MM_editRedirectUrl = \"admnyhed.asp\"
  MM_fieldsStr  = \"frm_dato|value|frm_navn|value|frm_emne|value|frm_besked|value\"
  MM_columnsStr = \"dato|#,none,NULL|navn|\',none,\'\'|emne|\',none,\'\'|besked|\',none,\'\'\"

  \' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, \"|\")
  MM_columns = Split(MM_columnsStr, \"|\")
 
  \' set the form values
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
  Next

  \' append the query string to the redirect URL
  If (MM_editRedirectUrl <> \"\" And Request.QueryString <> \"\") Then
    If (InStr(1, MM_editRedirectUrl, \"?\", vbTextCompare) = 0 And Request.QueryString <> \"\") Then
      MM_editRedirectUrl = MM_editRedirectUrl & \"?\" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & \"&\" & Request.QueryString
    End If
  End If

End If
%>
<%
\' *** Update Record: construct a sql update statement and execute it

If (CStr(Request(\"MM_update\")) <> \"\" And CStr(Request(\"MM_recordId\")) <> \"\") Then

  \' create the sql update statement
  MM_editQuery = \"update \" & MM_editTable & \" set \"
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    FormVal = MM_fields(i+1)
    MM_typeArray = Split(MM_columns(i+1),\",\")
    Delim = MM_typeArray(0)
    If (Delim = \"none\") Then Delim = \"\"
    AltVal = MM_typeArray(1)
    If (AltVal = \"none\") Then AltVal = \"\"
    EmptyVal = MM_typeArray(2)
    If (EmptyVal = \"none\") Then EmptyVal = \"\"
    If (FormVal = \"\") Then
      FormVal = EmptyVal
    Else
      If (AltVal <> \"\") Then
        FormVal = AltVal
      ElseIf (Delim = \"\'\") Then  \' escape quotes
        FormVal = \"\'\" & Replace(FormVal,\"\'\",\"\'\'\") & \"\'\"
      Else
        FormVal = Delim + FormVal + Delim
      End If
    End If
    If (i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & \",\"
    End If
    MM_editQuery = MM_editQuery & MM_columns(i) & \" = \" & FormVal
  Next
  MM_editQuery = MM_editQuery & \" where \" & MM_editColumn & \" = \" & MM_recordId

  If (Not MM_abortEdit) Then
    \' execute the update
    Set MM_editCmd = Server.CreateObject(\"ADODB.Command\")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> \"\") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim nyheder__MMColParam
nyheder__MMColParam = \"1\"
if (Request.QueryString(\"newsid\") <> \"\") then nyheder__MMColParam = Request.QueryString(\"newsid\")
%>
<%
set nyheder = Server.CreateObject(\"ADODB.Recordset\")
nyheder.ActiveConnection = MM_cdsj_STRING
nyheder.Source = \"SELECT * FROM fnyheder WHERE newsid = \" + Replace(nyheder__MMColParam, \"\'\", \"\'\'\") + \"\"
nyheder.CursorType = 0
nyheder.CursorLocation = 2
nyheder.LockType = 3
nyheder.Open()
nyheder_numRows = 0
%>
<html>

Avatar billede dth Nybegynder
29. december 2001 - 16:04 #11
Du laver den bare omvendt, når du henter ind fra databasen lægger du over i en streng først og gør derefter sådan:

streng = Replace(streng, \"<BR>\", VbCrLf)

Og så <textarea>strng</textarea>

/trier :-)
Avatar billede dsjk Novice
29. december 2001 - 16:28 #12
Det havde jeg næsten regnet ud, men jeg kan ikke helt få det til at virke.

Kan du hjælpe med det?

ovenstående er koden til at rette nyheden med, og nedenstående er selve html koden hvor textarea laves
<textarea name=\"frm_besked\" cols=\"43\" rows=\"5\"><%=(nyheder.Fields.Item(\"besked\").Value)%></textarea>

på forhånd tak

dsjk

Avatar billede dth Nybegynder
29. december 2001 - 16:35 #13
Jeg kan ikke helt gennemskue dine koder, mfor jeg tror vi arbejder på to forskellige måder, men hvis jeg forstår det rigtigt så kan du gøre sådan

<%
strBesked = nyheder.Fields.Item(\"Besked\").Value
strBesked = Replace(strBesked, \"<BR>\", vbCrLf)
%>
<Textarea name=\"frm_besked\" cols=\"43\" rows=\"5\"><%=strBesked%></textarea>

Prøv det....

/trier:-)
Avatar billede dsjk Novice
29. december 2001 - 16:41 #14
ok, så er jeg med, jeg misforstod lidt hvad du mente, men kan godt se fornuften i det nu. Det virker, nu bliver det dog ikke gemt linieskift nå jeg har rettet.

jeg har prøvet den første sætningen, men den dur ikke, og jeg kan ikke helt se hvilken variable det bliver smidt i når jeg gemmer

dsjk
Avatar billede dth Nybegynder
29. december 2001 - 16:43 #15
Kan du ikke lige prøve at klippe det kode ud du bruger til at opdatere nyheden med??
Avatar billede dsjk Novice
29. december 2001 - 16:45 #16
<%
\' *** Edit Operations: declare variables

MM_editAction = CStr(Request(\"URL\"))
If (Request.QueryString <> \"\") Then
  MM_editAction = MM_editAction & \"?\" & Request.QueryString
End If

\' boolean to abort record edit
MM_abortEdit = false

\' query string to execute
MM_editQuery = \"\"
%>
<%
\' *** Update Record: set variables

If (CStr(Request(\"MM_update\")) <> \"\" And CStr(Request(\"MM_recordId\")) <> \"\") Then

  MM_editConnection = MM_cdsj_STRING
  MM_editTable = \"nyheder\"
  MM_editColumn = \"newsid\"
  MM_recordId = \"\" + Request.Form(\"MM_recordId\") + \"\"
  MM_editRedirectUrl = \"admnyhed.asp\"
  MM_fieldsStr  = \"frm_dato|value|frm_navn|value|frm_emne|value|frm_besked|value\"
  MM_columnsStr = \"dato|#,none,NULL|navn|\',none,\'\'|emne|\',none,\'\'|besked|\',none,\'\'\"

  \' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, \"|\")
  MM_columns = Split(MM_columnsStr, \"|\")
 
  \' set the form values
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
  Next

  \' append the query string to the redirect URL
  If (MM_editRedirectUrl <> \"\" And Request.QueryString <> \"\") Then
    If (InStr(1, MM_editRedirectUrl, \"?\", vbTextCompare) = 0 And Request.QueryString <> \"\") Then
      MM_editRedirectUrl = MM_editRedirectUrl & \"?\" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & \"&\" & Request.QueryString
    End If
  End If

End If
%>
<%
\' *** Update Record: construct a sql update statement and execute it

If (CStr(Request(\"MM_update\")) <> \"\" And CStr(Request(\"MM_recordId\")) <> \"\") Then

  \' create the sql update statement
  MM_editQuery = \"update \" & MM_editTable & \" set \"
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    FormVal = MM_fields(i+1)
    MM_typeArray = Split(MM_columns(i+1),\",\")
    Delim = MM_typeArray(0)
    If (Delim = \"none\") Then Delim = \"\"
    AltVal = MM_typeArray(1)
    If (AltVal = \"none\") Then AltVal = \"\"
    EmptyVal = MM_typeArray(2)
    If (EmptyVal = \"none\") Then EmptyVal = \"\"
    If (FormVal = \"\") Then
      FormVal = EmptyVal
    Else
      If (AltVal <> \"\") Then
        FormVal = AltVal
      ElseIf (Delim = \"\'\") Then  \' escape quotes
        FormVal = \"\'\" & Replace(FormVal,\"\'\",\"\'\'\") & \"\'\"
      Else
        FormVal = Delim + FormVal + Delim
      End If
    End If
    If (i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & \",\"
    End If
    MM_editQuery = MM_editQuery & MM_columns(i) & \" = \" & FormVal

  Next
  MM_editQuery = MM_editQuery & \" where \" & MM_editColumn & \" = \" & MM_recordId

  If (Not MM_abortEdit) Then
    \' execute the update
    Set MM_editCmd = Server.CreateObject(\"ADODB.Command\")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> \"\") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim nyheder__MMColParam
nyheder__MMColParam = \"1\"
if (Request.QueryString(\"newsid\") <> \"\") then nyheder__MMColParam = Request.QueryString(\"newsid\")
%>
<%

set nyheder = Server.CreateObject(\"ADODB.Recordset\")
nyheder.ActiveConnection = MM_cdsj_STRING
nyheder.Source = \"SELECT * FROM fnyheder WHERE newsid = \" + Replace(nyheder__MMColParam, \"\'\", \"\'\'\") + \"\"
nyheder.CursorType = 0
nyheder.CursorLocation = 2
nyheder.LockType = 3
nyheder.Open()
nyheder_numRows = 0
%>
<html>
Avatar billede dth Nybegynder
29. december 2001 - 16:55 #17
Jeg er ved at fatte lidt af koderne... Men måden du har lavet din SQL på gør det lidt vanskeligt...
Men jeg giver ikke op, skal nok finde en løsning...

/trier
Avatar billede dsjk Novice
29. december 2001 - 16:57 #18
grunden til SQL ser lidt anderledes ud er at det er Dreamweaver, det har lavet det meste af det.

takker, jeg prøver også selv lidt frem.

dsjk
Avatar billede dth Nybegynder
29. december 2001 - 16:59 #19
Prøv med
\' set the form values
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
    If MM_fields(i) = \"frm_besked\" then
      MM_fields(i+1) = Replace(MM_Fields(i+1), vbCrLf, \"<BR>\")
    End if
  Next

/Trier :-)
Avatar billede dsjk Novice
29. december 2001 - 17:06 #20
Det må jeg nok sige, det virker sgu også.

jeg både bukker og nejer samtidig med jeg takker mange gange for hjælpen. Jeg har hævet pointene til 40, som du får.

Jeg skal have et sæt magen til med referater, men der kan jeg forhåbentlig kopiere og rettet i disse svar.

menge tak

dsjk
Avatar billede dth Nybegynder
29. december 2001 - 17:16 #21
Glad for at kunne hjælpe... *SS*
Spørg endelig hvis du skal bruge mere hjælp...

/trier :-)
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