ReisTip

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Full Stack Developer/ Applicatie Ontwikkelaar

Wat jij doet Als Applicatie Ontwikkelaar ben je onderdeel van het team die de Rimote omgeving ontwikkeld en onderhoud. Hierbij kan je denk aan de cloud, on premise en webapplicaties welke worden gebruikt in bijvoorbeeld industriële bakkerijen, biogasinstallaties en kwekerijen. Deze applicaties verzorgen (remote) de aansturing en monitoring van processen, machines en robots. Van a tot z ben je betrokken bij projecten. Dit betekent vanaf ontwerp tot oplevering. Je moet samen met jouw team een goed product neer zetten. Dit begint met het opzetten van het ontwerp. De basis van de software moet staan als een huis. Daarvoor moet jij

Bekijk vacature »

Creatieve Front-end developer gezocht!

Functie Het front-end team bestaat momenteel uit 4 collega’s en is hard aan het groeien! Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren. Je werkt in het front-end team samen met de back-end teams en product owners om te zorgen dat de applicaties een fijne gebruikerservaring opleveren. Jouw expertise zorgt ervoor dat de juiste keuzes gemaakt worden qua techniek en ontwerp, van back-end tot aan gebruiker. In samenspraak met je team bepalen jullie de beste keuze voor techniek. Ook is er altijd ruimte om nieuwe technieken te ontdekken. Eisen • Je hebt gedegen

Bekijk vacature »

PHP Developer - Draag bij aan de maatschappij!

Bedrijfsomschrijving Wil jij als applicatieontwikkelaar deel uitmaken van een gedreven ontwikkelteam en werken aan innovatieve producten? Dan hebben wij dé uitdaging voor jou! Wij zijn op zoek naar een enthousiaste collega die samen met ons de technische ondergrond van onze producten verder wil ontwikkelen met behulp van PHP. Met jouw expertise geef je de finishing touch aan onze producten om jezelf steeds opnieuw weer te verrassen. Functieomschrijving Bij ons staan innovatie en creativiteit centraal. Wij zijn op zoek naar een enthousiaste PHP ontwikkelaar die nieuwe ideeën en inzichten kan inbrengen en daarmee zichzelf en het team verder kan laten groeien.

Bekijk vacature »

C++ Ontwikkelaar

Functieomschrijving Ben jij toe aan een nieuwe uitdaging en werk je graag en goed in C++ en C#? Dan zijn we op zoek naar jou! Dit bedrijf is dé specialist op het gebied van automatiseringssoftware voor een specifieke branche en ze zijn per direct op zoek naar versterking in hun development team. Wat jij gaat doen binnen jouw rol als C++ ontwikkelaar; Je vertaalt de wensen van gebruikers naar een functioneel ontwerp. Je houdt je bezig met het ontwerpen, programmeren en testen van product aanpassingen. Je gaat nieuwe product releases implementeren in de projectteams. Je gaat de effecten van nieuwe

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

Social Media Specialist

Social Media Specialist locatie: Rotterdam (Zuid Holland) Wij zoeken op korte termijn een nieuwe collega, een social media specialist/ adviseur sociale media (24 uur), voor ons sprankelende team Communicatie van CJG Rijnmond. Onze focus ligt op het informeren en binden van onze in- en externe klanten en stakeholders en het versterken van onze naamsbekendheid en zichtbaarheid. Dat doen we in nauwe samenwerking met elkaar. Over de functie Ons team bestaat uit 7 communicatieprofessionals met ieder een eigen expertise. Als lid van het online team ben je verantwoordelijk voor het ontwikkelen, uitvoeren en analyseren van onze socialemediastrategie. Ook stel je campagnes

Bekijk vacature »

Software Ontwikkelaar

Functie omschrijving Voor een echt familiebedrijf in de omgeving van 's-Hertogenbosch ben ik op zoek naar een Software Developer. Jij gaat in de functie van Software Developer werken met C# en .NET framework Jij gaat maatwerk software ontwikkelen en softwareoplossingen creëren. Daarnaast optimaliseer je de bestaande software. Oplossingen waar de klant echt iets aan heeft, jij krijgt er energie van op dit te realiseren. Je gaat werken in een Microsoft omgeving(ASP.NET) en gebruikt daarnaast C# en MVC. Samen met het huidige IT team binnen deze organisatie verwerk je de wensen van de klant tot een (eind)product. Bedrijfsprofiel Deze organisatie is

