Avatar billede cade.dk Nybegynder
21. april 2006 - 16:14 Der er 4 kommentarer og
1 løsning

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, "&lt;br&gt;", "<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("&nbsp;<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...&lt;br&gt;
Håber det går godt.&lt;br&gt;
Fed side, skal jeg nok anbefale til alle mine venner ;-&gt;</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.
Avatar billede cpufan Juniormester
21. april 2006 - 19:13 #1
Set objBeskeder = objXML.documentElement.selectSingleNode("Beskeder")


kan der være stavefejl i denne linie?
evt. store små bogstaver?
Avatar billede cade.dk Nybegynder
22. april 2006 - 15:57 #2
cpufan - ingen ide, jeg har forsøgt at lege lidt med det uden noget held, derfor jeg poster her :)

Men ja godt bud, men tror det er en forkert måde at lave det på - søger vejledning.
Avatar billede cpufan Juniormester
22. april 2006 - 16:01 #3
er der installeret netframework på serveren,
da det vist er den der sørger for xml3.0
Avatar billede cade.dk Nybegynder
24. april 2006 - 08:40 #4
yeah alt er uptodate.
Avatar billede cade.dk Nybegynder
27. april 2006 - 12:32 #5
lukker og opretter nyt spørgsmål hvor løsningen er en helt anden :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester