Toon posts:

[ASP+XML] Object vereist bij wijzigen informatie

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb op dit moment een soort van gastenboek gemaakt door middel van XML,XSL en ASP. heb alles zover gekregen dat ik gegevens en dergelijken kan toevoegen, en dat dit vervolgens ook weer wordt weergegeven. Ik ben nu bezig om nu ook een optie te maken dat de gegevens gewijzigd kunnen worden. Al mijn bestanden werken, en alles lijkt goed te gaan.. de XML bestanden worden uitgelezen maar wanneer ik iets wijzig en wijzig.asp dat moet gaan verwerken krijg ik een foutlmelding... Object Vereist in regel 17.. ik heb de code hieronder gepost.

wijzig.asp
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%
Dim objDom
Dim objRoot
Dim objBericht
Dim strID

set objXML = Server.CreateObject("Microsoft.XMLDOM")

objXML.async = false

objXML.load(Server.Mappath("guestbook.xml"))

Set objRoot = objXML.documentElement

Set objBericht = objRoot.SelectSingleNode("//bericht[@id='" & strID & "']")

objBericht.childNodes(0).text = strOnderwerp
objBericht.childNodes(1).text = strTekst
objBericht.childNodes(2).text = strNaam
objBericht.childNodes(3).text = strDatum

objXML.save(Server.Mappath("guestbook.xml"))

%>


ik heb er nu al een paar uur naar zitten kijken, maar dit zou toch gewoon moeten kloppen?! ik heb hieronder in de draad ook al een post gezien met wat links voor XML en ASP, maar daar vond ik niet echt mijn probleem in terug... kan iemand mij zeggen waar ik eventueel nog meer kan zoeken? ik wil eigenlijk alleen maar een richtlijn horen waar ik naar moet zoeken ( dus dit is geen scriptrequest, want ik weet dat het niet mag.. scripten kan ik zelf ;) ) maar iemand die me wijst lijkt me handig.. ik zie door de bomen het bos nie meer..

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

gorgi_19

Kruimeltjes zijn weer op :9

Is het pad goed en is het document well formed?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ja het pad klopt, ik heb op dit moment gewoon alle documenten ( guestbook.xml e.d.) in dezelfde map staan om te testen. De xml bestanden zijn al een keer door de validator getrokken en ook dat ziet er goed uit...

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

wat is de waarde van strID?

Today's subliminal thought is:


Verwijderd

Topicstarter
strID is een ID nummer wat aan het bericht wordt meegegeven.. dus dat kan een nummer van 1 tot laten we zeggen 9999 zijn...

ik zal hieronder wel wat meer code posten.. komt et..

guestbook.xml
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="guestbook.xsl"?>
<guestbook>
    <bericht id="1" zichtbaar="yes">
        <onderwerp>Test</onderwerp>
        <tekst>test</tekst>
        <naam>piet</naam>
        <datum>240903</datum>
    </bericht>
    <bericht id="2" zichtbaar="yes">
        <onderwerp>Nog een test</onderwerp>
        <tekst>waarom werkt dit niet</tekst>
        <naam>ikke</naam>
        <datum>250903</datum>
    </bericht>
</guestbook>


guestbook.xsl
PHP:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>

<xsl:template match="prikbord">
<link rel="stylesheet" type="text/css" href="../stijl.css"></link>
    <html>
    <head>
        <title>Guestbook</title>
    </head>
    <body>
        <h1>Guestbook</h1>
        <table cellpadding="3" cellspacing="0">
            <tr>
                <th>Onderwerp</th>
                <th>Tekst</th>
                <th>Naam</th>
                <th>Datum</th>
            </tr>
            <xsl:apply-templates />
        </table>
        <a href="editfrm.html">Toevoegen bericht</a>
    </body> 
    </html>
</xsl:template>

<xsl:template match="bericht">
        <xsl:if test="@zichtbaar = 'yes'">
            <tr>
                <xsl:apply-templates />
            <td>
                <a><xsl:attribute name="href">edit.asp?ID=<xsl:value-of select="@id"/></xsl:attribute>Wijzigen</a>
            </td>
            <td>
                <a><xsl:attribute name="href">delete.asp?ID=<xsl:value-of select="@id"/></xsl:attribute>Verwijderen</a>
            </td>
            </tr>   
        </xsl:if>
</xsl:template>

<xsl:template match="onderwerp">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

<xsl:template match="tekst">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

<xsl:template match="naam">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

<xsl:template match="datum">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

</xsl:stylesheet>


bij deze sorry voor de PHP tags, maar vind het wat overzichtelijker dan zonder.. en de layout ver****king sorry..