Bekijk vacature »

Java Ontwikkelaar

Java/Kotlin Developer Ben jij een ervaren Java/Kotlin developer met een passie voor het automatiseren van bedrijfsprocessen? Wil je graag deelnemen aan uitdagende projecten bij aansprekende klanten? En ben je op zoek naar een professioneel, ambitieus en dynamisch bedrijf om je carrière verder te ontwikkelen? Kom dan ons team bij Ritense in Amsterdam versterken! Zo ziet de functie eruit: Als Java/Kotlin developer bij Ritense ben je verantwoordelijk voor de ontwikkeling en implementatie van applicaties die bedrijfsprocessen automatiseren, zodat onze klanten slimmer, efficiënter en klantgerichter kunnen werken. Als developer ben je in de lead en zorg je voor de correcte oplevering van

Bekijk vacature »

Java Developer (Training And Simulation)

Wat jij doet Je zou onze Java Developer zijn en nauw samenwerken met je Product Owner, Software System Engineer, Scrum Master en andere Developers. Samen draag je bij aan een multidisciplinair en zelf organiserend Agile team. De rol is zeer afwisselend en bestaat uit, maar is zeker niet beperkt tot: de-risk en prototype onbewezen simulatietechnologieën; simulatiekaders ontwikkelen voor gebruik door andere teams; je bent goed in het begrijpen van ingewikkelde ideeën; heeft de mogelijkheid om nauw samen te werken met grote internationale klanten, leveranciers en overheden om onze oplossingen, vastleggingsvereisten, enz. te definiëren en te presenteren. Ben jij het? Wij

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Front-end developer E-Commere

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als front-end developer heb je een adviserende rol en sta je aan het eindpunt van alles wat met designs te maken heeft. Je overlegt met klanten en collega’s, en zet je in om ideeen om te zetten tot unieke concepten. Je bent het aanspreekpunt voor de klant en bewaakt tevens de planning. Eisen

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

IoT Software Developer PHP

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een IoT software developer met kennis van PHP. In deze rol wordt je verantwoordelijk voor het vernieuwen van het multimedia platform van een super tof bedrijf in Breda. Je gebruikt PHP als programmeerlaag, en bent in staat om de helicopterview te pakken / projectmatig te werken. Jouw werkzaamheden zien er als volgt uit: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "intern" ontwikkelde multimedia platform. Je neemt de lead in het moderniseren van het platform door het deels opnieuw op te zetten of

Bekijk vacature »

Front end developer

Functie Binnen de functie van Front-end developer werk je mee aan uitdagende klantprojecten. In teamverband werk je aan de voorkant van onze state-of-the-art portaal oplossingen en apps. Dit alles gebeurt in een multidisciplinaire omgeving waarbij je de ruimte hebt om te sparren, je ideeën scherp te stellen, en waar je met de benodigde kennis en ervaring om je heen altijd terecht kunt bij je collega’s voor vragen en ondersteuning. Meestal werk je vanuit ons kantoor maar we bieden ook alle faciliteiten om thuis te kunnen werken. Voor sommige projecten ga je mee naar de klant, wellicht zelfs in het buitenland!

Bekijk vacature »

Pagina: 1 2 3 volgende »

David Meijer

David Meijer

20/10/2014 10:45:19
Quote Anchor link
Hallo Allemaal,

Ik had een vraag hoe moet ik met zo als bij de NS de ReisTip laten zien kijk maar wat er achter de intercity staat naar Den Helder.

Want bij mij wordt dat niet getoont daar zie ik alleen Array staan.

zie screenshots

Afbeelding

Afbeelding
Gewijzigd op 20/10/2014 10:57:57 door David Meijer
 
PHP hulp

PHP hulp

27/12/2024 22:38:23
 
Henk de Vriep

Henk de Vriep

20/10/2014 10:59:37
Quote Anchor link
Het zou wellicht handig kunnen zijn om aan te geven hoe je deze gegevens inlaad? RSS? XML? CSV? API?
 
David Meijer

David Meijer

