[ASP] Code uit dbase uitvoeren

Pagina: 1
Acties:

  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Hallo,

Ik heb een pagina, waarop via een recordset een bepaald tekstveld uit een tabel uit een SQL Server dbase gelezen wordt.

De inhoud van dit veld wordt dan op de pagina weergegeven. Dit lijkt allemaal basic stuff, maar nu komt het "tricky" gedeelte:

De inhoud van het veld is momenteel HTML code. Deze HTML code wordt probleemloos weergegeven in de browser. Maar nu moet dit aangepast worden, zodat het veld in de dbase ook ASP code kan bevatten.

Wanneer ik ASP code in het veld plaats, wordt deze, zonder uitgevoerd te worden, als html weergegeven op de pagina. Ik snap waarom dat dit gebeurt, want de ASP.dll rendert de page en vervangt de veldvariable door z'n inhoud, maar rendert niet de inhoud van dat veld. (Als je begrijpt wat ik bedoel)

Hoe kan ik er nu voor zorgen dat de ASP code in dat veld toch uitgevoerd wordt op de pagina?

Pseudo code:
ASP:
1
2
recordset aanmaken
veldwaarde = RSTest("veldnaam")


De ASP code in veldwaarde moet dus ook uitegvoerd worden, en niet als tekst weergegeven worden. Als het veld enkel HTML code bevat, dan wordt die correct weergegeven door de browser, maar het is uiteraard niet de bedoeling dat de ASP code als HTML wordt weergegeven.

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 20-08 16:32
Volgens mij is het niet mogelijk, wat je wel kunt doen is werken met replacen van code: dus bv %insertfunction1% replacen met het resultaat van de functie insertfunction1()

  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Kan je wat verduidelijken wat je bedoelt? Ik dacht zelf aan bvb server.execute, maar die verlangt als parameter een url en werkt niet als je de naam van een variabele doorgeeft.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

http://www.devguru.com/Te...script/quickref/eval.html

Heet de Eval() functie.

Kijk wel uit met security.

Je mag zelf bedenken hoe je de asp code gaat scheiden van de html code in de database. :)

