[XML / JavaScript] Node editten a.h.v. user input form?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Ik wil graag een prijslijst in een XML bestand zetten. De prijzen die op de website staan weergegeven worden uit de XML gehaald met JavaScript.
Graag wil ik een soort CMS maken om de prijzen makkelijk aan te kunnen passen. Er zijn bijzonder veel tutorials te vinden over de XML DOM. Er staat ook uitgebreid beschreven hoe je een text node aan kunt passen.
Maar...ik kan nergens vinden hoe de nieuwe waarde dan verkregen wordt. Ikzelf had gedacht om dat via een textveldje te doen. Je kunt dan inderdaad met een PHP scriptje de user input lezen en dat in de XML zetten.Maar in de beschrijving van de XML DOM staat duidelijk dat je met JavaScript ook dingen aan kunt passen.

Hoe wordt dan de nieuwe variabele verkegen?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Je gaat iets te snel. het lijkt me handiger wanneer je je eerst verdiept in het verschil tussen clientside en serverside. Let daarbij vooral op welke handelingen waar plaatsvinden en wat de beperkingen zijn.

Javascript draait altijd op de client en kan in zijn 1tje nooit bestanden op de server aanpassen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Dit bedoel ik:

In de head van de HTML staat een link naar een extern JavaScriptje:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 function loadXMLDoc(naam)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",naam,false);
xhttp.send("");
return xhttp.responseXML;
}


In de body staat dit:
JavaScript:
1
2
3
xmlDoc=loadXMLDoc("test.xml");
x=xmlDoc.getElementsByTagName("test_element")[0].childNodes[0];
x.nodeValue="Nieuwe waarde";


Ik roep in de externe JavaScript een functie aan die een XML doc opent.

In de body lees ik daarvan het eerste element van "test_element". Daarna wordt de waarde verandert in "Nieuwe waarde".

Maar waar komt "Nieuwe waarde" vandaan? Ik zou dat graag met een tekstveld laten ingeven door de gebruiker, of is dat niet (snel) mogelijk?

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

"Nieuwe waarde" is gewoon een tekstje (string), die kan je met javascript inderdaad van duizend en een plekken halen, onder andere een tekstbox die je op de pagina hebt.

Is je probleem dat je niet weet hoe?

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
DanielG schreef op vrijdag 05 maart 2010 @ 16:00:
Is je probleem dat je niet weet hoe?
Klopt! Hoe doe ik dat?

Acties:
  • 0 Henk 'm!

  • DanielG
  • Registratie: Oktober 2005
  • Laatst online: 08-09 15:36

DanielG

i = 0x5f3759df - (i>>1); ☠₧ℳ🀪❣

Een combinatie van een textarea of input text samen met de javascript functie getelementbyid en .value.

Maar dit is wel super basic allemaal, volgens mij kan je beter een Javascript tutorial doen / boek lezen.

http://xyproblem.info/


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Het is allemaal leuk en aardig dat je op die manier de al ingeladen xml aanpast, maar besef wel dat dit enkel de ingeladen data aanpast. Op deze manier is niet het originele xml document aan te passen. Het zou een mooie boel worden wanneer je met javascript zomaar bestanden op de server aan kon passen zeg.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Dankje!

Ja weet ik...daar ben ik ook mee bezig, ik ben tutorials over XML aan het lezen en dan kom je al snel op JavaScript uit. Mijn probleem is dan dat ik graag dingen wil proberen en er dan niet uit kom omdat ik deze basis dingen niet weet....Maargoed, zo leer je ook weer.

Ik ga even proberen of het lukt, iig bedankt!

Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Janoz schreef op vrijdag 05 maart 2010 @ 16:18:
Het is allemaal leuk en aardig dat je op die manier de al ingeladen xml aanpast, maar besef wel dat dit enkel de ingeladen data aanpast. Op deze manier is niet het originele xml document aan te passen. Het zou een mooie boel worden wanneer je met javascript zomaar bestanden op de server aan kon passen zeg.
Daar heb je een goed punt. Daar heb ik nog niet aan gedacht.