20/10/2014 11:03:30
Quote Anchor link
via NS API en dan komt hij via PHP op me site te recht.
 
Ivo P

Ivo P

20/10/2014 11:14:15
Quote Anchor link
Stel je hebt een array, en je probeert dat als geheel te echo-en, dan krijg je inderdaad "Array".


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$myArray
= ['aap', 'noot', 'mies'];

echo $myArray[0];   // geeft aap

echo $myArray;  // geeft Array

?>
 
David Meijer

David Meijer

20/10/2014 11:16:12
Quote Anchor link
dus dit staat hier niet goed.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
                                        if($soort == $ReisTip){
                                        ?>

                                        <?php
                                        }
                                        
                                        foreach ((array) $comment as $ReisTip)
                                        {

                                        ?>


                                        <div id="comment"><?php echo "$comment"; ?></div>
                                        <?php
                                        }
                                        
                                        foreach ((array) $ReisTip as $comment)
                                        {

                                        ?>

                                        
                                        <div id="ReisTip"><font color='red'><?php echo "$ReisTip"; ?></font></div>
                                                                                
                                        <?php                                        
                                        }
[
/code]
Gewijzigd op 20/10/2014 11:23:50 door David Meijer
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 11:37:15
Quote Anchor link
Je echoed nu nu een array $ReisTip, probeer eens $comment.
 
David Meijer

David Meijer

20/10/2014 11:46:46
Quote Anchor link
Dan krijg ik te zien bijvoorbeeld dat hij niet rijdt of dat hij via een andere route rijd.
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 11:50:48
Quote Anchor link
Dat is dan toch wat je wilt?
 
David Meijer

David Meijer

20/10/2014 11:52:35
Quote Anchor link
Ja maar dat andere zie ik dus niet zo als stopt vanaf Roosendaal op alle stations

Toevoeging op 20/10/2014 11:54:35:

Dit is een stukje code van Enkhuizen via de Webservices van de NS

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<ActueleVertrekTijden><VertrekkendeTrein><RitNummer>1545</RitNummer><VertrekTijd>2014-10-20T11:54:00+0200</VertrekTijd><EindBestemming>Amsterdam Centraal</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1547</RitNummer><VertrekTijd>2014-10-20T12:24:00+0200</VertrekTijd><EindBestemming>Amersfoort</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1549</RitNummer><VertrekTijd>2014-10-20T12:54:00+0200</VertrekTijd><EindBestemming>Amersfoort</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1551</RitNummer><VertrekTijd>2014-10-20T13:24:00+0200</VertrekTijd><EindBestemming>Amersfoort</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1553</RitNummer><VertrekTijd>2014-10-20T13:54:00+0200</VertrekTijd><EindBestemming>Amsterdam Centraal</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1555</RitNummer><VertrekTijd>2014-10-20T14:24:00+0200</VertrekTijd><EindBestemming>Amersfoort</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1557</RitNummer><VertrekTijd>2014-10-20T14:54:00+0200</VertrekTijd><EindBestemming>Deventer</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1559</RitNummer><VertrekTijd>2014-10-20T15:24:00+0200</VertrekTijd><EindBestemming>Deventer</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1561</RitNummer><VertrekTijd>2014-10-20T15:54:00+0200</VertrekTijd><EindBestemming>Amersfoort</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein><VertrekkendeTrein><RitNummer>1563</RitNummer><VertrekTijd>2014-10-20T16:24:00+0200</VertrekTijd><EindBestemming>Deventer</EindBestemming><TreinSoort>Intercity</TreinSoort><RouteTekst>Hoorn, A'dam Sloterdijk, Amsterdam C.</RouteTekst><Vervoerder>NS</Vervoerder><VertrekSpoor wijziging="false">1</VertrekSpoor><ReisTip>Stopt tot Hoorn op tussengelegen stations</ReisTip></VertrekkendeTrein></ActueleVertrekTijden


Daar staat juis wel de ReisTip.
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 11:55:41
Quote Anchor link
Ik heb geen idee of de NS die informatie ook meegeeft. Met enig debug-werk met print_r kan je erachterkomen.
 
David Meijer

David Meijer

20/10/2014 11:57:09
Quote Anchor link
Dan staat die Array op 0 juist wat ik je liet zien.

En van hun moest ik juist weer bij NS-API zijn van Google Group.
Gewijzigd op 20/10/2014 11:59:00 door David Meijer
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 12:01:27
Quote Anchor link
Laat eens zien met relevante code hoe je de boel ophaalt.
 
David Meijer

David Meijer

20/10/2014 12:04:26
Quote Anchor link
Oke

Dit is de Code waar ik het op haalt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
<?php

class PhpNsTrains {

    /* API Base URL setting
    * Note: currently HTTP, couldn't get the HTTPS to work so far
    */

    private static $base_url = "http://webservices.ns.nl/";
    
    private $authUser;
    private $authPassword;

    /* Constructor, takes API username and password obtainable from http://www.ns.nl/api */
    function __construct($username, $password) {
        $this->authUser = $username;
        $this->authPassword = $password;
    }

    
    /*     
     * Return a list of stations, optionally an associative array with the
     * given key from the return values (name, code, lat or long). Second parameter
     * specifies whether or not to only include Dutch train stations
     * NOTE: In most normal use cases, cache this result
     */

    function getStations($key = null, $nlOnly = false) {
        $xmlTree = $this->getUrl('ns-api-stations-v2');
        
        if (!in_array($key, array('name', 'code', 'lat', 'long')))
            $key = null;
            
        $output = array();
        foreach($xmlTree as $xmlStation) {
            $station = (array) $xmlStation;
            if ($nlOnly && $station['country'] == 'NL') { // Check if dutch
                if ($key) {
                    $output[$station[$key]] = $station;
                }
else {
                    $output[] = $station;
                }
            }
        }

        return $output;
    }

    
    /*
     * Get a list of current service disruptions. Options are:
     *  - 'station': filtered for given station
     *  - 'actual': show current disruptions? (boolean)
     *  - 'unplanned': show planned engineering works? (boolean)
     *  
     *  TODO: Handle 'bericht' field and test unplanned disruptions and
     *  add a helper function here
     */

    function getDisruptions($options = array()) {
        $xmlTree = $this->getUrl('ns-api-storingen', $options);

        $disruptions = array();
        foreach($xmlTree->Gepland->Storing as $xmlNotice){
            $notice = (array) $xmlNotice;
            $disruptions[] = array('id' => $notice['id'], 'applicable' => $notice['Traject'], 'period' => $notice['Periode'],
                'alternative' => $notice['Advies'], 'reason' => $notice['Reden'], 'delay' => $notice['Vertraging'], 'type' => 'planned');
        }

        foreach($xmlTree->Ongepland->Storing as $xmlNotice){
            $notice = (array) $xmlNotice;
            $disruptions[] = array('id' => $notice['id'], 'applicable' => $notice['Traject'], 'period' => $notice['Periode'],
                'alternative' => $notice['Advies'], 'reason' => $notice['Reden'], 'delay' => $notice['Vertraging'], 'type' => 'unplanned');
        }

        
        return $disruptions;
    }

    
    /*
     * Get a live list of departures for a given station, optionally with an name of key to use for the index
     */

