Xml data in Table
Code (php)
1
2
3
4
5
2
3
4
5
Prijzen
Aantal Omschrijving Prijs Subtotaal
2 Schoolreisje kind 37
1 Schoolreisje volwassene 18,5
Totaal: NaN
Aantal Omschrijving Prijs Subtotaal
2 Schoolreisje kind 37
1 Schoolreisje volwassene 18,5
Totaal: NaN
NaN is inderdaad de melding die je krijgt wanneer je strings bijelkaar gaat optellen. Verander je de komma in een punt, dan zul je een keurig resultaat krijgen.
Vandaar dat het handig is om de XML-input eerst met een XMLschema te gaan valideren. Jouw datum, 28-03-2008, ziet er bv. ook niet uit als een datum, dan zou het toch echt 2008-03-28 moeten zijn. Zie http://w3schools.com/schema/schema_dtypes_date.asp
Offtopic: Ik lag zelf ook net met XML te stoeien, m'n PostgreSQL-database kan dit namelijk zelf aanmaken en retour geven. Dat maakt interactie met andere systemen, RSS en AJAX allemaal bijzonder eenvoudig. Dan nog net even een stapje verder gaan en ook de xHTML aanmaken met XSLT-templates, maakt het nog fraaier. De hoeveelheid PHP-code neemt ook drastisch af, scheelt weer in de mogelijke bugs.
En is het dan ook mogelijk om de geselecteerde gegevens als sessie op te slaan ?
Bijv ID en Naam van het geselecteerde uit het dropdown menu.
Is dit mogelijk met xsl of is dit beter zonder xsl ?
@Boee: Tuurlijk kan dat, is met xslt een fluitje van een cent. Je kunt het ook zonder xslt doen, maar ik vind dat zelf wat omslachtiger.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<DATA>
<RESULT>
<ARRANGEMENTEN>
<ARRANGEMENT>
<IDARRANGEMENT>1020</IDARRANGEMENT>
<NUMMER>1000</NUMMER>
<CODE>Naam1</CODE>
<OMSCHRIJVING>Naam1</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
<ARRANGEMENT>
<IDARRANGEMENT>1030</IDARRANGEMENT>
<NUMMER>1010</NUMMER>
<CODE>Naam2</CODE>
<OMSCHRIJVING>Naam2</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
</ARRANGEMENTEN>
</RESULT>
</DATA>
<RESULT>
<ARRANGEMENTEN>
<ARRANGEMENT>
<IDARRANGEMENT>1020</IDARRANGEMENT>
<NUMMER>1000</NUMMER>
<CODE>Naam1</CODE>
<OMSCHRIJVING>Naam1</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
<ARRANGEMENT>
<IDARRANGEMENT>1030</IDARRANGEMENT>
<NUMMER>1010</NUMMER>
<CODE>Naam2</CODE>
<OMSCHRIJVING>Naam2</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
</ARRANGEMENTEN>
</RESULT>
</DATA>
Mijn XSLT template zou dus hiervan een dropdown menu moeten maken, zodra ik Naam1 selecteer hij automatisch IDARRANGEMENT, CODE, en NUMMER ook meeneemt zodat ik die in een sessie kan zetten dat ik deze kan gebruiken op een volgende pagina.
Na wat speurwerk heb ik op internet wel wat XSLT dropdowns gevonden maar nog niks wat in staat is om dit te doen.
Vandaar dat ik hier vraag of dit wel mogelijk is en hoe dit eruit komt te zien ?.
Mvg,
Boee
Veel makkelijker is het waarschijnlijk om de gewoon de naam (of eventueel het id) met het formulier te verzenden en dan tijdens de verwerking de benodigde gegevens uit je XML file te lezen...
En zodra ik op next druk in mijn form hij weer gaat checken wat alle gegevens waren van de geselecteerde Omschrijving en die opslaat in losse sessie namen ?
Nu vraag ik me af hoe ik in xslt een foreach Omschrijving in een dropdown krijg.(en/of mogelijk value IDARRANGEMENT)
Volledige XML:
Code (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
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
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<DOCUMENT>
<NUMBER>55</NUMBER>
<VERSION>1</VERSION>
<HEADER>
<RESPONSE>
<DATUM>27-03-2008</DATUM>
<TIJD>9:53:37</TIJD>
</RESPONSE>
</HEADER>
<DATA>
<RESULT>
<ARRANGEMENTEN>
<ARRANGEMENT>
<IDARRANGEMENT>1030</IDARRANGEMENT>
<NUMMER>1000</NUMMER>
<CODE>Naam2</CODE>
<OMSCHRIJVING>Naam2</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
<ARRANGEMENTEN>
<ARRANGEMENT>
<IDARRANGEMENT>1020</IDARRANGEMENT>
<NUMMER>1010</NUMMER>
<CODE>Naam1</CODE>
<OMSCHRIJVING>Naam1</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
</ARRANGEMENTEN>
</RESULT>
</DATA>
<CONTROL>
<STATUS>
<CODE>OK</CODE>
<MESSAGE>OK</MESSAGE>
</STATUS>
</CONTROL>
</DOCUMENT>
<DOCUMENT>
<NUMBER>55</NUMBER>
<VERSION>1</VERSION>
<HEADER>
<RESPONSE>
<DATUM>27-03-2008</DATUM>
<TIJD>9:53:37</TIJD>
</RESPONSE>
</HEADER>
<DATA>
<RESULT>
<ARRANGEMENTEN>
<ARRANGEMENT>
<IDARRANGEMENT>1030</IDARRANGEMENT>
<NUMMER>1000</NUMMER>
<CODE>Naam2</CODE>
<OMSCHRIJVING>Naam2</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
<ARRANGEMENTEN>
<ARRANGEMENT>
<IDARRANGEMENT>1020</IDARRANGEMENT>
<NUMMER>1010</NUMMER>
<CODE>Naam1</CODE>
<OMSCHRIJVING>Naam1</OMSCHRIJVING>
<MAX_PERSONEN>50</MAX_PERSONEN>
</ARRANGEMENT>
</ARRANGEMENTEN>
</RESULT>
</DATA>
<CONTROL>
<STATUS>
<CODE>OK</CODE>
<MESSAGE>OK</MESSAGE>
</STATUS>
</CONTROL>
</DOCUMENT>
Gewijzigd op 01/01/1970 01:00:00 door boee
Ik neem aan dat het openen op regel 21 fout is, dat zou wel zo logisch zijn.
Code (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
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
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" omit-xml-declaration="no" xml:lang="nl"/>
<xsl:template match="/DOCUMENT/DATA/RESULT/ARRANGEMENTEN">
<htm>
<head>
<title>Options</title>
</head>
<body>
<form action="">
<select>
<xsl:for-each select="ARRANGEMENT">
<xsl:variable name="option_value" select="IDARRANGEMENT"/>
<option value="{$option_value}"><xsl:value-of select="OMSCHRIJVING"/></option>
</xsl:for-each>
</select>
<button type="submit">Verzenden</button>
</form>
</body>
</htm>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" omit-xml-declaration="no" xml:lang="nl"/>
<xsl:template match="/DOCUMENT/DATA/RESULT/ARRANGEMENTEN">
<htm>
<head>
<title>Options</title>
</head>
<body>
<form action="">
<select>
<xsl:for-each select="ARRANGEMENT">
<xsl:variable name="option_value" select="IDARRANGEMENT"/>
<option value="{$option_value}"><xsl:value-of select="OMSCHRIJVING"/></option>
</xsl:for-each>
</select>
<button type="submit">Verzenden</button>
</form>
</body>
</htm>
</xsl:template>
</xsl:stylesheet>
Dat levert dit resultaat op:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Options</title>
</head>
<body>
<form action="">
<select>
<option value="1030">Naam2</option>
<option value="1020">Naam1</option>
</select>
<button type="submit">Verzenden</button>
</form>
</body>
</html>
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Options</title>
</head>
<body>
<form action="">
<select>
<option value="1030">Naam2</option>
<option value="1020">Naam1</option>
</select>
<button type="submit">Verzenden</button>
</form>
</body>
</html>
Aanpassen aan je eigen behoeftes en klaar ben je.
pgFrank schreef op 31.03.2008 15:45:
Wanneer je regel 21 uit de XML verwijdert, <ARRANGEMENTEN>, zou je met de volgende XSLT kunnen werken:
.
.
Vriendelijk bedankt nogmaals voor de snelle correcte response op mijn vragen.
idd <ARRANGEMENTEN> was dubbel omdat ik die zelf had aangemaakt met wat knip en plak werk.
is het hiermee ook mogelijk als ik bijv 3-4arrangementen terug krijg dat ik ze allemaal laat zien ?, of moet ik die appart er dan bijzetten.
Mvg
Boee
mod-edit::
Bumpen
Twee of meer keer achter elkaar in een topic posten, voordat andere forumleden gereageerd hebben, heet "bumpen". Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan. Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten. Gebruik het knopje om je tekst aan te passen indien nodig.
Twee of meer keer achter elkaar in een topic posten, voordat andere forumleden gereageerd hebben, heet "bumpen". Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan. Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten. Gebruik het knopje om je tekst aan te passen indien nodig.
Html
Code (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
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
<?xml version="1.0"?>
<!DOCTYPE htm PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
55
1
27-03-2008
9:53:37
<htm>
<head>
<title>Options</title>
</head>
<body>
<form action="">
<select>
<option value="1018">Schoolreisje I</option>
<option value="1011">test</option>
</select>
<button type="submit">Verzenden</button>
</form>
</body>
</htm>
<!DOCTYPE htm PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
55
1
27-03-2008
9:53:37
<htm>
<head>
<title>Options</title>
</head>
<body>
<form action="">
<select>
<option value="1018">Schoolreisje I</option>
<option value="1011">test</option>
</select>
<button type="submit">Verzenden</button>
</form>
</body>
</htm>
raar genoeg laat hij ook de rest van de gegevens nu zien.
Gewijzigd op 01/01/1970 01:00:00 door boee
Tikfoutje.... <htm> mag worden <html>. Uiteraard moet je deze ook weer even correct afsluiten.
pgFrank schreef op 01.04.2008 10:55:
Tikfoutje.... <htm> mag worden <html>. Uiteraard moet je deze ook weer even correct afsluiten.
pff dat ik dat zelf niet had gezien. dom dom dom :P
Gewijzigd op 01/01/1970 01:00:00 door boee