Maar waarom zou je deze functie dan wel kunnen gebruiken? Enkel om een lokale XML aan te passen?

Acties:
  • 0 Henk 'm!

  • R.di.Giovanni
  • Registratie: Juni 2002
  • Laatst online: 15-12-2024
Probeer eens deze Javascript Tutorial

Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
De XML tutorial komt ook van die site, namelijk deze. Ik heb de code die ik eerder postte letterlijk van die tutorial gejat. Er staat verder niet bij waarvoor het aanpassen van XML bestanden gebruikt zou kunnen worden, enkel dat het kan. Het is mijn fout dat ik ervan uit ben gegaan dat dit zomaar gold voor bestanden van een server.

Er staan wel voorbeelden, maar geen praktische voorbeelden. Naar mijn mening heb je aan zo'n tutorial dan nog niet veel. Of het ligt gewoon aan mijn interpretatievermogen 8)7

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

peterkuli schreef op vrijdag 05 maart 2010 @ 16:21:
[...]


Daar heb je een goed punt. Daar heb ik nog niet aan gedacht.

Maar waarom zou je deze functie dan wel kunnen gebruiken? Enkel om een lokale XML aan te passen?
Ja

Bedenk daarnaast dat de pagina zelf ook op die manier te benaderen is. Dat je het uiterlijk en de inhoud van de huidige pagina aan kunt passen is bijvoorbeeld dan wel weer erg handig.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Hmm ok. Dus als ik 'iets' wil maken voor het makkelijk aanpassen van de prijslijst kan ik dat beter doen met php.

Weergave van prijslijst kan door het inladen van XML van server en dat vervolgens in HTML weergeven. Als prijzen aangepast moeten worden kan ik dat beter aan de serverside doen met php icm SimpleXML oid.

Bedankt iig voor de input iedereen!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Wat je zegt kan, maar het lijkt mij zeker niet de meest voor de hand liggende manier. Wat meer voor de hand ligt is om het hele xml idee gewoon te laten varen. Als je op de server php beschikbaar hebt, dan heb je ook wel een mysql database beschikbaar. Je prijzen in een database opslaan is een stuk makkelijker dan kloten met complete xml bestanden. Daarnaast zijn er miljoenen tutorials te vinden die dat makkelijk uitleggen.

Wil je toch vasthouden aan xml of als er helemaal geen php op de server beschikbaar is, dan is het handiger om de xml gewoon op je computer te wijzigen en deze na een wijziging te uploaden. Hiervoor kun je uiteraard gewoon een applicatie maken in welke taal dan ook, of gewoon notepad gebruiken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Ligt het dan aan het feit dat een prijslijst (te) simpel is, of dat de combinatie XML - php te omslachtig is? Die prijslijst van mij is natuurlijk gewoon een opstapje om uiteindelijk meer dingen te kunnen doen. XML is compleet nieuw voor mij, maar al vanaf het begin denk ik dat het zeer handig is om er dit soort dingen (prijslijst bijv.) mee te doen.

Waarom is er anders ondersteuning vanuit php om met XML te werken (simpleXML of de Expat parser)? Is dit enkel en alleen om bijvoorbeeld RSS feeds o.i.d te genereren?

Begrijp me niet verkeerd, ik twijfel geen moment aan jouw (jullie) kennis en/of ervaring op dit gebied, ik probeer gewoon de mogelijkheden te verkennen. Maar sommige dingen zijn voor mij niet te rijmen. De tutorials op w3schools punt com bijvooorbeeld geven van allerlei voorbeelden die dus eigenlijk helemaal niet zo heel handig zijn, of waarvan ik de verkeerde indruk krijg.

Acties:
  • 0 Henk 'm!

  • lordgandalf
  • Registratie: Februari 2002
  • Laatst online: 19-09 15:33
Je kunt ook met iets als ajax gaan werken.
Dan stuur je via javascript de veranderingen door naar de webserver.
En die verwerkt de data dan weer