    function getDepartures($station, $key = null) {
        $xmlTree = $this->getUrl('ns-api-avt', array('station' => $station));
        $output = array();
        // Loop over each train entry
        foreach($xmlTree as $xmlTrain) {
            // Cast as an array to get access to most keys
            $train = (array) $xmlTrain;    
            $add = array('departure' => strtotime($train['VertrekTijd']), 'service' => $train['RitNummer'],
                'destination' => $train['EindBestemming'], 'carrier' =>  $train['Vervoerder'], 'type' => $train['TreinSoort'],
                'platform' => $train['VertrekSpoor'], 'via' => $train['RouteTekst'] ? $train['RouteTekst'] : "");
            
                        // Decode any (optional) delay to a integer minute value
            if (isset($train['VertrekVertraging'])) {
                if (preg_match('/^PT(\d{0,3}?)M$/', $train['VertrekVertraging'], $matches)) {
                    $add['delay'] = $matches[1];
                }
            }


            // Check if the platform was changed
            $changed = false;
            if($xmlTrain->VertrekSpoor->attributes()) {
                $attr = (array) $xmlTrain->VertrekSpoor->attributes();
                if (isset($attr['@attributes']['wijziging']) && $attr['@attributes']['wijziging'] == "true")
                    $changed = true;
            }

            $add['platform_changed'] = $changed;
            
            // Add the various comments, also check if train is cancelled
            $cancelled = false;
               $add['ReisTip'] = $ReisTip; print_r($ReisTip);
        foreach($xmlTrain->ReisTip as $comment) {
                                $text = trim((string) $comment->ReisTip);
                                if ($text == "Stopt niet in Arnhem Zuid") {
                                        $ReisTip = true;
                               }

                               $add['ReisTip'][] = $text;
                         }

                               $add['cancelled'] = $cancelled;
        foreach($xmlTrain->Opmerkingen as $comment) {
                                $text = trim((string) $comment->Opmerking);
                                if ($text == "Rijdt vandaag niet") {
                                        $cancelled = true;
                                }

                                $add['comments'][] = $text;
                        }

                                $add['cancelled'] = $cancelled;
                                
            // Add the train to our output list
            $output[] = $add;
        }

        return $output;
    }

    
    /*
     * List the available travel options given a origin and destination.
     * Several options can also be set:
     *     - 'previousAdvices': number of ravel options to list in the past (max 5)
     *  - 'nextAdvices':  number of ravel options to list in the future (max 5)
     *  - 'dateTime': arrival or departure time
     *  - 'departure': is the above parameter arrival or departure (boolean)
     *  - 'hslAllowed': also use highspeed trains? (boolean) - default: true
     *  - 'yearCard': assume free travel? (boolean) - default: false
     *  
     *  TODO: Add support for notices/detection about invalid connections
     */

    function getTrips($from, $to, $options = array()) {
        if (!empty($options['dateTime'])) {
            $options['dateTime'] = date('c', strtotime($options['dateTime']));
        }

        $xmlTree = $this->getUrl('ns-api-treinplanner', array_merge(array('fromStation' => $from, 'toStation' => $to), $options));
        
        $output = array();
        // Loop over each option
        foreach($xmlTree as $xmlTrip) {
            $trip = (array) $xmlTrip;
            $tripOption = array('duration_scheduled' => self::hourMinutesToSeconds($trip['GeplandeReisTijd']),
                'duration_actual' => self::hourMinutesToSeconds($trip['ActueleReisTijd']),
                'optimal' => $trip['Optimaal'], 'departure_actual' => $trip['ActueleVertrekTijd'], 'departure_scheduled' => $trip['GeplandeVertrekTijd'],
                'departure_actual' => strtotime($trip['ActueleVertrekTijd']), 'departure_scheduled' => strtotime($trip['GeplandeVertrekTijd']),
                'arrival_actual' => strtotime($trip['ActueleVertrekTijd']), 'arrival_scheduled' => strtotime($trip['GeplandeVertrekTijd']),
                'changes' => $trip['AantalOverstappen']
            );

            
            // Loop over each part of the option
            foreach ($xmlTrip->ReisDeel as $xmlPart) {
                $part = (array) $xmlPart;
                $stops = array();
                
                // Loop over each stop
                foreach ($xmlPart->ReisStop as $xmlStop) {
                    $stop = (array) $xmlStop;
                    $curStop = array('station' => $stop['Naam'], 'time' => strtotime($stop['Tijd']));
                    if (!empty($stop['Spoor'])) {
                        $curStop['platform'] = $stop['Spoor'];
                    }

                    $stops[] = $curStop;
                }

                
                $tripOption['connections'][] = array('mode' => strtolower($part['@attributes']['reisSoort']),
                    'type' => $part['VervoerType'], 'service' => $part['RitNummer'], 'stops' => $stops);
            }

            $output[] = $tripOption;
        }

        return $output;
    }

    
    /*
     * Get a list of prices for a give to/from trip
     * Lists class as 1 or 2 (first/second) and discount as (0, 20 or 40%)
     */

