webForumDet fria alternativet

Varför syntaxfel?

ASP

20 svar · 610 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1
Sub PageContent(ByVal strPageContent)
  strPageContent = Replace(strPageContent, "[BoxFeaturedProducts]", Call BoxFeaturedProducts)
  Response.Write strPageContent
End Sub

Call BoxFeaturedProducts är också en Sub.

Medlem sedan mars 20023 561 inlägg
#2

Jag tror det fungerar om du tar bort "Call"

Medlem sedan maj 2002821 inlägg
#3

Då blir det Inkompatibla typer: 'BoxFeaturedProducts'.

Medlem sedan aug. 20039 340 inlägg
#4

Instämmer! Call bör du inte använda på det viset. (Eller överhuvudtaget)
Dock så verkar det konstigt att anropa Replace med en sub på det viset, eftersom en sub inte ger något retuvärde.
Vad försöker du åstadkomma?

Medlem sedan maj 2002821 inlägg
#5

Jag loppar ut html-kod från en databas. Men asp-taggarna skrivs inte ut på sidan, endast som text i källkoden.

Medlem sedan aug. 20039 340 inlägg
#6

BoxFeaturedProducts hämtar något från databasen? Detta måste du returnera samt ändra BoxFeaturedProducts till att bli en function, typ så här:

Public Function BoxFeaturedProducts() as String ' Minns inte om det kallas public eller nåt annat i VB. Lämna det som står innan Sub orört.
dim retval as String

...

BoxFeaturedProducts = retval ' Här sätts returvärdet

End Function
Medlem sedan mars 20023 561 inlägg
#7

Tror inte du kan sätta returtyp i asp.

Medlem sedan aug. 20039 340 inlägg
#8

Jo

Medlem sedan mars 20023 561 inlägg
#9

Det tror inte jag.
Detta fungerar inte

<%
Public Function GetString() As String
	Dim s As String

	s = "Hello World!"

	GetString = s
End Function

Response.Write(GetString())
%>

Medans

<%
Public Function GetString()
	Dim s

	s = "Hello World!"

	GetString = s
End Function

Response.Write(GetString())
%>

... detta gör det.

Medlem sedan maj 2002821 inlägg
#10

Så här ser det ut:

HTML-koden ligger i en databas. Koden kan man uppdatera online med hjälp av ett WYSIWYG-verktyg. Vissa färdigprogrammerade element (tex. formulär, bilder etc) i koden ska kunna placeras ut i koden med ett anrop tex. [BoxSignup].

När HTML-koden skrivs ut på webbsidan vill jag att anropet [BoxSignup] ska ersättas med det färdigprogrammerade elementet, tex. en bild eller ett formulär. Därav anropet med en replace och sub. Alla färdigprogrammerade element är subbar eller funktioner.

Medlem sedan feb. 20011 198 inlägg
#11

Hur ser HTML-koden ut?

Förstår jag dig rätt om att du vill ersätta texten "BoxSignup" med en sub och skriva ut ASP-kod??

Medlem sedan maj 2002821 inlägg
#12

Helt rätt men jag vill skriva ut HTML inte ASP. Det är bara vanliga formulär, bilder och tabeller som ska skrivas ut.

Medlem sedan feb. 20011 198 inlägg
#13

Skicka HTML-koden och funktionen.

