asp skriv/slet og xml som database
Hej eksperter :)Jeg sidder og er ved at lave et administrations modul til dette "freeware" galleri som bruger en xml fil som "database"
Galleriet kan downloades her:
http://www.airtightinteractive.com/projects/postcardviewer
Det som administrations modulet skal kunne udføre er:
Uploade funktion (dvs. uploade til et mappe på serveren og angive et navn.jpg i xml filen)
Slet/rediger (dvs. en slet funktion der sletter filen på serveren og navn.jpg i xml filen)
Jeg har ikke tidligere arbejdet med XML og slet ikke som "database"
Jeg har kigget lidt på denne løsning som er linket til her under:
http://www.eksperten.dk/spm/42783
Løsningen udføre ikke helt præcist det jeg ønsker men det er da et start og kan evt. hjælpe mig videre, overstående indeholder dog en del fejl så jeg poster lige koden her + den fejl jeg får:
skriv+slet (asp filen):
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<%
response.Buffer = TRUE
response.expires = 0
mode = Request.Querystring("mode")
%>
<html>
<head>
<title>Drean.dk - Gæstebog</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3">
</head>
<%
strDataFile = Server.MapPath("/galleri/") & "gbdata.xml"
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.load(strDataFile)
Set objBeskeder = objXML.documentElement.selectSingleNode("Beskeder")
%>
<DIV ID=layerIE STYLE="POSITION: absolute; VISIBILITY: hidden"></DIV><LAYER VISIBILITY="hide" NAME="layerNC"></LAYER>
<span style="font-size:10pt; font-family:verdana;">
<b>Gæstebog:</b><br>
<% if mode <> "write" then %>
<div align="center"><b><a href='gb.asp?mode=write' class='link'>Skriv en hilsen i gæstebogen</a></b></div><BR><BR>
<%
end if
if mode = "write" then%>
<div align="center"><b><a href='gb.asp' class='link'>Læs i gæstebogen</a></b></div><BR><BR>
<%
end if
if mode = "" then
'Henter de under containere ind som er i beskeder
Set objBeskedNavn = objBeskeder.getElementsByTagName("navn")
Set objBeskedDato = objBeskeder.getElementsByTagName("dato")
Set objBeskedEmail = objBeskeder.getElementsByTagName("email")
Set objBeskedHilsen = objBeskeder.getElementsByTagName("hilsen")
'Laver en for-løkke som udskriver de beskeder til et array
For i=0 To objBeskedNavn.length -1
strhilsen = Server.HTMLencode(objBeskedhilsen.item(i).text)
strhilsen = Replace(strHilsen, "<br>", "<br>")
With Response
.Write("<div align='center'><table cellspacing='0' cellpadding='0' width='500' style='font-family:verdana;font-size:10 pt; border-left: 1px solid rgb(0,0,0); border-right: 1px solid rgb(0,0,0); border-top: 1px solid rgb(0,0,0); border-bottom: 1px solid rgb(0,0,0)'>")
.Write("<tr><td style='background-color:#808080; border-bottom: 1px solid rgb(0,0,0);'><a href='mailto:" & Server.HTMLencode(objBeskedEmail.item(i).text) & "' class='a'>" & Server.HTMLencode(objBeskedNavn.item(i).text) & "</a>")
.Write(" <font face=Verdana size=1>(d." & Server.HTMLencode(objBeskedDato.item(i).text) & ")</font></td></tr>")
.Write("<tr><td valign='top'>" & strHilsen & "</td></tr>")
.Write("</table></div><br>")
.Write("<a href='gb.asp?mode=slet&id=" & i & "' class='link'>Slet besked</a>")
end With
Next
end if
if mode = "write" then
%>
<div align="center">
<form action="gb.asp?mode=append" method="post">
<table>
<tr>
<td><span style='font-size:10pt; font-family:verdana;'>Navn:</span></td>
<td><input type="text" name="navn" class="input"></td>
</tr>
<tr>
<td><span style=\'font-size:10pt; font-family:verdana;\'>Email:</span></td>
<td><input type=\"text\" name=\"email\" class=\"input\"></td>
</tr>
<tr>
<td><span style=\'font-size:10pt; font-family:verdana;\'>URL:</span></td>
<td><input type=\"text\" name=\"URL\" value=\"http://\" class=\"input\"></td>
</tr>
<tr>
<td valign=\"top\"><span style=\'font-size:10pt; font-family:verdana;\'>Hilsen:</span></td>
<td><textarea name=\"hilsen\" cols=\"40\" rows=\"10\" class=\"input\"></textarea></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\">
<input type=\"submit\" value=\"gem hilsen\" class=\"button\">
</td>
</tr>
</table>
<BR>
<BR>
<B>Bemærk:</B> Der kan ikke bruges HTML-tags i gæstebogen.
</div>
</form>
<%
end if
if mode = "append" then
'Gemmer det som skal sættes ind i XML filen i en streng
strHilsen = REplace(Request.form("hilsen"), chr(13), "<br>")
strHilsen = Server.HTMLencode(strHilsen)
strNyBesked = "<besked>" & Chr(13) & Chr(10) & Chr(9) &_
"<navn>" & Server.HTMLencode(Request.form("navn")) & "</navn>" & Chr(13) & Chr(10) & Chr(9) & _
"<dato>" & Server.HTMLencode(Date()) & "</dato>" & Chr(13) & Chr(10) & Chr(9) & _
"<email>" & Server.HTMLencode(Request.form("email")) & "</email>" & Chr(13) & Chr(10) & Chr(9) & _
"<hilsen>" & strHilsen & "</hilsen>" & Chr(13) & _
Chr(10) & "</besked>"
Set objXML2 = Server.CreateObject("Microsoft.XMLDOM")
objXML2.loadXML(strNybesked)
Set objNybesked = objXML2.documentElement
objBeskeder.insertBefore objNyBesked, objBeskeder.childNodes(0)
objXML.save(strDataFile)
Response.Redirect("gb.asp")
end if
if mode = "slet" then
objBeskeder.removeChild(objBeskeder.childNodes.item(Request.Querystring("id")))
objXML.save(strDataFile)
Response.Redirect("gb.asp")
end if
%>
</body>
</html>
----
xml filen (databasen)
<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<guestbook>
<beskeder>
<besked>
<navn>Drean</navn>
<dato>01-01-2001</dato>
<email>drean@drean.dk</email>
<hilsen>Hej med dig...<br>
Håber det går godt.<br>
Fed side, skal jeg nok anbefale til alle mine venner ;-></hilsen>
</besked>
</beskeder>
</guestbook>
Overstående giver mig denne fejl:
Technical Information (for support personnel)
Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: '[object]'
/galleri/galleri.asp, line 23
----
Har du en ide til hvor fejlen kan være eller hvordan jeg lettest kommer i gang med dette projekt - eks. eksempler.
Mvh.