    function getPrices($from, $to, $via = null) {
        $xmlTree = $this->getUrl('ns-api-prijzen-v2', array('from' => $from, 'to' => $to, 'via' => $via));
        
        $output = array();
        foreach($xmlTree->Product as $product) {
            $productArray = (array) $product;
            foreach ($product->Prijs as $price) {
                $price = (array) $price;
                switch ($price['@attributes']['korting']) {
                    case
"reductie_20": $discount = 20; break;
                    case
"reductie_40": $discount = 40; break;
                    case
"vol tarief": $discount = 0; break;
                    default:
$discount = 0; break;
                }

                $output[] = array('product' => $productArray['@attributes']['naam'],
                    'class' => $price['@attributes']['klasse'], 'discount' => $discount, 'price' => $price[0]);
            }
        }

        
        return $output;         
    }

    
    // UTILITY FUNCTIONS
    
    /*
     * Convert hours and minutes seperated by a colon to seconds
     */

    private function hourMinutesToSeconds($input) {
        $input = explode(':', $input);
        return 60*($input[1]+ ($input[0]*60));
    }

    
    /*
     * Internal functioning for downloading data
     * TODO: Add support for HTTPS and/or CURL
     */

    private function getUrl($endpoint, $vars = array()) {
    
        // Write query string
        $query = "?";
        foreach($vars as $key => $value) {
            if ($value != "") {
                $query .= $key."=".$value."&";
            }
        }

        $query = rtrim($query, '&');
        $url = self::$base_url . $endpoint . $query;

        // Create context to be able to specify authentication
        $context = stream_context_create(array(
            'http' => array(
                'header'  => "Authorization: Basic " . base64_encode($this->authUser.":".$this->authPassword)
            )
        ));

        $data = file_get_contents($url, false, $context);
        if (!$data)
            return false;
        
        // Parse the result
        $xmlTree = simplexml_load_string($data);
        
        return $xmlTree;
    }

}


?>


En dit is hoe ik het op me site zie.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
<?PHP
//DATUM NL
  $tijd = date("H:i");
  $dag_vd_week = date("w");
  $maand_vh_jaar = date("n")-1;
  $dedag = date("j");
  $jaar = date("Y");
  $uur = explode(":", $tijd);

  $dagen = array('Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag');
  $maanden = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
  $dag = $dagen[$dag_vd_week];
  $maand = $maanden[$maand_vh_jaar];


//STATIONS VARS
$station = $_GET['from'];
$station = stripslashes($_GET['from']);
$stationnaam = urlencode($station);

include './js/sec.php';
?>

<?php
//Haal het bestand op
$xml_feed4 = file_get_contents('http://www.ns.nl/storingen/index.rss');
//Een XML phraser aanmaken
$xml_praser4 = xml_parser_create();
//Verwerking
xml_parse_into_struct($xml_praser4,$xml_feed4,$xml_sleutel,$xml_index);
xml_parser_free($xml_praser4);
//Genereren van headlines
for($s = 0; !empty($xml_index['TITLE'][$s]); $s++){

    if ($s == 0) {
    $storing = 0;
    }
if ($s == 1) {
    $storing =  1;
    $storing1 = $xml_sleutel[$xml_index['TITLE'][1]]['value'];
    $naam = $storing1;
    }
if ($s > 1) {
    $storing =  $s;
    }
}

?>

<div id="textbox">
  <p class="alignleft">Station <?PHP echo $station; ?></p>
  <p class="alignright"><?PHP echo "$dag $dedag $maand $jaar - $tijd"; ?></p>
</div><div style="clear: both;"></div>
<?PHP
if($storing == 1) {
echo "<div id='storing'>Er is op dit moment 1 storing bekend!</div>";
}

if($storing > 1) {
echo "<div id='storing'>Er zijn op dit moment $storing storingen bekend!</div>";
}

?>

