webForumDet fria alternativet

Länka till en sida med hjälp av sträng

ASP

18 svar · 1 920 visningar · startad av bikic

Medlem sedan juni 2006261 inlägg
Frågan#1

Hej alla,

jag har en utmaning. Finns det något sätt att länka, på samma sätt som man gör med en include-fil, i en sträng?

Normalt kan man hämta information från en sida med hjälp av en include-fil. Ex. <!-- #INCLUDE virtual="include/header.asp" -->

Jag har nu skapat en replacefunktion i ett adminverktyg som gör det möjligt att skriva "shortcodes" som ex. [login]. När jag skriver detta vill jag hämta information från en speciell sida på samma sätt som med en include, någon som kan ge mig tips på detta?

Jag skriver [login] i en textarea i mitt adminverktyg, denna ska ersättas med en include-fil som då ska visa innehållet i include-filen. Är detta möjligt?

Medlem sedan juni 2006261 inlägg
#2

Okej, en massa views men inga svar - jag har väl formulerat mig dåligt igen ;)

För att göra en lång historia kort.

Jag har olika moduler för att visa nyheter, produkter och andra goda saker. Dessa vill jag kunna anropa om man ex. anger [callNews] i en textarea i ett adminverktyg.

Jag har testar fram och tillbaka men jag får det inte till att fungera. En tanke var att använda mig av includefiler, men detta går tydligen inte. Jag fick då tipset om Server.Execute, men det klarar inte IIS:n av på min server. Då fick jag idén om subs. Är detta möjligt?

Min replacefunktion ser ut så här:


Function shortcodes(strString)
    
    strString = Replace(strString, "[callNews]", "Här vill jag hämta nyhetsmodulen.")

    shortcodes = strString

End Function
Medlem sedan juni 20019 519 inlägg
#3

Server.Execute är inte alls det du är ute efter, då du inte kan få ut strängen ifrån server.Execute. Inte heller en Metod(sub) då en sub inte retunera något

Medlem sedan juni 2006261 inlägg
#4

Voigt: Vart är tipsen då? ;)

Hur kan jag gå vidare? Är det så enkelt att det inte går? Hoppas verkligen inte att det är så.

Medlem sedan juni 2006261 inlägg
#5

Tar upp en gammal tråd igen som inte är löst för mig.

Jag har som sagt en adminpanel, här använder jag mig av vissa kortkommandon såsom (b)(/b) bold och andra bra metoder.

Vad jag också vill är att man ska kunna skriva [callNews] för att kunna visa de senaste nyheterna, [callSubNav] för att visa subnavigeringen osv osv.

Funktionen för att hantera kortkommandon ser ut så här:

Function shortcodes(strString)

    strString = Reggex(strString, "\[b\]", "<strong>")
    strString = Reggex(strString, "\[\/b\]", "</strong>")
    strString = Replace(strString, "[callNews]", "nyhetsfunktionen")

    shortcodes = strString

End Function

När jag hämtar exempelvis en text från en sida så ser det ut så här:


Response.Write shortcodes(Recset("fldText"))

Koden för nyheterna ser ut så här:


Set RecSet2 = Server.CreateObject("ADODB.Recordset")
SQL2 = "SELECT TOP 1 * FROM tblNews ORDER BY fldDate DESC"
RecSet2.Open SQL2, Connect, 1, 2
					
	If Recset2.EOF Then
	Else
						
		Do Until Recset2.EOF
							
			Response.Write "Nyhetsrubik, text och datum..."
							
		Recset2.Movenext
		Loop
					
	End If
					
RecSet2.Close
Set RecSet2 = Nothing

Jag vet bara inte hur jag ska få till det. Det borde ju inte vara så svårt.

Mycket tacksam för svar!

Medlem sedan juni 20019 519 inlägg
#6

Skapa en funktion som retunera din kod som en sträng och kör den den.

function s()
dim str
str = "Hej på dig"
str = str & " voigtan!"

s = str
End Function

Så byt ut din response.write kod till att bygga upp den och retunera den. Förstå inte vad det svåra är (du har ju gjort detta med javascript, principen är densamma i ASP).

sen:

	If Recset2.EOF Then
	Else

Skriv om det till If Not RecSet2.EOF, om du inte skall skriva ut något om den är EOF så är det bara onödigt att skriva det.

Medlem sedan juni 2006261 inlägg
#7

Jo, jag vet att man kan bygga det så men det funkar inte. Har verkligen försökt.

strString = Replace(strString, "[callNews]", callNews)
function callNews()

dim str

Set RecSet2 = Server.CreateObject("ADODB.Recordset")
SQL2 = "SELECT TOP 1 * FROM tblNews ORDER BY fldDate DESC"
RecSet2.Open SQL2, Connect, 1, 2
					
	If Recset2.EOF Then
	Else
		str = "<div class=""grid-31"">"				
		Do Until Recset2.EOF
							
			str = str & "Nyhetsrubik, text och datum..."
							
		Recset2.Movenext
		Loop
		str = str & "</div>"			
	End If
					
RecSet2.Close
Set RecSet2 = Nothing

End function
Medlem sedan juni 20019 519 inlägg
#8

Din funktion retunera ju inget. låt den retunera str

...
Set RecSet2 = Nothing
callNews = str

End Function
Medlem sedan juni 2006261 inlägg
#9

Glömde den nu när jag skrev.

Här är ett konstigt felmeddelande jag får när jag gör i exemplet ovan:


Active Server Pages, ASP 0107 (0x80004005)
Datan som behandlas ligger över den tillåtna nivån.
/presentation/default.asp
Medlem sedan juni 20019 519 inlägg
#10

Var är Connect i din funktion? du måste få med den, antingen skapar du upp den i din funktion eller så inkludera du den i din funktion när du anropar den (parameter in i din funktion).

Medlem sedan juni 2006261 inlägg
#11

Den finns innan och avslutas direkt efter.

Medlem sedan juni 20019 519 inlägg
#12

Nej, det gör den inte alls.

set connection = ....
function callNews()
...
End function
Set Connection = Nothing

sen anropar du din funktion på x antal rader längre ner.... där har du inte ett Connection objekt.

Medlem sedan juni 2006261 inlägg
#13

Jag menar i min fil givetvis, inte i koden ovan.

Högst upp på sidan så connectar jag till databasen och längst ner på sidan så avslutar jag.

Medlem sedan juni 20019 519 inlägg
#14

bikic skrev:

Jag menar i min fil givetvis, inte i koden ovan.

Högst upp på sidan så connectar jag till databasen och längst ner på sidan så avslutar jag.

Ja, men var ligger dina metoder? felmeddelandet är med 99% säkerhet att Connect inte finns och kan då inte heller ansluta sig till en databas.

Medlem sedan juni 2006261 inlägg
#15

Ok, ska kolla ytterligare en gång.

Medlem sedan juni 2006261 inlägg
#16

Fick det faktiskt till att fungera igår, det hade något med kopplingen att göra. Saker och ting hämtades i fel ordning, kan lätt bli så med includefiler.

Tack!

Men nu uppstod ett annat fel ;)

Funktionen callNews förekommer nu överallt där shortcodes() finns. Verkar inte som om den triggas av:

Function shortcodes(strString)

    strString = Replace(strString, "[callNews]", callNews)

    shortcodes = strString

End Function

Den förekommer oavsett om jag skriver [callNews] i texten eller inte.

Medlem sedan juni 20019 519 inlägg
#17

Anropar en funktion skall ALLTID ha ()

Fick det faktiskt till att fungera igår, det hade något med kopplingen att göra. Saker och ting hämtades i fel ordning, kan lätt bli så med includefiler.

Tack!

Beror helt och hållet hur du kodar, om du bygger kod rätt så spelar bara det någon roll när du kör koder.

Medlem sedan juni 2006261 inlägg
#18

Jag hade min funktionsfil med shortcodes, callnews och andra funktioner innan min header och det var i headern jag öppnade databasen. Men det är sånt man inte tänker på först när man behöver det. Har fungerat för mig i alla år.

Tack för hjälpen och tack för ett fantastiskt forum!

Ha en trevlig fredag!

Medlem sedan juni 2006261 inlägg
#19

Att tillägga så har mina tidigare funktioner inte baserat på en databasfråga.

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)