Home  >  Article  >  Backend Development  >  How to get weather data using PHP and OpenWeatherMap API

How to get weather data using PHP and OpenWeatherMap API

WBOY
WBOYOriginal
2023-06-19 15:06:013536browse

As climate change intensifies, weather forecasts have become increasingly important in our daily lives. And how to get accurate weather forecast data on your own website? PHP and OpenWeatherMap API are two popular choices. The following will describe how to use PHP and the OpenWeatherMap API to obtain weather data.

1. Obtain API key

Using the OpenWeatherMap API requires obtaining an API key. It's completely free to register an account and get an API key. Log in to the OpenWeatherMap website (https://openweathermap.org/) and register. On the profile page, go to the API Keys tab and click the "Generate Key" button. Then you can get the API key.

2. Create PHP file

The next step is to write the code. Open your Code editor and create a PHP file, for example weather.php. First, you need to introduce the OpenWeatherMap API library. This can be achieved by adding the following code in the header:

$httpRequestURI = 'https://api.openweathermap.org/data/2.5/weather?q=London&appid={YOUR_API_KEY}';
$response = file_get_contents($httpRequestURI);
$data = json_decode($response);
echo $data->weather[0]->description;

Note that in the request URL, you need to replace {YOUR_API_KEY} with your API key.

Explanation code:

The first line defines the URL address to be requested, where q=London is the city you want to search for. You can replace the name of any city here.

The second line uses the PHP built-in function file_get_contents() to obtain the response data.

The third line converts the response data into JSON format and decodes it using json_decode.

The echo statement in the fourth line outputs the weather data of the queried city.

3. Improve the code

The above code can already obtain weather data, but in order to make it more complete and easy to understand, the code is improved below.

<?php 
if(isset($_POST['city'])) {
    $cityName = $_POST['city'];
    $apikey = "{YOUR_API_KEY}";
    $url = "http://api.openweathermap.org/data/2.5/weather?q=".$cityName."&appid=".$apikey."&lang=zh-cn";
    $data = file_get_contents($url);
    $weatherData = json_decode($data);
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Weather Report Using PHP and OpenWeatherMap API</title>
    <style>
        #card {
            background-color: #F1F1F1;
            padding: 20px;
            border-radius: 10px;
            width: fit-content;
            margin: 0 auto;
            margin-top: 10%;
        }

        .headtext {
            margin: 0;
            padding: 0;
            font-size: 30px;
            font-weight: 500;
            margin-bottom: 10px;
        }

        .subtext {
            margin: 0;
            padding: 0;
            font-size: 20px;
            color: #F44336;
        }

        .data {
            width: 100%;
            margin-top: 20px;
            border-top: 1px solid #000;
            border-collapse: collapse;
        }

        .data th {
            border-bottom: 1px solid #000;
            padding: 10px;
            text-align: left;
        }

        .data td {
            padding: 10px;
        }

        input[type=text]{
            width: 50%;
            border-radius: 5px;
            padding: 10px;
        }

        button {
            padding: 10px;
            background-color: #F44336;
            border: none;
            color: #fff;
            border-radius: 5px;
            cursor: pointer;
        }
    </style>
</head>
<body>
    <div id="card">
        <p class="headtext">天气预报</p>
        <form method="post" action="">
            <input type="text" name="city" placeholder="输入需要查询的城市" />
            <button type="submit">查询</button>
        </form>
        <?php if(isset($weatherData)) { ?>
            <table class="data">
                <tr>
                    <th>城市名</th>
                    <th>天气状况</th>
                    <th>温度</th>
                    <th>风速</th>
                </tr>
                <tr>
                    <td><?php echo $weatherData->name; ?></td>
                    <td><?php echo $weatherData->weather[0]->description; ?></td>
                    <td><?php echo $weatherData->main->temp; ?> &#8451;</td>
                    <td><?php echo $weatherData->wind->speed; ?> m/s</td>
                </tr>
            </table>
        <?php } else { ?>
             <p class="subtext">请输入城市名以获取天气状况。</p>
        <?php } ?>
    </div>
</body>
</html>

This is a more complete weather forecast program, which contains the following parts:

1. Determine whether the user enters a city name, if so, query the weather of the entered city, if not Prompt information is output.

2. Display the weather data of the queried city in the table, including name, weather conditions, temperature and wind speed.

3. Use CSS styles to beautify the page.

4. Ending

That’s it for implementing the use of PHP and OpenWeatherMap API to obtain weather data. As long as you register an OpenWeatherMap account, you can easily obtain an API key and start obtaining real-time weather data. Whether you're building a website, an app, or even need weather data to help you plan, these steps will help you achieve your goals with ease.

The above is the detailed content of How to get weather data using PHP and OpenWeatherMap API. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn