Toon posts:

[ASP] HTML code wegschrijven.

Pagina: 1
Acties:
  • 479 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben een programma aan het schrijven, waar een tekst editor (Xinha in dit geval) een tekst uit een database haalt, de gebruiker de tekst kan aanpassen, en d.m.v. een submit knop, die tekst aanpast in de databank met een UPDATE query.

Dit werkt allemaal perfect met gewoon een zinnetje ofzo. Maar ik zou graag hebben dat de gebruiker ook een website kan aanpassen. Ik neem dus de code van index.html en plaats die in de databank. De tekst editor leest die dan perfect uit (ik zie de site in de editor), ik kan die pagina ook aanpassen, maar als ik op save druk en hij dus de UPDATE query wilt uitvoeren krijg ik:
Soort fout:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-stuurprogramma] Syntaxisfout (operator ontbreekt) in query-expressie ' <table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0"> <tbody><tr> <td width="150" valign="top" bgcolor="#ccc8c8"><br /> <br /> <table width="100%" cellspacing="0" cellpadding="0" borde.
/Website/sites.asp, line 186
Hij kan dus blijkbaar niet zo goed overweg met die code, terwijl dat eigenlijk ook gewoon tekst is?

Code van de pagina:

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%
dim strsql
strsql="SELECT * FROM tblsite"
set rstsite=cnverbinding.execute(strsql)

%>
  <form method="post" id=form1 name=form1>
   <textarea id="content1" name="content1" cols="67" rows="20">
<%
response.write rstsite.Fields("inhoud")
%>
</textarea>
  <input type="submit" value="aanpassen" id=submit1 name=submit1>
  </form>
</td>
</tr>
<%
if request.form("submit1") = "aanpassen" then
dim strinhoud
strinhoud=request.form("content1")
strsql2 = "UPDATE tblsite SET inhoud = '" & strinhoud & "'"
cnverbinding.execute(strsql2)

end if

%>             


