[XML,PHP,JS] Doorschuiven van variabelen *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Odelay,

Geen dringende vraag hier, maar ik vroeg me af of er een efficiëntere manier is voor wat ik aan het doen ben. Ik heb variabelen, die ik wil gebruiken in een javascript, in een xml file staan. die php script laad ik ze in:

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
<?php    // Function loads data from posted xml file

    if (isset($_GET['file'])) {$file=$_GET['file'];}
    else {$file='default.xml';}
    $doc = new DOMDocument();
    $doc->load( $file );
    $settings = $doc->getElementsByTagName("settings");
    
    $expnames = $doc->getElementsByTagName("expname");
    $expname = $expnames->item(0)->nodeValue;
    
    $trialDelays = $doc->getElementsByTagName("trialDelay");
    $trialDelay = $trialDelays->item(0)->nodeValue;

    $stimShows = $doc->getElementsByTagName("stimShow");
    $stimShow = $stimShows->item(0)->nodeValue;
    
    $stimDelays = $doc->getElementsByTagName("stimDelay");
    $stimDelay = $stimDelays->item(0)->nodeValue;
    
    $boxDelays = $doc->getElementsByTagName("boxDelay");
    $boxDelay = $boxDelays->item(0)->nodeValue;
    
    $alertTexts = $doc->getElementsByTagName("alertText");
    $alertText = $alertTexts->item(0)->nodeValue;
        
?>


en dit is het xml bestand

XML:
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8"?>
<settings> <!-- Settings go here -->
    <trialDelay>50</trialDelay>     <!-- delay between trials in miliseconds -->
    <stimShow>1000</stimShow>       <!-- how long is the stimulus visible -->
    <stimDelay>1000</stimDelay>     <!-- delay between stim1 and stim2 -->
    <boxDelay>1000</boxDelay>       <!-- delay between stim2 and textbox -->
    <expname>"newname"</expname>    <!-- -->
    <alertText>"next stimuli is coming up, press enter to remove this box when you're ready"</alertText>
</settings>


en dit is dan de variabele toekenning in JS

JavaScript:
1
2
3
4
file = "<?echo($file)?>"
expname = <?echo($expname)?>;
trialDelay = <?echo($trialDelay)?>;
etc....


zoals je ziet zijn de variabele namen en de tag names hetzelfde, daarom vroeg ik me af of het niet in een lus kan of iets dergelijks. Het moet wel FF & IE compatible blijven.

Iemand een direct idee? Nogmaals, het is echt niet dringend, want dit werkt prima, ik was alleen nieuwsgierig of ik de beste manier gebruik.

offtopic:
verdeeeurie, helemaal vergeten de topic title af te maken, kan iemand dat fixen naar
'doorschuiven van variabelen' oid?

[ Voor 3% gewijzigd door Verwijderd op 03-01-2007 23:46 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Associative arrays gebruiken.

[edit]
Een beetje in pseudo-code:

Maak een lege array.
Loop alle child nodes van je document element af.
Als een child node een element node is, stop je in je array de node value van de firstChild, met als key de tagName van het element.
Loop de array af met foreach (key en value gebruiken) en schrijf wat javascript.

Of je laat de array tussenstap weg, en schrijft meteen je javascript, maar dat lijkt mij niet zo handig.

[ Voor 88% gewijzigd door Verwijderd op 03-01-2007 23:54 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gratie! daar ga ik later eens naar kijken