Data ophalen uit JSON-feed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

David Meijer

David Meijer

16/09/2015 21:09:43
Quote Anchor link
Ik had een vraag wie weet toevallig hoe ik Reasoncontent of Messagecontent kan laten zien.

Het is voor dit script gedeelte.


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
<!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>


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 -
 
PHP hulp

PHP hulp

19/04/2024 14:30:39
 
- Ariën  -
Beheerder

- Ariën -

16/09/2015 21:12:39
Quote Anchor link
Wat een berg spaghetticode, ik raad aan om er eerst even orde in te scheppen door wat tab's te gebruiken. Zoals dit:

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
<!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>


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 -
 
David Meijer

David Meijer

16/09/2015 21:20:53
Quote Anchor link
nou hier vandaan http://kv78turbo.ovapi.nl/tpc/37221070,37221020
 
- Ariën  -
Beheerder

- Ariën -

16/09/2015 21:33:10
Quote Anchor link
Je zult dan $alleinfo["GeneralMessages"] moeten doorlopen in een foreach.
 
David Meijer

David Meijer

16/09/2015 21:43:12
Quote Anchor link
Dan krijg ik Array te zien
 
- Ariën  -
Beheerder

- Ariën -

16/09/2015 21:46:11
Quote Anchor link
Dan is er iets mis met je code? Dus wees a.u.b. even wat concreter.
 
David Meijer

David Meijer

16/09/2015 21:54:53
Quote Anchor link
Hoe zo zou er dan iets mis moeten zijn met de code???
 
- Ariën  -
Beheerder

- Ariën -

16/09/2015 21:56:29
Quote Anchor link
Als je letterlijk 'Array' ziet staan probeer je blijkbaar een array (de container) te echo'en, en niet de data die erin zit.
 
David Meijer

David Meijer

16/09/2015 21:58:38
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

16/09/2015 21:59:25
Quote Anchor link
Als je nou eens vertelt wat je precies doet, dan kunnen we meer vertellen.
 
David Meijer

David Meijer

16/09/2015 22:03:11
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

16/09/2015 22:06:02
Quote Anchor link
$alleinfo["GeneralMessages"] is een array, dus deze variabele kan je niet zomaar echo'en. Je moet deze met foreach() uitlezen.
 
Remco van der Velde

Remco van der Velde

17/09/2015 12:14:01
Quote Anchor link
anders ff een var_dump($alleinfo), dan zie je wat er allemaal is opgehaald en in $alleinfo staat.
 



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.