[ Voor 43% gewijzigd door gorgi_19 op 02-05-2003 00:47 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Execute( string )

Zou moeten werken, je moet alleen even kijken hoe je met variabelen knutselt.

  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Eval en Execute lijken niet te werken wanneer de variabele enkel HTML bevat.

Execute geeft
Microsoft VBScript compilation error '800a0400'
Expected statement
/testpagina.asp, line 21

Lijn 21: Execute(Testvariable)

Eval geeft
Microsoft VBScript compilation error '800a03ea'
Syntax error
/testpagina.asp, line 21

Lijn 21: Eval(Testvariable)

Edit:
http://msdn.microsoft.com...t56/html/vsstmexecute.asp
en
http://www.4guysfromrolla.com/webtech/030300-1.shtml

[ Voor 21% gewijzigd door Brynnie op 02-05-2003 00:53 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Brynnie schreef op 02 May 2003 @ 00:52:
Eval en Execute lijken niet te werken wanneer de variabele enkel HTML bevat.
gorgi_19 schreef op 02 May 2003 @ 00:43:
Je mag zelf bedenken hoe je de asp code gaat scheiden van de html code in de database. :)
En anders kan je altijd nog met het FSO een .asp bestand aanmaken en deze dmv server.execute uitvoeren.

[ Voor 13% gewijzigd door gorgi_19 op 02-05-2003 00:59 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
En hoe zou jij dat bedenken? Want het veld kan steeds
- enkel html bevatten
- asp & html bevatten
- enkel asp bevatten

De inhoud van het veld kan dus als een soort "mini asp pagina" beschouwd worden...

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Brynnie schreef op 02 mei 2003 @ 00:59:
En hoe zou jij dat bedenken? Want het veld kan steeds
- enkel html bevatten
- asp & html bevatten
- enkel asp bevatten

De inhoud van het veld kan dus als een soort "mini asp pagina" beschouwd worden...
Regular Expressions lijkt me een toverwoord in dit geval. De blokken tussen <% en %> (of welke je dan ook gebruikt) voor je uit dmv eval (of execute), na een selectering dmv Reg. expr.

Of de optie in m'n edit.

[ Voor 6% gewijzigd door gorgi_19 op 02-05-2003 01:00 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
De FSO optie lijkt niet echt interessant omdat de pagina veel (op 'n intranet) wordt opgevraagd. Is de regular expressions optie dan interessanter, of genereert die evenveel overhead als een FSO optie?

(Ik sta een beetje huiverachtig tov de FSO optie omdat dan steeds een file geschreven moet worden, en die file moet nadien ook verwijderd worden)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Brynnie schreef op 02 mei 2003 @ 01:03:
De FSO optie lijkt niet echt interessant omdat de pagina veel (op 'n intranet) wordt opgevraagd. Is de regular expressions optie dan interessanter, of genereert die evenveel overhead als een FSO optie?

(Ik sta een beetje huiverachtig tov de FSO optie omdat dan steeds een file geschreven moet worden, en die file moet nadien ook verwijderd worden)
Waarom zou je hem verwijderen? Hij staat er goed, moet ook vaak opgevraagd worden.. Content veranderd in principe niet, behalve bij een update.

Koppel de bestandsnaam aan bijv. de contentID; bij verwijderen verwijder je ook het bestand.

[ Voor 21% gewijzigd door gorgi_19 op 02-05-2003 01:07 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Zou dit een correct pattern zijn om de <% %> blokken uit de code te halen?
ASP:
1
RegExpr.Pattern = "\<\%(.+?)\%\>"


Bij de FSO optie komt er toch veel extra disk actie bijkijken?

- Kijk of file bestaat
- Maak file indien nodig
- File deleten en hermaken bij update van veld

[ Voor 45% gewijzigd door Brynnie op 02-05-2003 01:10 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Brynnie schreef op 02 May 2003 @ 01:09:
Bij de FSO optie komt er toch veel extra disk actie bijkijken?

- Kijk of file bestaat
- Maak file indien nodig
- File deleten en hermaken bij update van veld
Ja, maar hoe vaak wijzig jij je teksten? Die extra disk activiteit heb je ook. Ik gok alleen dat het sneller is dan de hele tijd de gegevens uit de database halen bij het opvragen van een pagina (hier zit namelijk de performance winst in)

Je verliest iets bij het admin gedeelte, maar je wint ontzettend veel bij het user gedeelte; eval en reg. exp. zijn relatief 'kostbaar'

[ Voor 15% gewijzigd door gorgi_19 op 02-05-2003 01:14 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Teksten kunnen vaak gewijzigd worden, hangt af van welke teksten het zijn.

Wat bedoel je met 'Je verliest iets bij het admin gedeelte, maar je wint ontzettend veel bij het user gedeelte'?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Brynnie schreef op 02 May 2003 @ 01:18:
Teksten kunnen vaak gewijzigd worden, hangt af van welke teksten het zijn.

Wat bedoel je met 'Je verliest iets bij het admin gedeelte, maar je wint ontzettend veel bij het user gedeelte'?
Bij frequent denk ik aan een pagina 1x per minuut of nog vaker (en dan een handmatige wijziging, niet iets als een nieuwsscript) gewijzigd moet worden.

Bij een update moet je 1x maal een extra bewerking uitvoeren. Een admin doet dit. Dan kost het wat 'extra' (en database, en fso), omdat de pagina gemaakt moet worden.

Bij de user win je wat, omdat de hele pagina al klaar staat. Een soort van caching dus.

[ Voor 12% gewijzigd door gorgi_19 op 02-05-2003 01:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Ik ben de FSO optie aan 't implementeren, maar ik krijg een vreemde fout:

ASP:
1
2
3
4
5
6
7
8
ASPFile = "c:\live\domeinen\com\testdomein\www\test\pagina.asp"
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFSO.CreateTextFile(ASPFile,True)
objTextStream.WriteLine Variabelenaam
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing
server.execute(ASPFile)


en ik krijg de melding:
Microsoft VBScript runtime error '800a004c'
Path not found
op de lijn waar ik "CreateTextFile" aanroep.

De directory in ASPFile klopt, en de IUSR heeft schrijfrechten in die directory.

Wat zou er mislopen?

[ Voor 6% gewijzigd door Brynnie op 02-05-2003 01:50 ]


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Never mind, foutje gevonden...

Bedankt voor je suggesties en hulp, Gorgi_19!

[ Voor 45% gewijzigd door Brynnie op 02-05-2003 01:55 ]

Pagina: 1