[ Voor 28% gewijzigd door Verwijderd op 27-09-2003 10:46 ]


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Verwijderd schreef op 27 september 2003 @ 10:46:
strID is een ID nummer wat aan het bericht wordt meegegeven.. dus dat kan een nummer van 1 tot laten we zeggen 9999 zijn...
Dat begrijp ik, maar waar wordt deze waarde toegekend? Dat zie ik namelijk niet terug in je geposte code.

Today's subliminal thought is:


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Schrijf de waarde van strID maar eens met een response.write naar het scherm ;)
Ik zie voor zover namelijk geen fouten in je script...

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


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

gorgi_19

Kruimeltjes zijn weer op :9

Oftewel, zet op regel 16
ASP:
1
2
3
4
5
6
Set objBericht = objRoot.SelectSingleNode("//bericht[@id='" & strID & "']") 
If objBericht Is Nothing Then
     Response.Write "Fatal Error: No valid item found for id: " & strID & "<BR>"
     Response.Write "Unable to continue"
     Response.End
End if

[ Voor 70% gewijzigd door gorgi_19 op 27-09-2003 11:03 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
heb gedaan wat Gorgi_19 zei, en krijg dus idd die melding dat er geen valid item is gevonden voor ID.. dus als ik het goed begrijp wordt die idcode niet meegenomen waardoor hij niet gaat wijzigen.. hmm.. ik ga nog eens goed door mijn code neuzen..

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Annie schreef op 27 September 2003 @ 10:53:
[...]

maar waar wordt deze waarde toegekend?
Je bent dus vergeten de querystring aan strID toe te kennen ;)
Oftewel:
ASP:
1
2
Dim strID
strID = Request.Querystring("ID")

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
oké, ook dit heb ik gedaan, maar het wel dus niet veel uithalen.. ik ga nu even checken of ik alle hoofdletters e.d goed heb staan, en dat alles met elkaar klopt in de verschillende documenten..

en ook dit geeft geen resultaat.. waar moet ik nu in godesnaam naar gaan kijken... ben de kluts kwijt :P

[ Voor 22% gewijzigd door Verwijderd op 27-09-2003 12:20 ]


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

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 27 September 2003 @ 11:43:
oké, ook dit heb ik gedaan, maar het wel dus niet veel uithalen.. ik ga nu even checken of ik alle hoofdletters e.d goed heb staan, en dat alles met elkaar klopt in de verschillende documenten..

en ook dit geeft geen resultaat.. waar moet ik nu in godesnaam naar gaan kijken... ben de kluts kwijt :P
Roep je hem dan wel aan met:

http://www.jewebsite.nl/scriptnaam.asp?id=2

?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
wanneer ik op de link wijzig druk in mijn pagina zullen de gegevens uitgelezen worden door edit.asp ( die hieronder staat)

PHP:
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
27
28
29
<%

Dim strID
strID = Request.QueryString("id")

Dim objXML
Dim objNode

'Instantieer het XMLDOM Object.
set objXML = Server.CreateObject("Microsoft.XMLDOM")
'Zet asynchroon bestand laden uit.
objXML.async = false
'Laad het XML bestand.
objXML.load(Server.Mappath("guestbook.xml"))
'Selecteer de node die je wilt zien.
Set objNode = objXML.SelectSingleNode("//bericht[@id='" & strID & "']")

Dim objXSL
'Instantieer het XMLDOM Object voor de XSL stylesheet.
set objXSL = Server.CreateObject("Microsoft.XMLDOM")
'Zet asynchroon bestand laden uit.
objXSL.async = false
'Laad het XSL bestand.
objXSL.load(Server.Mappath("bericht.xsl"))
'Gebruik de methode "transformNode" van het XMLDOM om de stylesheet aan het XML document te koppelen.
'Stuur het vervolgens naar de client.
Response.Write(objNode.transformNode(objXSL))

%>


deze leest de gegevens uit, en stuurt de wijzigen door naar wijzig.asp die de gegevens op zou moeten slaan in guestbook.xml.. de gegevens worden idd aangeroepen zoals gorgi_19 zegt...

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Niet helemaal wat je wilt, maar wat je ook kan doen (mocht het niet anders gaan) , is dit

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
27
28
29
30
31
Dim objDom 
Dim objRoot 
Dim objBericht 
Dim strID 
Dim i

set objXML = Server.CreateObject("Microsoft.XMLDOM") 

objXML.async = false 

objXML.load(Server.Mappath("guestbook.xml")) 