Steam: Profile / Socialclub: Profile / Uplay: minedwarf / Origin: lordgandalf3


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

peterkuli schreef op vrijdag 05 maart 2010 @ 17:23:
Ligt het dan aan het feit dat een prijslijst (te) simpel is, of dat de combinatie XML - php te omslachtig is? Die prijslijst van mij is natuurlijk gewoon een opstapje om uiteindelijk meer dingen te kunnen doen. XML is compleet nieuw voor mij, maar al vanaf het begin denk ik dat het zeer handig is om er dit soort dingen (prijslijst bijv.) mee te doen.
Het is nogal omslachtig om in javascript allemaal code te gaan schrijven die een xml bestand verwerken welke je net zelf (eventueel dynamisch) op de server helemaal in elkaar hebt lopen sleutelen. Het is dan veel makkelijker om op de server alvast de compleet ingevulde html op te sturen.
Waarom is er anders ondersteuning vanuit php om met XML te werken (simpleXML of de Expat parser)? Is dit enkel en alleen om bijvoorbeeld RSS feeds o.i.d te genereren?
De genereren of te lezen. XML is meer een communicatie formaat dan een opslag formaat. het is heel handig om gegevens uit te wisselen tussen verschillende systemen. Bij de koppeling tussen een browser en een webserver is het echter veel makkelijker om gewoon de gegenereerde html op te sturen (wat eigenlijk ook een soort van xml is).
Begrijp me niet verkeerd, ik twijfel geen moment aan jouw (jullie) kennis en/of ervaring op dit gebied, ik probeer gewoon de mogelijkheden te verkennen. Maar sommige dingen zijn voor mij niet te rijmen. De tutorials op w3schools punt com bijvooorbeeld geven van allerlei voorbeelden die dus eigenlijk helemaal niet zo heel handig zijn, of waarvan ik de verkeerde indruk krijg.
Het punt is dat w3schools zich vooral op de client richt. Aangezien je hele pagina een dom tree is is het makkelijk dat je daarop allemaal xml achtige handelingen uit kunt voeren. Dat betekent echter niet automatisch dat je dus alles maar middels xml op de client zult moeten doen.

Kijk je bijvoorbeeld naar php tutorials, dan zullen ze allemaal gaan over code die met een database verbindt en vervolgens die data in de html stopt en dit naar de client stuurt.

@ndeleeuw:

Waarom zou je dat uberhaupt willen?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Als ik de vraag uit de TS letterlijk lees vraagd de TS eigenlijk hoe hij het resultaat van de XML wijzigingen in een textveld kan krijgen. Het XML document via een XML HTTP Request laden in een textveld is niet moeilijk, de XML aanpassen via JS is ook niet moeilijk maar hoe krijg je de resulterende XML in een textarea zodat dit gesubmit kan worden naar een PHP script dat het bestand wegschrijft?
Als je de resulterende XML kan opvragen in JS dan kan de TS dit via een formuliertje of een XML HTTP Request laten verwerken op de server, dan kan precies wat hij wil zonder moeilijke aanpassingen.

