Data ophalen uit JSON-feed
Het is voor dit script gedeelte.
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
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
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
<!DOCTYPE html>
<html dir="ltr" lang="nl">
<head>
<meta http-equiv="refresh" content="60" />
<meta name="viewport" content="width=device-width,initial-scale=1.0;">
<link rel="stylesheet" type="text/css" href="index.css" />
<title>Komt de tram al? Of de bus?</title>
</head>
<body>
<?php
// Haal huidige datum en tijd op
$nu2 = date('H:i');
echo("<div class=\"hoelaat\"><em>Het is nu " . $nu2 . " uur</em></div>\n");
?>
<div class="schema">
<?php
// De lijninformatie wordt binnengehaald met curl
function ophalen($perron) {
$service_url = 'http://v0.ovapi.nl/tpc/' . $perron . '/departures';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
// Het JSON-bestand wordt omgezet naar een PHP array
$decoded = json_decode($curl_response,true);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('Er ging iets fout: ' . $decoded->response->errormessage);
}
// Hierin zit DE informatie
$alleinfo = $decoded[$perron];
// Uncomment de volgende regel als je de ruwe data wilt bekijken:
// var_export($decoded[$perron]);
return $alleinfo;
};
function toonZe($alleinfo, $richting) {
echo("<h1>Halte " . $alleinfo['Stop']['TimingPointName'] . " <em>" . $richting . "</em></h1><ul>");
$allevoertuigen = $alleinfo["Passes"];
// De array opnieuw sorteren op ExpectedArrivalTime
$tijdstippen = array();
foreach ($allevoertuigen as $voertuig) {
$tijdstippen[] = $voertuig['ExpectedArrivalTime'];
}
array_multisort($tijdstippen, SORT_ASC, $allevoertuigen);
foreach ($allevoertuigen as $row) {
// Deze gebruik je om de aankomsttijd weer te geven (nu niet in gebruik)
$tijd = date_parse($row['ExpectedArrivalTime']);
// Hiermee bereken je het aantal minuten
$rekentijd = strtotime($row['ExpectedArrivalTime']);
$nu = strtotime(date("Y-m-d\TH:i:s"));
if ($nu<$rekentijd) {
$verschil = round(abs($nu - $rekentijd) / 60,0);
};// Toon alle bussen die binnen 3 kwartier komen
if($verschil <= 900) {
if ($verschil == 1) {
echo("<li class=\"telaat\"><span>" .$row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>NU!</strong></li>");
} else if ($verschil == 0) {
echo("<li class=\"bijnatelaat\"><span>" .$row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>1 minuut</strong><span><strong>" . $row[MessageContent] . "</strong></span></li>\n");
} else {
echo("<li>" . $tijd[hour] . ":" . sprintf("%'.02d", $tijd[minute]) . " uur<em><span>" .$row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><h2>" . $row[SideCode] . "</h2><strong>(over " . $verschil . " minuten)</strong></li>\n");
};
};
};
echo("</ul>\n");
};
$alles = ophalen("37221070");
toonZe($alles, "heen");
?>
</div>
<div class="schema">
<?php
$alles = ophalen("37221020");
toonZe($alles, "terug");
?>
</div>
</body>
</html>
<html dir="ltr" lang="nl">
<head>
<meta http-equiv="refresh" content="60" />
<meta name="viewport" content="width=device-width,initial-scale=1.0;">
<link rel="stylesheet" type="text/css" href="index.css" />
<title>Komt de tram al? Of de bus?</title>
</head>
<body>
<?php
// Haal huidige datum en tijd op
$nu2 = date('H:i');
echo("<div class=\"hoelaat\"><em>Het is nu " . $nu2 . " uur</em></div>\n");
?>
<div class="schema">
<?php
// De lijninformatie wordt binnengehaald met curl
function ophalen($perron) {
$service_url = 'http://v0.ovapi.nl/tpc/' . $perron . '/departures';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
// Het JSON-bestand wordt omgezet naar een PHP array
$decoded = json_decode($curl_response,true);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('Er ging iets fout: ' . $decoded->response->errormessage);
}
// Hierin zit DE informatie
$alleinfo = $decoded[$perron];
// Uncomment de volgende regel als je de ruwe data wilt bekijken:
// var_export($decoded[$perron]);
return $alleinfo;
};
function toonZe($alleinfo, $richting) {
echo("<h1>Halte " . $alleinfo['Stop']['TimingPointName'] . " <em>" . $richting . "</em></h1><ul>");
$allevoertuigen = $alleinfo["Passes"];
// De array opnieuw sorteren op ExpectedArrivalTime
$tijdstippen = array();
foreach ($allevoertuigen as $voertuig) {
$tijdstippen[] = $voertuig['ExpectedArrivalTime'];
}
array_multisort($tijdstippen, SORT_ASC, $allevoertuigen);
foreach ($allevoertuigen as $row) {
// Deze gebruik je om de aankomsttijd weer te geven (nu niet in gebruik)
$tijd = date_parse($row['ExpectedArrivalTime']);
// Hiermee bereken je het aantal minuten
$rekentijd = strtotime($row['ExpectedArrivalTime']);
$nu = strtotime(date("Y-m-d\TH:i:s"));
if ($nu<$rekentijd) {
$verschil = round(abs($nu - $rekentijd) / 60,0);
};// Toon alle bussen die binnen 3 kwartier komen
if($verschil <= 900) {
if ($verschil == 1) {
echo("<li class=\"telaat\"><span>" .$row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>NU!</strong></li>");
} else if ($verschil == 0) {
echo("<li class=\"bijnatelaat\"><span>" .$row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>1 minuut</strong><span><strong>" . $row[MessageContent] . "</strong></span></li>\n");
} else {
echo("<li>" . $tijd[hour] . ":" . sprintf("%'.02d", $tijd[minute]) . " uur<em><span>" .$row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><h2>" . $row[SideCode] . "</h2><strong>(over " . $verschil . " minuten)</strong></li>\n");
};
};
};
echo("</ul>\n");
};
$alles = ophalen("37221070");
toonZe($alles, "heen");
?>
</div>
<div class="schema">
<?php
$alles = ophalen("37221020");
toonZe($alles, "terug");
?>
</div>
</body>
</html>
Want ik krijg het niet te zien op mijn site http://bussenentreinenforum.nl/vertrektijdenbus/Zaandam/veldvliegerweg.php
- Aar -:
Titel aangepast van PHP vraag naar: 'Data ophalen uit JSON-feed'
Gewijzigd op 16/09/2015 21:25:41 door - Ariën -
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
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
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
<!DOCTYPE html>
<html dir="ltr" lang="nl">
<head>
<meta http-equiv="refresh" content="60" />
<meta name="viewport" content="width=device-width,initial-scale=1.0;">
<link rel="stylesheet" type="text/css" href="index.css" />
<title>Komt de tram al? Of de bus?</title>
</head>
<body>
<?php
// Haal huidige datum en tijd op
$nu2 = date('H:i');
echo("<div class=\"hoelaat\"><em>Het is nu " . $nu2 . " uur</em></div>\n");
?>
<div class="schema">
<?php
// De lijninformatie wordt binnengehaald met curl
function ophalen($perron) {
$service_url = 'http://v0.ovapi.nl/tpc/' . $perron . '/departures';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
// Het JSON-bestand wordt omgezet naar een PHP array
$decoded = json_decode($curl_response, true);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('Er ging iets fout: ' . $decoded->response->errormessage);
}
// Hierin zit DE informatie
$alleinfo = $decoded[$perron];
// Uncomment de volgende regel als je de ruwe data wilt bekijken:
// var_export($decoded[$perron]);
return $alleinfo;
}
;
function toonZe($alleinfo, $richting) {
echo("<h1>Halte " . $alleinfo['Stop']['TimingPointName'] . " <em>" . $richting . "</em></h1><ul>");
$allevoertuigen = $alleinfo["Passes"];
// De array opnieuw sorteren op ExpectedArrivalTime
$tijdstippen = array();
foreach ($allevoertuigen as $voertuig) {
$tijdstippen[] = $voertuig['ExpectedArrivalTime'];
}
array_multisort($tijdstippen, SORT_ASC, $allevoertuigen);
foreach ($allevoertuigen as $row) {
// Deze gebruik je om de aankomsttijd weer te geven (nu niet in gebruik)
$tijd = date_parse($row['ExpectedArrivalTime']);
// Hiermee bereken je het aantal minuten
$rekentijd = strtotime($row['ExpectedArrivalTime']);
$nu = strtotime(date("Y-m-d\TH:i:s"));
if ($nu < $rekentijd) {
$verschil = round(abs($nu - $rekentijd) / 60, 0);
}; // Toon alle bussen die binnen 3 kwartier komen
if ($verschil <= 900) {
if ($verschil == 1) {
echo("<li class=\"telaat\"><span>" . $row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>NU!</strong></li>");
} else if ($verschil == 0) {
echo("<li class=\"bijnatelaat\"><span>" . $row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>1 minuut</strong><span><strong>" . $row[MessageContent] . "</strong></span></li>\n");
} else {
echo("<li>" . $tijd[hour] . ":" . sprintf("%'.02d", $tijd[minute]) . " uur<em><span>" . $row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><h2>" . $row[SideCode] . "</h2><strong>(over " . $verschil . " minuten)</strong></li>\n");
};
};
};
echo("</ul>\n");
}
;
$alles = ophalen("37221070");
toonZe($alles, "heen");
?>
</div>
<div class="schema">
<?php
$alles = ophalen("37221020");
toonZe($alles, "terug");
?>
</div>
</body>
</html>
<html dir="ltr" lang="nl">
<head>
<meta http-equiv="refresh" content="60" />
<meta name="viewport" content="width=device-width,initial-scale=1.0;">
<link rel="stylesheet" type="text/css" href="index.css" />
<title>Komt de tram al? Of de bus?</title>
</head>
<body>
<?php
// Haal huidige datum en tijd op
$nu2 = date('H:i');
echo("<div class=\"hoelaat\"><em>Het is nu " . $nu2 . " uur</em></div>\n");
?>
<div class="schema">
<?php
// De lijninformatie wordt binnengehaald met curl
function ophalen($perron) {
$service_url = 'http://v0.ovapi.nl/tpc/' . $perron . '/departures';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
$info = curl_getinfo($curl);
curl_close($curl);
die('error occured during curl exec. Additional info: ' . var_export($info));
}
curl_close($curl);
// Het JSON-bestand wordt omgezet naar een PHP array
$decoded = json_decode($curl_response, true);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
die('Er ging iets fout: ' . $decoded->response->errormessage);
}
// Hierin zit DE informatie
$alleinfo = $decoded[$perron];
// Uncomment de volgende regel als je de ruwe data wilt bekijken:
// var_export($decoded[$perron]);
return $alleinfo;
}
;
function toonZe($alleinfo, $richting) {
echo("<h1>Halte " . $alleinfo['Stop']['TimingPointName'] . " <em>" . $richting . "</em></h1><ul>");
$allevoertuigen = $alleinfo["Passes"];
// De array opnieuw sorteren op ExpectedArrivalTime
$tijdstippen = array();
foreach ($allevoertuigen as $voertuig) {
$tijdstippen[] = $voertuig['ExpectedArrivalTime'];
}
array_multisort($tijdstippen, SORT_ASC, $allevoertuigen);
foreach ($allevoertuigen as $row) {
// Deze gebruik je om de aankomsttijd weer te geven (nu niet in gebruik)
$tijd = date_parse($row['ExpectedArrivalTime']);
// Hiermee bereken je het aantal minuten
$rekentijd = strtotime($row['ExpectedArrivalTime']);
$nu = strtotime(date("Y-m-d\TH:i:s"));
if ($nu < $rekentijd) {
$verschil = round(abs($nu - $rekentijd) / 60, 0);
}; // Toon alle bussen die binnen 3 kwartier komen
if ($verschil <= 900) {
if ($verschil == 1) {
echo("<li class=\"telaat\"><span>" . $row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>NU!</strong></li>");
} else if ($verschil == 0) {
echo("<li class=\"bijnatelaat\"><span>" . $row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><strong>1 minuut</strong><span><strong>" . $row[MessageContent] . "</strong></span></li>\n");
} else {
echo("<li>" . $tijd[hour] . ":" . sprintf("%'.02d", $tijd[minute]) . " uur<em><span>" . $row[LinePublicNumber] . "</span><h2>" . $row[DestinationName50] . "</h2><h2>" . $row[SideCode] . "</h2><strong>(over " . $verschil . " minuten)</strong></li>\n");
};
};
};
echo("</ul>\n");
}
;
$alles = ophalen("37221070");
toonZe($alles, "heen");
?>
</div>
<div class="schema">
<?php
$alles = ophalen("37221020");
toonZe($alles, "terug");
?>
</div>
</body>
</html>
Waar haal jij Reasoncontent en Messagecontent vandaan? Heb je een voorbeeld?
Verder het vriendelijke verzoek om een goede titel te gebruiken voor het topic die je vraag of probleemstelling omschrijft.
Gewijzigd op 16/09/2015 21:19:03 door - Ariën -
Je zult dan $alleinfo["GeneralMessages"] moeten doorlopen in een foreach.
Dan krijg ik Array te zien
Dan is er iets mis met je code? Dus wees a.u.b. even wat concreter.
Hoe zo zou er dan iets mis moeten zijn met de code???
Als je letterlijk 'Array' ziet staan probeer je blijkbaar een array (de container) te echo'en, en niet de data die erin zit.
Oke maar met die code $alleinfo en dan generalmessages dan zie ik array staan en al ik die weg doet en dan met MessageContent dan zie ik niks.
Als je nou eens vertelt wat je precies doet, dan kunnen we meer vertellen.
Nou die code veranderen met $alleinfo["GeneralMessages"] wat jij gaf dan zag ik Array staan en als ik die GeneralMessages veranderd in MessageContent dan zag ik niks meer staan op de site.
$alleinfo["GeneralMessages"] is een array, dus deze variabele kan je niet zomaar echo'en. Je moet deze met foreach() uitlezen.
anders ff een var_dump($alleinfo), dan zie je wat er allemaal is opgehaald en in $alleinfo staat.