<table cellpadding="0" cellspacing="0" style="width: 100%; color: #FFFFFF; background-color: #18295B;">
<td width="5px"></td><td width="70px"><div id="top_tijd">Vertrek</div></td><td width="450px"><div id="top_bestemming">
Naar / Opmerkingen</div></td><td width="58px"><div id="top_spoor">Spoor</div></td><td width="80px"><div class="top_soort">Trein</div></td><td><div class="top_opmerking">Opmerkingen</div></td>
</table>
<table cellpadding="0" cellspacing="0" style="width: 100%; color: #FFFFFF;">
<?PHP
    require('ns.class.php');
    define(API_USER, '[email protected]');
    define(API_PASSWORD, 'ac7XG_DP5BnFcco9_01-b2dq4Ps5cgyXv4wnzR_WpNWCXR6xMr_SYg');
    $ns = new PhpNsTrains(API_USER, API_PASSWORD);
        
        
        foreach($ns->getDepartures($stationnaam) as $train) {
            
            $vertrektijd = date('H:i', $train['departure']);
            $soort = $train['type'];
            $ritnummer = $train['service'];
            $via = $train['via'];
            $vervoerder = $train['carrier'];
            $bestemming = $train['destination'];
            $spoor = $train['platform'];
            $vertrekspoor = strtolower($spoor);
            $vertraging = $train['delay'];
            $spoorw = $train['platform_changed'];
            $cancelled = $train['cancelled'];
            $comment = $train['comments'];  
            $ReisTip = $add['ReisTip']; print_r($ReisTip);
                $i++;        
                     if($soort == ""){
                        $soort = "Trein";
                    }

                    if($cancelled == "true"){
                        $weg = true;
                        $vertraging = 0;
                        $vertrekspoor = "leeg";
                    }
else{
                        $weg = false;
                    }


                    if($soort == "CityNightLine"){
                        $soort = "CityNightLine";
                    }

                    if($soort == "SPR"){
                        $soort = "Sprinter";
                    }

                    if($soort == "Stopbus i.p.v. Trein"){
                        $vertrekspoor = "leeg";
                        $soort = "Stopbus i.p.v. Trein";
                    }

                    if($soort == "Snelbus i.p.v. Trein"){
                        $vertrekspoor = "leeg";
                        $soort = "Snelbus i.p.v. Trein";
                    }

                    if($bestemming == "Den Haag Centraal / Rotterdam Centraal"){
                        $bestemming = "Den Haag CS / Rotterdam CS";
                    }

                    if($spoorw == "true") {
                        $swijziging = "true";
                        $swijzigingtekst = "Spoor Gewijzigd!";
                    }
else{
                        $swijziging = false;
                    }



                            $delay = $vertraging * 60;
                            $time2 = strtotime($vertrektijd);
                            $time2 = date("H:i", $time2 + $delay);

                            $orgi = date("H:i");
                            $orgi = strtotime($orgi);
                            $time3 = strtotime($vertrektijd);
                            $time3 = date("i", $time3 - $orgi);
                            $time33 = str_replace("0", " ", "$time3");
                    if($i < 16){
                    
                        $background=($i&1)?"":"&amp;achtergrond=wit";
                        ?>
                  
                
                
        <tr class="row<? echo ($i&1); ?>">
            <td width="65px">
        <?PHP
        if($vertraging > 1){
        ?>

        <div id="tijdw"><?php echo $time2; ?></div>
        <div id="tijdw2"><?php echo "was: $vertrektijd"; ?></div>
        <?PHP
        }else{
        ?>

        <div class="vertrektijd"><?php echo $vertrektijd; ?></div>
        <?PHP
        }
        ?>

        </td>
            <td width="450px">
    <?PHP
    if ($weg == true){
    ?>

    <div id="bestemming"><s><?php echo "<a href='./fullscreen.php?from=$bestemming'>$bestemming</a>"; ?></s></div>
    <?PHP
    }else{
    ?>

    <div id="bestemming"><?php echo "<a href='./fullscreen.php?from=$bestemming'>$bestemming</a>"; ?></div>
    <?PHP
    }
    ?>

       <div class="naar_via_opm"><?PHP echo $via;  ?></div></td>
       <?PHP if($swijziging == true){ ?>
            <td width="50px";><img border="2" style="border-color:red; border-left:0; border-top:0;" src="./sporen/<?php echo $vertrekspoor; ?>.png"></td>
       <?PHP }else{ ?>
               <td width="50px";><img src="./sporen/<?php echo $vertrekspoor; ?>.png"></td>
       <?PHP } ?>

        <td width="80px";><div id="soort"><?PHP echo $soort; ?><br /><font size="1"><?php echo $ritnummer; ?></font></div></td>
                                                        <td><?php
                                        if($swijziging == true){
                                        ?>

                                        <div id="wijzigingspoor"><?php echo "<font color='red'> <u>Spoorwijziging, vertrekt van spoor $vertrekspoor "; ?></u></font></div>
                                        <?php
                                        }
                                        ?>

                                                                       <?php
                                        if($weg == true){
                                        ?>

                                        <div id='rijdtniet'><?php echo "Rijdt vandaag niet"; ?></div>
                                        <?php
                                        }
                                        ?>

                                        <?php
                                        if($vertraging > 1){
                                        ?>

                                        <div id="vertraging"><?php echo "+ $vertraging min."; ?></div>
                                        <?php
                                        }
                                        ?>

                                        <?php
                                        if($soort == $Bus){
                                        ?>

                                        <div id="bus">Op dit traject vindt busvervoer plaats</div>
                                        <?php
                                        }
                                        ?>

                                        <?php
                                        if($soort == $ReisTip){
                                        ?>

                                        <?php
                                        }
                                        
                                        foreach ((array) $comment as $ReisTip)
                                        {

                                        ?>


                                        <div id="comment"><?php echo "$comment"; ?></div>
                                        <?php
                                        }
                                        
                                        foreach ((array) $ReisTip as $comment)
                                        {

                                        ?>

                                        
                                        <div id="ReisTip"><font color='red'><?php echo "$ReisTip"; ?></font></div>
                                                                                
                                        <?php                                        
                                        }
                                        ?>



                                                                        
</td>
        </tr>

<?PHP
}
}