Set objRoot = objXML.documentElement 

Set objBericht = objRoot.GetElementByTagName("bericht) 

for i = 0 to objBericht.lenght-1
 if ObjBericht(i).getAttribute("id") = request("id") then
   Response.write "GEVONDEN dank je wel jaspertje :)"
  ObjBericht(i).childnodes(0).text = text
   enz..
  gevonden = true
 end if
 i = i+1
next

if gevonden = false
 response.write "Dit id heeft geen Bricht, Toch bedankt Jaspertje :)"
end if

objXML.save(Server.Mappath("guestbook.xml")) 


Iets voor het vervolg.. je elementen altijd in hoofdletters, en je attributen in kleine letters (hoef je ook nooit meer te checkken op hoofd en kleine letters) En het is overzichtelijker en duidelijker (tenminste vund ik :))

[ Voor 23% gewijzigd door Jaspertje op 27-09-2003 18:28 ]


Verwijderd

Topicstarter
Jaspertje schreef op 27 September 2003 @ 18:27:
Niet helemaal wat je wilt, maar wat je ook kan doen (mocht het niet anders gaan) , is dit

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
27
28
29
30
31
Dim objDom 
Dim objRoot 
Dim objBericht 
Dim strID 
Dim i

set objXML = Server.CreateObject("Microsoft.XMLDOM") 

objXML.async = false 

objXML.load(Server.Mappath("guestbook.xml")) 

Set objRoot = objXML.documentElement 

Set objBericht = objRoot.GetElementByTagName("bericht) 

for i = 0 to objBericht.lenght-1
 if ObjBericht(i).getAttribute("id") = request("id") then
   Response.write "GEVONDEN dank je wel jaspertje :)"
  ObjBericht(i).childnodes(0).text = text
   enz..
  gevonden = true
 end if
 i = i+1
next

if gevonden = false
 response.write "Dit id heeft geen Bricht, Toch bedankt Jaspertje :)"
end if

objXML.save(Server.Mappath("guestbook.xml")) 


Iets voor het vervolg.. je elementen altijd in hoofdletters, en je attributen in kleine letters (hoef je ook nooit meer te checkken op hoofd en kleine letters) En het is overzichtelijker en duidelijker (tenminste vund ik :))
heb ik ook gedaan, maar dat werkt helaas ook niet.. nadat ik ergens wat "- tekens moest zetten werkte het weer een stukje verder, alleen kreeg ik de melding dat hij een "else" verwachte na "if gevonden = false" dus dat even gedaan.. krijg ik de melding dat dat niet ondersteund wordt door Set objBericht = objRoot.GetElementByTagName("bericht")

in ieder geval wel bedankt voor je optie.. ik ga nog maar weer eens even verder rotzooien.. zie zo onderhand wel sterretjes voorbij komen van al dat turen.. :9

[ Voor 5% gewijzigd door Verwijderd op 27-09-2003 19:14 ]


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Ik was inderdaad een then vergeten :P stom stom stom maar: wat je ook nog kan doen, is ipv

ASP.NET Visual Basic:
1
set objXML = Server.CreateObject("Microsoft.XMLDOM") 


ASP.NET Visual Basic:
1
set objXML = Server.CreateObject("MSXML2.DomDocument") 

Gebruiken (moet je dat component wel op je server hebben staan..

[ Voor 15% gewijzigd door Jaspertje op 27-09-2003 19:31 ]


Verwijderd

Topicstarter
staat zover ik weet niet op mijn server.. das wel balen... maar goed.. zelfs met die then erbij werkt het script niet.. ik ga morgen een poging doen om het anders aan te pakken... maar mochten er nog suggesties zijn hoor ik het graag...

  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Verwijderd schreef op 27 September 2003 @ 21:03:
staat zover ik weet niet op mijn server.. das wel balen... maar goed.. zelfs met die then erbij werkt het script niet.. ik ga morgen een poging doen om het anders aan te pakken... maar mochten er nog suggesties zijn hoor ik het graag...
Nee die then was ik vergeten in de snelheid van mijn vingers :) Misschien moet je dat component eens vinden op het internet (het is vast wel bij microsoft te vinden) Daarmee werkt dat andere script zeker..

O heb je wel die hoofdletters en kleine letters bekeken? Ik heb het niet helemaal goed gedaan he..

Verwijderd

Topicstarter
hmm, goed dat je dat nog even zegt! ik check het strax nog effe.. ik laat morgen even weten hoe het gelopen is..

[ Voor 53% gewijzigd door Verwijderd op 27-09-2003 21:26 ]

Pagina: 1