[ Voor 20% gewijzigd door Joolee op 05-03-2010 17:46 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Waar het vooral om gaat is de achterliggende vraag van de topicstarter.

Ja Joolee, wat je zegt zou heel goed kunnen, maar daarbij moet je in ogenschouw nemen dat de TS net begonnen is (neem ik even aan) en eigenlijk alleen nog maar tegen de XML mogelijkheid aangelopen is. Aangezien w3school er vol mee staat neemt hij vervolgens aan dat dit blijkbaar de manier is waarop webpagina's werken.

De werkelijke vraag lijkt mij echter:

Ik heb een site waarop prijzen staan. Deze prijzen moeten aanpasbaar zijn. Hoe doe ik dat?

Uiteraard kan dat met een uitgebreide aaneenrijging van een xml bestand dat op de server staat dat door javascript ingelezen wordt welke de resultaten in de pagina injecteerd en vervolgens een wijziging van die resultaten in de xml middels ajax naar een php bestandje stuurt welke de xml inleest en daar de wijziging doet en dit vervolgens wegschrijft op de server. Echter lijkt mij dat nodeloos ingewikkeld (en dan heb ik het nog niet eens over de mogelijke race en caching problemen).

Een simpel php scriptje dat een lijstje prijzen uit de database kan lezen en daarbij een beheer pagina waarmee die prijzen aangepast kunnen worden lijkt mij een veel meer voor de hand liggendere oplossing.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
Janoz schreef op vrijdag 05 maart 2010 @ 17:51:
De werkelijke vraag lijkt mij echter:

Ik heb een site waarop prijzen staan. Deze prijzen moeten aanpasbaar zijn. Hoe doe ik dat?
Klopt.
Janoz schreef op vrijdag 05 maart 2010 @ 17:51:
Een simpel php scriptje dat een lijstje prijzen uit de database kan lezen en daarbij een beheer pagina waarmee die prijzen aangepast kunnen worden lijkt mij een veel meer voor de hand liggendere oplossing.
Klopt ook. Heb ik ook al gedaan ooit en dat ging prima. Maar omdat ik de mogelijkheden van XML graag wil ontdekken dacht ik het hiermee te doen. Het is me nu wel duidelijk dat het niet gaat op de manier zoals ik die bedacht heb. Zoals ook al wel op w3schools staat is dat XML ook mede is om data te transporteren, ook zeker als er sprake is van verschillende systemen.

Voor mijn toepassing moet ik idd gewoon een php scriptje op de server plakken icm mysql database.

Vraag voor mij blijft dan dat ik eigenlijk nog steeds geen goed beeld heb waarvoor XML nou precies gebruikt wordt. Oke, verschillende systemen of OS'en, en daar data tussen versturen, daar kan ik inkomen. Maar verder?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Om in je straatje te blijven. XML uitwisseling is bijvoorbeeld wel handig wanneer je je prijslijst ook aan andere sites aan wilt bieden. Denk daarbij bijvoorbeeld aan de pricewatch van tweakers of aan andere vergelijkings sites. Dat werkt een stuk makkelijker dan de html proberen te doorgronden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • pieturp
  • Registratie: April 2004
  • Laatst online: 18-09 15:56

pieturp

gaffa!

XML moet je meer zien als een soort container-formaat: je kunt er echt van alles in stoppen. Omdat je dan toch één formaat hebt, kan iedereen vrij gemakkelijk de data er uit lezen of juist dingen aanpassen. Het is echter, als je 't over iets eenvoudigs als een prijslijst hebt, makkelijker om niet de overhead van XML te hoeven gebruiken. Pas als er meerdere partijen van dezelfde data gebruik (moeten) maken wordt dat interessant. Zo wordt veel informatie (bijvoorbeeld RSS feeds) in XML aangeboden, zodat je 't vrij makkelijk kunt uitlezen.

Zou 't één of ander binair formaat zijn, is dat al weer een stuk onhandiger. "Byte zoveel tot zoveel is zus-en-zo, daarna staat weer wat anders, mogelijk veel, soms minder"; werkt voor iedereen die zo'n file of stream wil uitlezen natuurlijk veel lastiger dan "Tussen deze tag staat zus-en-zo."

Je gebruikt bij XML dus een aantal conventies (tags en afspraken over encoding e.d.) om data over te sturen, zodat iemand anders er makkelijk mee kan werken ;)

En aangezien veel programmeertalen er dan standaard functionaliteit voor aanbieden hoef je ook dàt wiel niet opnieuw uit te vinden :)

[ Voor 6% gewijzigd door pieturp op 05-03-2010 23:51 ]

... en etcetera en zo


Acties:
  • 0 Henk 'm!

  • peterkuli
  • Registratie: September 2003
  • Laatst online: 13-09 21:10
@Janoz @pieturp

Duidelijk verhaal! Dank voor de reacties.
Het heeft een en ander zeker opgehelderd!
Pagina: 1