Heb al wat gezocht op internet, maar zou dus eerst en vooral al niet weten waarop te zoeken :( ASP + html code ofzo, maar dan vind je natuurlijk alleen maar scripts en dergerlijke.

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Ik zou eens even checken wat voor speciale karakters in je index.html staan. Single quotes gaan problemen geven. Als je index.html er bijvoorbeeld zo uit ziet:
code:
1
Hallo ik heet 'Jeremy'

Dan wordt je update statement zoiets als
code:
1
UPDATE tabel SET tekst='Hallo ik heet 'Jeremy'' WHERE id=1

Je database zal problemen krijgen, zodra
code:
1
UPDATE tabel SET tekst='Hallo ik heet '

geparsed is. Daarna komt voor hem onbegrijpelijke code, nl
code:
1
Jeremy'' WHERE id=1

Je moet alle speciale karakters gaan escapen of vervangen. Termen als htmlentities, htmlspecialchars komen dan al snel in mijn hoofd op. Ik heb geen flauw idee hoe dit in ASP heet trouwens.

[ Voor 4% gewijzigd door KabouterSuper op 26-03-2006 10:50 ]

When life gives you lemons, start a battery factory


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Meest eenvoudige oplossing: parametrized queries gebruiken.
Maar waarom schrijf je dit soort zut niet weg in tekstbestanden?

[ Voor 37% gewijzigd door gorgi_19 op 26-03-2006 10:55 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op zondag 26 maart 2006 @ 10:55:
Meest eenvoudige oplossing: parametrized queries gebruiken.
Maar waarom schrijf je dit soort zut niet weg in tekstbestanden?
Het is een hele site die elke dag aangepast moet worden door het programma. En volgens mij was het beste en efficiënste om alle pagina's in een databank te zetten en dan zo uit te lezen door mijn programma en de site zelf.

Of is makkelijker om de pagina direct uit te lezen door de editor en zo direct aan te passen en weer op te slaan als index.html?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op zondag 26 maart 2006 @ 11:00:
Het is een hele site die elke dag aangepast moet worden door het programma. En volgens mij was het beste en efficiënste om alle pagina's in een databank te zetten en dan zo uit te lezen door mijn programma en de site zelf.
Static HTML pagina's zijn nog altijd sneller dan dynamische ASP-pagina's.
Of is makkelijker om de pagina direct uit te lezen door de editor en zo direct aan te passen en weer op te slaan als index.html?
Scheelt performancetechnisch (en ontwikkeltechnisch) waarschijnlijk wel een hoop, zeker als het een complete pagina betreft.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 23-01 19:11
gorgi_19 schreef op zondag 26 maart 2006 @ 11:05:
[...]

Static HTML pagina's zijn nog altijd sneller dan dynamische ASP-pagina's.

[...]

Scheelt performancetechnisch (en ontwikkeltechnisch) waarschijnlijk wel een hoop, zeker als het een complete pagina betreft.
Als je een server hebt op fatsoenlijke snelheid dan is de tijd van het dynamisch laden vaak te verwaarlozen ten opzichte van de brandbreedte. Pas als de site echt complex word met +50 database calls dan begin je het te merken.

[ Voor 28% gewijzigd door martijnvanegdom op 26-03-2006 11:16 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Martijnvanegdom schreef op zondag 26 maart 2006 @ 11:12:
Als je een server hebt op fatsoenlijke snelheid dan is de tijd van het dynamisch laden vaak te verwaarlozen ten opzichte van de brandbreedte. Pas als de site echt complex word met +50 database calls dan begin je het te merken.
MS Access komt al vrij snel tegen beperkingen aan, oa ook door kans op corruptie en limieten van connecties. Meer dan 5 concurrent connections wil je echt niet op die database hebben. Sowieso: z'n stelling was dat het het efficienst is om een pagina in een database te zetten, wat performancetechnisch niet waar is.

Maar dan nog zie ik eik geen reden om complete pagina's in een MS Access database te dumpen en deze weer volledig uit te lezen.

[ Voor 17% gewijzigd door gorgi_19 op 26-03-2006 11:20 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Ik kan er best inkomen dat een MS access databank niet zo snel is, zeker als er meerdere users op de website zitten.

Ik heb deze site gevonden:

http://msdn.microsoft.com...ence/objects/textarea.asp

Hierin staat denk ik alles over een textarea, maar ik heb nog steeds niet gevonden hoe ik een simple html pagina in een textarea laad, ipv zelf tekst in te voeren.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op zondag 26 maart 2006 @ 11:23:
Ik kan er best inkomen dat een MS access databank niet zo snel is, zeker als er meerdere users op de website zitten.

Ik heb deze site gevonden:

http://msdn.microsoft.com...ence/objects/textarea.asp

Hierin staat denk ik alles over een textarea, maar ik heb nog steeds niet gevonden hoe ik een simple html pagina in een textarea laad, ipv zelf tekst in te voeren.
zoek eens naar het FileSystemObject en kijk eens naar sites als http://www.asp101.com :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Met die filesystemobject lukt het om .txt bestanden te lezen in de textarea, maar als ik dan even een .html bestand erin wil laden geeft die:
Soort fout:
Runtimefout Microsoft VBScript (0x800A003E)
Invoer voorbij bestandseinde
/Website/sites.asp, line 181

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Zonder relevante code is het enige wat we kunnen doen je naar Google verwijzen:

http://www.google.com/sea...Input+past+end+of+file%22

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Al die problemen gaan over lege bestanden, maar de mijne is wel degelijk een geldig bestand.

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  <form method="post" id=form1 name=form1>
   <textarea id="content1" name="content1" cols="67" rows="20">
<%
Const fsoForReading = 1

Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Open the text file
Dim objTextStream
Set objTextStream = objFSO.OpenTextFile("E:\Inetpub\wwwroot\cms\Website\home.htm", fsoForReading)

'Display the contents of the text file
Response.Write objTextStream.ReadAll

'Close the file and clean up
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing
%>


</textarea>
  <input type="submit" value="aanpassen" id=submit1 name=submit1>
  </form>


BTW: heb ook al scriptje geprobeerd vanop google:

code:
1
2
3
4
5
6
Do While Not objTextStream.AtEndOfStream
strHTML = objTextStream.ReadLine
Loop
objTextStream.Close

Response.Write strHTML


Maar dan doet hij gewoon niets.

Maar als ik die home.htm verander in test.txt ofzo, leest hij wel de inhoud!

[ Voor 51% gewijzigd door Verwijderd op 26-03-2006 12:38 ]


  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 23-01 19:11
gorgi_19 schreef op zondag 26 maart 2006 @ 11:19:
[...]

MS Access komt al vrij snel tegen beperkingen aan, oa ook door kans op corruptie en limieten van connecties. Meer dan 5 concurrent connections wil je echt niet op die database hebben. Sowieso: z'n stelling was dat het het efficienst is om een pagina in een database te zetten, wat performancetechnisch niet waar is.

Maar dan nog zie ik eik geen reden om complete pagina's in een MS Access database te dumpen en deze weer volledig uit te lezen.
Ik ben PHP programmeur en ik zie sowieso geen reden om MS Access te gebruiken. De keren dat ik het gedaan heb zat ik tenenkrommend te wachten tot er eens iets fatsoenlijks uitkwam.

Maar los hier van, je heb gelijk dat je geen complete pagina's in een database moet gaan dumpen. Maar aan de andere kant wil je ook niet dat de html bestanden rechtstreeks geëdit worden. Dat levert het gevaar op dat als je gebruikers iets onverwacht doen bepaalde pagina's compleet niet meer bereikbaar zijn. Ik heb er in de loop van de tijd genoeg voorbeelden van de gezien.

Ik ben persoonlijk dan ook erg sterk voor een content / markup gescheiden aanpak. Het liefst ook nog code en html gescheiden. Al is dat in sommige gevallen overkill en niet nodig

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Martijnvanegdom schreef op zondag 26 maart 2006 @ 13:36:
Ik ben PHP programmeur en ik zie sowieso geen reden om MS Access te gebruiken. De keren dat ik het gedaan heb zat ik tenenkrommend te wachten tot er eens iets fatsoenlijks uitkwam.
Voor een hoop situaties is MS Access ruim voldoende, je moet het alleen niet misbruiken :)
Maar los hier van, je heb gelijk dat je geen complete pagina's in een database moet gaan dumpen. Maar aan de andere kant wil je ook niet dat de html bestanden rechtstreeks geëdit worden. Dat levert het gevaar op dat als je gebruikers iets onverwacht doen bepaalde pagina's compleet niet meer bereikbaar zijn. Ik heb er in de loop van de tijd genoeg voorbeelden van de gezien.
Mja, als je corrupte HTML-pagina's in je database laat dumpen, maakt het an sich ook niet meer uit of je een pagina in een DB verknald of direct de HTML-pagina; het resultaat is hetzelfde :)
Ik ben persoonlijk dan ook erg sterk voor een content / markup gescheiden aanpak. Het liefst ook nog code en html gescheiden. Al is dat in sommige gevallen overkill en niet nodig
true, HTML == evil met alle gevaren van dien :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Aargh die home.htm was gewoon compleet leeg omdat ik gistere een foute functie opgeroepen had en die de webpagina leeg gemaakt had, het werkt dus toch ;)

Nu nog uitzoeken hoe ik dan weer naar die html pagina schrijf, maar dat is me hierjuist gelukt met een txt bestandje dus moet dat met die html niet al te moeilijk zijn.

  • martijnvanegdom
  • Registratie: Januari 2004
  • Laatst online: 23-01 19:11
gorgi_19 schreef op zondag 26 maart 2006 @ 13:47:
[..]
Mja, als je corrupte HTML-pagina's in je database laat dumpen, maakt het an sich ook niet meer uit of je een pagina in een DB verknald of direct de HTML-pagina; het resultaat is hetzelfde :)

[...]

true, HTML == evil met alle gevaren van dien :)
Jewel.. Als je direct het edit heb je geen enkele vorm van fout detectie / correctie meer achteraf. Als je een corrupte html file hebt, of zelfs helemaal geen html file meer, dan ben je de sjaak. Als je echter een scriptje dan kun je eventueel nog uitzoeken dat er iets is fout gegaan, en eventueel een foutmelding geven of een gebruiker doorsturen naar een andere pagina
Pagina: 1