Avatar billede annettef Nybegynder
03. februar 2005 - 09:19 Der er 11 kommentarer og
1 løsning

Replace i hiddenfield - hvordan?

Hej

Jeg har en asp side hvorpå jeg henter noget tekst ud fra min database og lægger det i et hiddenfield. Nu er mit problem at der i den tekst som lægges i hiddenfield nogle gange står f.eks. 15'' TFT skærm, hvilket giver nogle problemer i forhold til min asp kode.

Så er mit spørgsmål - hvordan får jeg lavet en replace funktion på lige præcis det hiddenfield som indeholder teksten?

Min Kode
::::START::::
<%@ Language=VBScript %>
<%
Option Explicit
Dim Conn, DSN, sltid, strSQL, rs, column, vareID, intVareId
Response.Buffer=True
%>
<!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil-->
<!-- #include file="adovbs.inc" -->
<html>

<head>
<title>Vis varer</title>
<Link Rel="stylesheet" href="datronic.css" Type="text/css" > <!-- link til ekstern style sheet -->

<style type="text/css">
<!--
.style1 {color: #FFFFFF}
body {
    margin-top: 0px;
    margin-left: 4px;
}
-->
</style>

<script LANGUAGE="JavaScript"><!--tjekker om indtastede tal er et tal og om det negativt/blank

function AbortEntry(sMsg, eSrc)
{
  window.alert(sMsg);
  // set focus and highlight to the offending error
  eSrc.focus();
  //eSrc.select();
}

function HandleError(eSrc)
{
  // make sure the input is a numeric value
  var val = parseInt(eSrc.value);
  if (isNaN(val))
  {
  return AbortEntry("Du skal indtaste antal varer.", eSrc);
  }

  // make sure the value is not negative
  if (val <= 0)
  {
  return AbortEntry("Du skal indtaste antal varer.", eSrc);
  }
}

//-->
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
  <br>
<%
  vareID = Request.Querystring("intVareId")

' SQL forespørgsel
strSQL = "Select * From vare Where vareid =" & vareID

' Udfør strSQL (rs kommer til at indeholde dataen)
Set rs = Conn.Execute(strSQL)

'oprettelse af indholdstabel
    Response.Write "<table border=0 cellspacing=0 cellpadding=0 width='670' align=left>"
    Response.Write "<tr><td colspan='2' height='18' bgcolor='#545DB9'>"
    'udskriv titel
    Response.Write "<span class='style1'>" & rs("titel") & "</span>"
    Response.Write "</td></tr>"
   
   
    Response.Write "<tr><td colspan='2'> &nbsp; </td></tr>"
    Response.Write "<tr><td width='210' rowspan='10' align='left' valign='top'>"
   
    'udskriv foto2
      if rs("foto2")&"" = "" then
      response.Write "<img src='foto/intet_foto2.jpg' border='0' width='200' height='150'>"
      else     
      Response.Write "<img src=""" & rs("foto2") & """ border='0' width='200' height='150'>"
      end if
     
    Response.Write "<br><br>"
   
    'udskriv foto3
    if rs("foto3")&"" = "" then
      response.Write "<img src='foto/intet_foto3.jpg' border='0' width='200' height='150'>"
      else     
      Response.Write "<img src=""" & rs("foto3") & """ border='0' width='200' height='150'>"
      end if
       
    'udskriv titel igen
    'Response.Write "</td><td><p>" & rs("titel") & "</p></td></tr>"
   
    'udskriv fakta (fast tekst)
    Response.Write "<tr><td><p>" & "Fakta:" & "</p></td></tr>"
    'udskriv beskrivelse fra database
    Response.Write "<tr><td>" & Replace (rs("beskriv"), vbCrLf, "<br>"&vbCrLf) & "</td></tr>" 'Erstatter databasens kode for linieskift vbCrlf med html break
   
       
    'udskriv Model (fast tekst)
    Response.Write "<tr><td><br><p>" & "Model:" & "</p></td></tr>"
    'udskriv model fra database
    Response.Write "<tr><td>" & rs("model") & "</td></tr>"
   
   
    'Response.Write "<tr><td width='210' rowspan='5' align='left' valign='top'>"
   
    'udskriv foto3
    'Response.Write "<img src=""" & rs("foto3") & """ border='0'>"
   
    'udskriv producent (fast tekst)
    Response.Write "</td><td><br><p>" & "Producent:" & "</p></td></tr>"
    'udskriv producent fra database
    Response.Write "<tr><td>" & rs("Producent") & "</td></tr>"
   
    'udskriv pris (fast tekst)
    Response.Write "<tr><td><br><p>" & "Pris:" & "</p></td></tr>"
    'udskriv pris fra database
    Response.Write "<tr><td>Kr.&nbsp;" & rs("pris") & ",- incl. moms</td></tr>"
   
   
    'udskriv læg i vogn knap
    'Response.Write "<tr><td><br><img src='grafik/laeg_i_vogn.gif' border='0'></td></tr>"
    Response.Write "<tr><td><br>"
    Response.Write "<form action='tilfoj.asp' method='post' id='form1' name='form1'>"
    'Response.Write "input type='hidden' name='vareantal' value='1'>"
    Response.Write "<input type='hidden' name='IntVareId' value='" & vareID & "'>"
    Response.Write "<input type='hidden' name='strTitel' value='" & rs("titel") & "'>"
    Response.Write "<input type='hidden' name='strBeskriv' value='" & rs("beskriv") & "'>"
    Response.Write "<input type='hidden' name='strModel' value='" & rs("model") & "'>"
    Response.Write "<input type='hidden' name='intPris' value='" & rs("pris") & "'>"
    Response.Write "<input type='hidden' name='intVaegt' value='" & rs("vaegt") & "'>"
       
    Response.Write "<input type='text' size='3' maxlength='4' name='IntAntal' value='1' onChange='HandleError(this)'>"
    'submit knap, som består af et stykke grafik
    Response.Write "<input type='image' src='grafik/laeg_i_vogn.gif' width=120 height=25 align='absmiddle' name='Submit1' value='tilføj' id='submit1'>"
    'Response.Write "<input type='submit' value='Tilføj varer til indkøbsvogn'>"
    Response.Write "</form></td></tr>"
    Response.Write  "</table>"
       
%>
   
<%       
' Luk forbindelse fra dbconn.inc
Conn.Close
Set Conn = Nothing
%>
   
</body>
</html>
::::SLUT::::

Hiddenfield som indeholder teksten:
Response.Write "<input type='hidden' name='strBeskriv' value='" & rs("beskriv") & "'>"

Håber der en nogen der kan hjælpe mig!

/Annette
Avatar billede annettef Nybegynder
03. februar 2005 - 09:20 #1
Ups, glemte vist lige at skrive at det er ''fiduserne jeg gerne vil have skiftet ud!
Avatar billede fennec Nybegynder
03. februar 2005 - 09:25 #2
Du kan måske bruge server.HTMLEncode() funktionen, så tager du også højde for andre tegn (f.eks < og >):

Response.Write "<input type='hidden' name='strTitel' value='" & server.HTMLEncode(rs("titel")) & "'>"
Avatar billede annettef Nybegynder
03. februar 2005 - 10:12 #3
Tak det virker

Nu har jeg så bare det samme problem på en anden side, men her ser mit hiddefield lidt anderledes ud

<input type="hidden" name="strOrderItem" value="<%= intProdID %>,<%= intQuant %>,<%= strProdName %>,<%= strProdBeskriv %>,<%= strProdModel %>">

det er strProdBeskriv, der giver problemer

Kan jeg bruge den samme funktion her, eller skal jeg gøre det på en anden måde?
Avatar billede fennec Nybegynder
03. februar 2005 - 10:25 #4
Det kunne evt være et linjeskift problem. Er der linjeskift i "strProdBeskriv"???

Løsningen på det problem er at udskifte linjeskift med en kode, som man så kan skifte tilbage til. Her plejer jeg at bruge \n (som jo er JavaScript koden for linjeskift). Denne funktion burde samle det på en linje:

function OneLine(funkText)
  OneLine = server.HTMLencode(replace(funkText,vbcrlf,"\n"))
end function

Problemet er så hvis samme kode rent tilfældig står i teksten, men så kan man bruge en anden kode.
Avatar billede annettef Nybegynder
03. februar 2005 - 10:35 #5
Jeg tror ikke det er på grund af linieskift, for de bliver skiftet ud, når jeg lægger en tekst ind i databasen.

Jeg tror måske jeg får en fejl, fordi der også er , (komma) i den tekst som bliver putte i mit hiddenfield

Et eksempel på et udsnit af en tekst:
3 x USB 2.0 porte, 1xFirewire, 1xParallel port
SD Kortlæser indbygget
1 x pcmcia port, 1 x IR port (infrarød)
10/100 Mbit internt netværkskort
56K V.92 modem

Kan jeg gøre noget ved det?
Avatar billede fennec Nybegynder
03. februar 2005 - 10:42 #6
Det burde være lige meget med komma....

I dette tilfælde er det linjeskift og " der kan drille. Hvis der ikke er linjeskift, burde server.HTMLEncode() klare problemet.
Avatar billede annettef Nybegynder
03. februar 2005 - 10:47 #7
Okay

Men hvordan skal jeg så sætte server.HTMLEncode() ind i denne linie <input type="hidden" name="strOrderItem" value="<%= intProdID %>,<%= intQuant %>,<%= strProdName %>,<%= strProdBeskriv %>,<%= strProdModel %>"> når det er strProdBeskriv det skal bruges på?
Avatar billede fennec Nybegynder
03. februar 2005 - 10:52 #8
sådan:

<input type="hidden" name="strOrderItem" value="<%= intProdID %>,<%= intQuant %>,<%= server.HTMLEncode(strProdName) %>,<%= server.HTMLEncode(strProdBeskriv) %>,<%= server.HTMLEncode(strProdModel) %>">

Jeg har også smidt det på andre felter, da de sikkert også kan skabe problemer...
Avatar billede annettef Nybegynder
03. februar 2005 - 11:05 #9
Tak, nu virker det også

Nu er er bare opstået et andet problem. Når jeg gemmer disse oplysninger fra mine hiddefields i databasen, så bliver teksten i strProdBeskriv delt hvis der er komma i den.

For at tage et eksempel
Beskrivelsen er:
3 x USB 2.0 porte, 1xFirewire, 1xParallel port
SD Kortlæser indbygget
1 x pcmcia port, 1 x IR port (infrarød)
10/100 Mbit internt netværkskort
56K V.92 modem
...men det er kun [3 x USB 2.0 porte] der bliver gemt i beskrivelsesfeltet i det næste felt som hedder model bliver [1xFirewire] gemt i stedet for den tekst som ligger i (strProdModel)

Dette er den side der gemmer oplysningerne i databasen
::::START::::
<%@ Language=VBScript %>
<!-- #include file="db.asp" -->
<!-- #include file="adovbs.inc" -->
<!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil-->

<%
dim rsOrder
dim rsItem
%>
<%
    set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConString

    intOrderID = Request.form("intOrderID")
    intPrice = Request.form("intPrice")
    intProdVaegt = Request.form("intProdVaegt")

    set rsOrder = Server.CreateObject("ADODB.Recordset")
    rsOrder.Open "SELECT * FROM ordre WHERE orderID = " _
        & intOrderID, Conn, adOpenStatic, adLockOptimistic, _
        adCmdText

    if rsOrder.EOF then
        Response.Write "Der er problemer med din ordre. "
        Response.Write "Kontakt venligst Datronic ApS på tlf.: 86 25 63 43."
    else

        rsOrder("fragt") = Request.form("intShipping")
        'rsOrder("tax") = Request.form("intTax")
        rsOrder("fNavn") = Request.form ("strFirst")
        rsOrder("eNavn") = Request.form("strLast")
        rsOrder("email") = Request.form("strEmail")
        rsOrder("adresse1") = Request.form("strAddress1")
        rsOrder("postnr") = Request.form("strPostalCode")
        rsOrder("city") = Request.form("strCity")
        rsOrder("land") = Request.form("strCountry")
        rsOrder("telefon") = Request.form("strPhone")
        rsOrder("shipAdresse") = Request.form("strShipAdresse")
        rsOrder("Betaling") = Request.form("strBetaling")
        rsOrder("total") = Request.form("intTotal")
        rsOrder("orderDate") = now
        rsOrder("status") = "COMPLETE"
        rsOrder.Update
       
        Conn.Execute("DELETE FROM ordrelinie WHERE " _
            & "orderID = " & intOrderID)

        set rsItem = Server.CreateObject("ADODB.Recordset")
        rsItem.Open "ordrelinie", Conn, adOpenStatic, adLockOptimistic, adCmdTable

        for each item in Request.form("strOrderItem")

            strOrderItem = cstr(item)
            itemInfo = split(strOrderItem, ",")

            rsItem.addNew
            rsItem("orderID") = intOrderID
            rsItem("vareid") = itemInfo(0)
            rsItem("antal") = itemInfo(1)
            rsItem("titel") = itemInfo(2)
            rsItem("beskriv") = itemInfo(3)
            rsItem("model") = itemInfo(4)
            rsItem("pris") = intPrice
            'rsItem("vaegt") = intProdVaegt
            rsItem.Update

        next
       
        for each item in Request.form("strOrderItem")
        set rsProduct = Server.CreateObject("ADODB.Recordset")
        rsProduct = "SELECT * FROM vare WHERE vareid=" & intProdID
        next
   
           
           
   
        Session.abandon
       
    end if
   
%>

<%
If Not rsOrder.EOF Or Not rsOrder.BOF Then 'kører igennem rsOrder som indeholder alle oplysninger om kunde + ordrenr.

'MAIL TIL KUNDE
        Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
        Mailer.CharSet = 1
       
        Mailer.FromName = "Datronic NetButik" 'Afsender navn
        Mailer.FromAddress = "noreply@Datronic.dk" 'Afsender e-mail
        Mailer.RemoteHost = "mail.datronic.dk" 'afsender mail
        Mailer.AddRecipient request("strFirst"), request("strEmail") ' Kunde navn og e-mail (hvor mailen sendes til)
        Mailer.AddBCC "Datronic ApS", "bestil@datronic.dk" 'e-mail som kopi af mailen sendes til (butikkens mail)
        Mailer.Subject  = "Din ordre hos Datronic Aps - ordrebekræftelse" 'Emne i mail
       
        tekst = ""
        linie = vbCrLf
       
        if request("strFirst") <> "" then 'hvis fornavn ikke er blak udskrives teksten hej navn
        tekst = tekst & "<font face='verdana' size='2'><b>Hej " & request("strFirst") & linie & linie
        end if
       
        tekst  = tekst & "</font></b><br><font face='verdana' size='1' color='black'>Bemærk! Du kan ikke besvare denne mail.</font>" & linie & linie
        tekst  = tekst & "<br><br><font face='verdana' size='2'>Tak! Fordi du handlede hos Datronic ApS<br>"& linie & linie
        tekst  = tekst & "Følgende ordre er blevet modtaget:</font>" & linie & linie
        tekst  = tekst & "<br><br><font face='verdana' size='1'><strong>Ordrenr:&nbsp;</strong>" & request("intOrderID") & linie & linie & linie & linie 'ordrenr udskrives
        tekst  = tekst & "<br><br><strong>Kundeoplysninger:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strFirst") & "&nbsp;" & request("strLast") & linie & linie & linie & linie 'fornavn og efternavn på kunde udskrives
        tekst  = tekst & "<br>" & request("strAddress1") & linie & linie & linie & linie ' kundeadresse
        tekst  = tekst & "<br>" & request("strPostalCode") & "&nbsp;" & request("strCity") & linie & linie & linie & linie 'postnr og by
        tekst  = tekst & "<br>" & request("strCountry") & linie & linie & linie & linie 'land
        tekst  = tekst & "<br>Tlf.:&nbsp;" & request("strPhone") & linie & linie & linie & linie 'kundens telefonnummer
        tekst  = tekst & "<br><br><strong>E-mail:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strEmail")& linie & linie 'kunde e-mail
        tekst  = tekst & "<br><br><strong>Betalingsform:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strBetaling")& linie & linie 'den valgt betalingsform
        tekst  = tekst & "<br><br><strong>Leveringsadresse:&nbsp;</strong>" & linie & linie & linie & linie
        tekst  = tekst & "<br>" & request("strShipAdresse") & "</font>"& linie & linie 'leveringsadressen
'End If        
'If Not rsItem.EOF Or Not rsItem.BOF Then        'kører igennem rsItem, som indeholder oplysninger om varer i ordren
       
        tekst  = tekst & "<br><br><font face='verdana' size='1'><strong>Ordreindhold:&nbsp;</strong></font>" & linie & linie & linie & linie
        tekst  = tekst & "<table width='470'><tr>"     
        tekst  = tekst & "<td width='13%'><font face='Verdana' size='1'>Antal</font></td>"
        tekst  = tekst & "<td width='13%'><font face='Verdana' size='1'>Vare ID</font></td>"
        tekst  = tekst & "<td width='44%'><font face='Verdana' size='1'>Vare</font></td>"
        tekst  = tekst & "<td width='15%' align='right'><font face='Verdana' size='1'>Pris pr stk</font></td>"
        tekst  = tekst & "<td width='15%' align='right'><font face='Verdana' size='1'>Pris i alt</font></td>"
       
arrId = Split(request.form("intProdID"), ",")
      arrPris = Split(request.form("intPrice"), ", ")
      arrQuant = Split(request.form("intQuant"), ",")
      arrstrProdName = Split(request.form("strProdName"), ", ")
      arrintExtPrice = Split(request.form("intExtPrice"), ", ")
      for i=0 to ubound(arrId)

        tekst  = tekst & "<tr>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & arrQuant(i) & "<br></font></td>"
        tekst  = tekst & "<td width='13%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & arrId(i) & "<br></font></td>"
        tekst  = tekst & "<td width='44%' align='left' valign='middle' nowrap><font face='Verdana' size='1'>" & arrstrProdName(i) & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & arrPris(i) & "<br></font></td>"
        tekst  = tekst & "<td width='15%' align='right' valign='middle' nowrap><font face='Verdana' size='1'>" & arrintExtPrice(i) & "<br></font></td>"
        tekst  = tekst & "</tr>"
      next
        tekst  = tekst & "<tr><td colspan='4'><font face='Verdana' size='1'>Forsendelse</font></td>"
        tekst  = tekst & "<td align='right'><font face='Verdana' size='1'><strong>" & request("intShipping") & "</strong></font></td></tr>"
        tekst  = tekst & "<tr><td colspan='4'><font face='Verdana' size='1'>Kr. total i alt</font></td>"
        tekst  = tekst & "<td align='right'><font face='Verdana' size='1'><strong>" & request("intTotal") & "</strong></font></td></tr></table>"   
       
        tekst  = tekst & "<br><br><font face='verdana' size='2'>Med venlig hilsen"& linie & lilie & linie & linie
        tekst  = tekst & "<br>Datronic ApS / NetButik</font>"& linie & linie & lilie
        tekst  = tekst & "<br><font face='verdana' size='1'>Har du spørgsmål eller er der fejl vedr. din ordre, kontakt da venligst Datronic ApS på <a href='mailto:salg@datronic.dk.dk'><font color=black>salg@datronic.dk</font></a></font>"& linie & linie & linie
        'tekst  = tekst & "<br><br><font color=green>GLÆDELIG JUL</font> <font color=red>&</font> <font color=green>GODT NYTÅR </font>" 'tekst som kan sættes på ved specielle lejligheder fx. jul, ferie
       
        Mailer.BodyText  = tekst
        Mailer.ContentType = "text/html"
        Mailer.SendMail
       
'End If
End If

    rsOrder.Close
    set rsOrder = Nothing

        rsItem.Close
        set rsItem = Nothing

    Conn.Close
    set Conn = Nothing


%>

<html>
<head>
<title>Tak for din bestilling</title>
<Link Rel="stylesheet" href="datronic.css" Type="text/css" > <!-- link til ekstern style sheet -->
<style type="text/css">
<!--
body {
    margin-top: 0px;
    margin-left: 4px;
}
-->
</style>
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
.style2 {color: #000098}
-->
</style>
</head>

<body>
<!--følgende tekst udskrives når ordren er blevet gemt i databasen og mail er sendt til kunde+butik-->
<br><table width="670" cellpadding="0" cellspacing="0">
    <tr>
      <td height="18" bgcolor="#545DB9" colspan="2"><span class="style1">Tak for din bestilling</span></td>
    </tr>
  <tr><td>&nbsp;</td></tr>
  <tr><td>Din ordre med ordrenr. <strong><span class="style2"><%= intOrderID %></span></strong> er blevet afsendt.<br>
  <!-- ordreid udskrives, så kunden kan se ordrenr/ordreid-->
  Du vil om kort tid modtage en e-mail med oplysninger omkring din ordre.</td></tr>
  <tr><td>&nbsp;</td></tr>
  <tr><td>Har du spørgsmål vedr. din ordre kontakt salg på <a href="mailto:salg@datronic.dk">salg@datronic.dk</a></a></td></tr>         
  <tr><td>&nbsp;</td></tr>
  </table>


</body>
</html>
::::SLUT::::

Kan du se hvad det er der går galt?
Avatar billede annettef Nybegynder
03. februar 2005 - 11:06 #10
Og forresten du siger bare til hvis du vil have flere point - for du har jo hjulpet mig ret meget:o)
Avatar billede fennec Nybegynder
03. februar 2005 - 11:13 #11
Du skal bruge noget andet som seperator, som ikke vil forekomme i teksten:

<input type="hidden" name="strOrderItem" value="<%= intProdID %>¤#¤<%= intQuant %>¤#¤<%= server.HTMLEncode(strProdName) %>¤#¤<%= server.HTMLEncode(strProdBeskriv) %>¤#¤<%= server.HTMLEncode(strProdModel) %>">

itemInfo = split(strOrderItem, "¤#¤")

Men du kunne jo også oprette et hidden felt til hver i stedet:
<input type="hidden" name="strOrderItem1" value="<%= intProdID %>">
<input type="hidden" name="strOrderItem2" value="<%= intQuant %>">
<input type="hidden" name="strOrderItem3" value="<%= server.HTMLEncode(strProdName)%>">
...
Avatar billede annettef Nybegynder
03. februar 2005 - 11:27 #12
Tusind tusind tak for hjælpen!
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