Search code examples
phpcsshtmlweatherweather-api

How to use weather API to create my weather HTML page


I want to code a page using HTML and CSS. I already designed it, but I'm lost since I don't know how to link it with the weather API to fetch the weather fot the selected city/country. Can anyone give me examples of how does the code go?


Solution

  • You'll have to look at the API documentation, which should tell you how to request the data from the service. Without a link to it, we can't help you.

    This should give you a general idea of how to use JSON and APIs with PHP, but if you're looking for a simple pulling mechanism to update the weather on your page, you don't need something that heavy: it doesn't need to be server-side.

    I would recommend going with JavaScript on this one, which would go something like this:

    var req = new XMLHttpRequest();
    var url = "yourURL"; //it is important that you read the API docs for this, because some APIs require you to use your API key in your request
    
    req.open('GET', url, true);
    req.onload = function (e) {
        if (req.readyState == 4 && req.status == 200) {
            if (req.status == 200) {
                var response = JSON.parse(req.responseText); //response is now an object containing all of the data that the API gives you; again, you'll have to look at the API docs to see how that information is formatted
                //update your page here using response data
                }
            }
        }
    };
    req.send(null);
    

    I also recommend completing How to use APIs with JavaScript.

    Either way, you're going to get a JSON object in return, which is formatted like this:

    var response = [
        {
            "name": "Australia",
            "website": "http://www.footballaustralia.com.au",
            "foundedYear": 1961,
            "address": "Locked Bag A 4071\nNSW 1235\nSydney",
            "homeStadium": "ANZ Stadium",
            "stadiumCapacity": 83500,
            "group": "B",
            "groupRank": 3,
            "groupPoints": 0,
            "matchesPlayed": 1,
            "wins": 0,
            "losses": 1,
            "draws": 0,
            "goalsFor": 1,
            "goalsAgainst": 3,
            "goalsDiff": "-2",
            "id": "16EF7687-2D69-473C-BFE7-B781D67752DC",
            "type": "Team"
        }, 
        {
            "name": "England",
            "website": "http://www.thefa.com",
            "foundedYear": 1863,
            "address": "PO Box 1966\nSW1P 9EQ\nLondon",
            "homeStadium": "Wembley Stadium",
            "stadiumCapacity": 90000,
            "group": "D",
            "groupRank": 3,
            "groupPoints": 0,
            "matchesPlayed": 1,
            "wins": 0,
            "losses": 1,
            "draws": 0,
            "goalsFor": 1,
            "goalsAgainst": 2,
            "goalsDiff": "-1",
            "id": "2EFCFEB2-EBF8-4628-B659-B00C49D93811",
            "type": "Team"
        },
        {
            "name": "Ghana",
            "website": "http://www.ghanafa.org",
            "foundedYear": 1957,
            "address": "South East Ridge\n19338\nAccra",
            "homeStadium": "Ohene Djan Sports Stadium",
            "stadiumCapacity": 35000,
            "group": "G",
            "groupRank": 2,
            "groupPoints": 0,
            "matchesPlayed": 0,
            "wins": 0,
            "losses": 0,
            "draws": 0,
            "goalsFor": 0,
            "goalsAgainst": 0,
            "goalsDiff": "+0",
            "id": "CCC66F75-7004-46E4-BB31-259B06A42516",
            "type": "Team"
        }
    ];
    

    So, for instance, you'd access Australia's website with

    response[0].website;
    

    You can also use pure XML, but JSON is the most popular way to make API requests.