Medlem sedan maj 2002821 inlägg
#14
Sub BoxFeaturedProducts
	    Response.Write "<table bgcolor=""" & strColor1 & """ border=""0"" cellpadding=""4"" cellspacing=""1"" width=""558"">"
	    Response.Write "<tr>"
	    Response.Write "<td bgcolor=""" & strColor1 & """ width=""558"" height=""20"" align=""center"" valign=""middle"" class=""headline2"" colspan=""2"">" & strTextFeaturedProducts & "</td>"
	    Response.Write "</tr>"
	  Call OpenConn()
      Set rsShowFeaturedProducts = Conn.Execute("SELECT Id, Pid, Product, Description, Price, Vat, ShowDiscount, DiscountPrice, ImgSmall, Img01 FROM tblProducts WHERE Display = True AND Featured = True AND Lang = '" & Request.Cookies("lang") & "' ORDER BY Id DESC")
	  iLoop = 0
      If Not rsShowFeaturedProducts.EOF Then
	  Do Until rsShowFeaturedProducts.EOF
	  If iLoop Mod 2 = 0 Then
	    Response.Write "<tr>"
	  End If
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
      Jpeg.Open strFilePath1 & rsShowFeaturedProducts("Img01")
	  strImageWidth = Jpeg.OriginalWidth
      strImageHeight = Jpeg.OriginalHeight
	  Set Jpeg = Nothing
	    Response.Write "<td bgcolor=""" & strTableColor & """ width=""279"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""269"">"
	    Response.Write "<tr>"
	    Response.Write "<td width=""115"" height=""20"" align=""left"" valign=""middle""><a href=""#"" onClick=""centerpopup('" & strHardLinkUrl & "/inc_productimage.asp?prod=" & rsShowFeaturedProducts("Id") & "&img=" & rsShowFeaturedProducts("Img01") & "&width=" & strImageWidth & "&height=" & strImageHeight & "&windowwidth=" & strImageWidth & "'," & strImageWidth & "," & strImageHeight + 30 & ");""><img src=""" & strHardLinkImageUrl & "/products_small/" & rsShowFeaturedProducts("ImgSmall") & """ width=""110"" height=""110"" border=""0"" alt=""" & strImgTitle & " - " & rsShowFeaturedProducts("Product") & """></a></td>"
	    Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""4"" cellspacing=""0"" width=""154"">"
	    Response.Write "<tr>"
	    Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2""><a href="""" class=""productlink"">" & rsShowFeaturedProducts("Product") & "</a></td>"
	    Response.Write "</tr>"
	    Response.Write "<tr>"
	    Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2"">" & rsShowFeaturedProducts("Description") & "</td>"
	    Response.Write "</tr>"
	  If rsShowFeaturedProducts("ShowDiscount") = True Then
	    Response.Write "<tr>"
        Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2"" class=""productprice"">" & strTextProductOldPrice & ""
		Response.Write "&nbsp;<strike>"
        Call BoxConvertCurrency(rsShowFeaturedProducts("Price"), rsShowFeaturedProducts("Vat"))
		Response.Write "</strike>"
		Response.Write "<br>" & strTextProductDiscountPrice
		Response.Write "&nbsp;<b>"
		Call BoxConvertCurrency(rsShowFeaturedProducts("DiscountPrice"), rsShowFeaturedProducts("Vat"))
		Response.Write "</b>"
		Response.Write "<br>" & strTextProductSave & "&nbsp;"
		Call BoxCalculateSavings(rsShowFeaturedProducts("Price"), rsShowFeaturedProducts("DiscountPrice"), rsShowFeaturedProducts("Vat"))
        Response.Write "</td>"
        Response.Write "</tr>"
	  Else
	    Response.Write "<tr>"
		Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2"" class=""productprice"">" & strTextProductPrice
		Response.Write "&nbsp;<b>"
		Call BoxConvertCurrency(rsShowFeaturedProducts("Price"), rsShowFeaturedProducts("Vat"))
		Response.Write "</b></td>"
        Response.Write "</tr>"
	  End If
	    Response.Write "<tr>"
	    Response.Write "<td width=""77"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""67"" height=""21"">"
		Response.Write "<tr>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_left.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_middle.gif"" width=""49"" height=""21"" align=""center"" valign=""middle""><a href=""" & strHardLinkUrl & "/default.asp"" class=""buttonlink"">" & strTextProductReadMore & "</a></td>"
		Response.Write "<td background=""" & strHardLinkImageUrl & "/button_right.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
	    Response.Write "</tr>"
	    Response.Write "</table></td>"
		Response.Write "<td width=""77"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""67"" height=""21"">"
	    Response.Write "<tr>"
		Response.Write "<td background=""" & strHardLinkImageUrl & "/button_left.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_middle.gif"" width=""49"" height=""21"" align=""center"" valign=""middle""><a href=""" & strHardLinkUrl & "/default.asp"" class=""buttonlink"">" & strTextProductBuy & "</a></td>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_right.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
		Response.Write "</tr>"
	    Response.Write "</table></td>"
	    Response.Write "</tr>"
		Response.Write "</table></td>"
		Response.Write "</tr>"
		Response.Write "</table></td>"
	  iLoop = iLoop + 1
	  If iLoop Mod 2 = 0 Then
		Response.Write "</tr>"
	  End If
	  rsShowFeaturedProducts.MoveNext
	  Loop
	  End If
	  rsShowFeaturedProducts.Close : Set rsShowFeaturedProducts = Nothing
	  Call CloseConn()
		Response.Write "</td>"
		Response.Write "</tr>"
		Response.Write "</table>"
    End Sub
Medlem sedan maj 2002821 inlägg
#15

Det är inget fel på HTML-koden som ska skrivas ut eller själva subben. Problemet ligger i att byta ut [BoxFeaturedProducts] som kommer från databasen mot att anropa subben BoxFeaturedProducts.

Medlem sedan maj 2002821 inlägg
#16

Enklast hade ju varit om man bara kunder spara <% Call BoxFeaturedProducts %> direkt i databasen, men då händer ju inget när man skriver ut HTML-koden från databasen.

Medlem sedan feb. 20011 198 inlägg
#17

Du måste göra om suben till en funktion och returnera den html-koden..

Medlem sedan maj 2002821 inlägg
#18

Men det funkade ju perfekt! Tänk att det var så enkelt... Hade för mig att jag redan provat på att ändra den till en funktion men jaja... tack.

Medlem sedan maj 2002821 inlägg
#19

Fast riktigt så enkelt var det kanske inte. Problemet nu är att funktionen BoxFeaturedProducts skrivs ju ut oavsett om elementet [BoxFeaturedProducts] finns med i databasen eller inte.

Function BoxFeaturedProducts
Response.Write "<table bgcolor=""" & strColor1 & """ border=""0"" cellpadding=""4"" cellspacing=""1"" width=""558"">"
Response.Write "<tr>"...
Sub PageContent(ByVal strPageContent)
strPageContent = Replace(strPageContent, "[BoxFeaturedProducts]", BoxFeaturedProducts)
Response.Write strPageContent
End Sub
Medlem sedan feb. 20011 198 inlägg
#20

Du kan inte ha response.write i funktionen.
Du måste spara det du skriver ut i en variabel och returnera det..

Function BoxFeaturedProducts
Dim v_ret
v_ret = "<table bgcolor=""" & strColor1 & """ border=""0"" cellpadding=""4"" cellspacing=""1"" width=""558"">"
v_ret = v_ret & "<tr>"
BoxFeaturedProducts = v_ret
End Function
263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)