if ($i < 2) {
?>

<tr class="row">
<td width="65px"><?php echo "<b>00:00</b>"; ?></td>
<td width="450px"><?php echo '<b><font color="red">Geen informatie beschikbaar</font></b>'; ?></td>
<td><img src="./sporen/leeg.png" /></td>
<td>ER01</td>
<td><?PHP echo '<b>Er is op dit moment geen actuele informatie beschikbaar...</b>'; ?></td>
<td>
</tr>                        
<?PHP
}
?>

</table>
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 12:09:36
Quote Anchor link
Ikzelf gebruik geen class en haal het direct op via SimpleXML. Dan heb je meer controle over de data.

Misschien is dat een idee? Om zelf een class te begrijpen als beginner is een brug te ver, naar mijn mening.
 
David Meijer

David Meijer

20/10/2014 12:17:16
Quote Anchor link
Alleen ik snap helemaal niks van SimpleXML.
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 12:18:22
Quote Anchor link
Dan lees je tutorials... ;-)
 
David Meijer

David Meijer

20/10/2014 12:20:30
Quote Anchor link
oke dan maar als ik het nog steeds niet snap dan want ik weet ook niet hoe ik van alle stations moet uitlezen op een site zo als ik het nu heb.
 
- Ariën  -
Beheerder

- Ariën -

20/10/2014 12:23:02
Quote Anchor link
Als je het snapt kan je de XMLfeeds met de stations en de vertrektijden uitlezen.
Zie ook eens: http://www.phpeveryday.com/articles/SimpleXML-Accessing-Element-P535.html
Gewijzigd op 20/10/2014 13:00:29 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

21/10/2014 19:10:59
Quote Anchor link
Even een makkelijk opzetje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(isset($_GET['station'])) {
    $username = "[email protected]";
    $password = "jouwpassword";
    $url = "http://webservices.ns.nl/ns-api-avt?station=".$_GET['station'];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
    $result = curl_exec($ch);
    curl_close($ch);

    $xml = simplexml_load_string($result,NULL, LIBXML_NOCDATA);
    echo "<pre>".print_r($xml,true)."</pre>";
}
else {
    echo "Er is geen station meegegeven";
}

?>


Nu moet je vast wel een stukje verder komen, denk ik David ;-).
Gewijzigd op 21/10/2014 19:11:27 door - Ariën -
 
David Meijer

David Meijer

22/10/2014 13:20:27
Quote Anchor link
alleen nog even mooi maken ik moet alleen even kijken hoe ik dat gaat doen
 
- Ariën  -
Beheerder

- Ariën -

22/10/2014 13:26:22
Quote Anchor link
Onthoud wel dat die print_r() die iets blijvend is. Het is puur ter debugging, zodat je weet over welke data je beschikt.
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.