Раздел прогноза погоды для сайта
Я уже писал про создание погодного информера для сайта. Сегодня покажу, как я сделал раздел на сайте с погодой на 3 дня.
Откуда брать данные в виде xml повторять не стану, смотрите в предыдущей статье.
Вывод погоды оформил в виде трех таблиц, верстка на Bootstrap.
Как это выглядит на сайте смотрим тут.
Создаем сниппет weather:
Откуда брать данные в виде xml повторять не стану, смотрите в предыдущей статье.
Вывод погоды оформил в виде трех таблиц, верстка на Bootstrap.
Как это выглядит на сайте смотрим тут.
Создаем сниппет weather:
$rss = simplexml_load_file('http://www.eurometeo.ru/russia/amurskaya-oblast/zato-uglegorsk/export/xml/data/'); //Путь к XML с погодой нужного города
$city = $rss->city->cityname; //Город
//echo "Город: ".$city. "</br>";
$i = 0;
foreach ($rss->city->step as $step){
$datetime = $step->datetime; //Дата и время прогноза: гггг-мм-дд чч:мм:сс (2017-04-29 04:00:00)
$davlenie = $step->pressure; //Давление в мм.рт.мт
$temper = $step->temperature; //Температура воздуха в градусах Цельсия
$vlazh = $step->humidity; //Относительная влажность в %
$oblach = $step->cloudcover; //Облачность в %
$windspeed = $step->windspeed; //Скорость ветра в м/с
$windgust = $step->windgust; //Порывы ветра в м/с
$winddir = $step->winddir; //Направление ветра в градусах от 0 до 359. 0 - южный ветер, ветер дует по направлению с юга, 90 - ветер с запада, 180 - ветер с севера, 270 - ветер с востока
$osadki = $step->precipitation; //Осадки за 3 часа в мм
//Определяем время суток. Тут время московское, поэтому для нас прибавляем 6 часов
$timesofday = explode(" ", $datetime); //Делим строку и выводим только время $timesofday[1] ($timesofday[0] - дата)
if ($timesofday[1] == '04:00:00') {
$timeday = 'Утро';
}
if ($timesofday[1] == '10:00:00') {
$timeday = 'День';
}
if ($timesofday[1] == '16:00:00') {
$timeday = 'Вечер';
}
if ($timesofday[1] == '22:00:00') {
$timeday = 'Ночь';
}
//Облачность и осадки
//1. ясно день
if ($oblach < 33 and $osadki < 1) {
$pogoda = 'yasno';
}
//1.1. ясно ночь
if ($oblach < 33 and $osadki < 1 and $timeday == 'Ночь') {
$pogoda = 'yasno_n';
}
//2. переменная облачность без осадков день
if ($oblach >= 33 and $oblach < 66 and $osadki < 1) {
$pogoda = 'perbezos';
}
//2.1. переменная облачность без осадков ночь
if ($oblach >= 33 and $oblach < 66 and $osadki < 1 and $timeday == 'Ночь') {
$pogoda = 'perbezos_n';
}
//3. переменная облачность с осадками - дождь день
if ($oblach >= 33 and $oblach < 66 and $osadki > 1 and $temper >= 0) {
$pogoda = 'persos_d';
}
//3.1. переменная облачность с осадками - дождь ночь
if ($oblach >= 33 and $oblach < 66 and $osadki > 1 and $temper >= 0 and $timeday == 'Ночь') {
$pogoda = 'persos_d_n';
}
//4. переменная облачность с осадками - снег день
if ($oblach >= 33 and $oblach < 66 and $osadki > 1 and $temper < 0) {
$pogoda = 'persos_s';
}
//4.4. переменная облачность с осадками - снег ночь
if ($oblach >= 33 and $oblach < 66 and $osadki > 1 and $temper < 0 and $timeday == 'Ночь') {
$pogoda = 'persos_s_n';
}
//5. облачно без осадков
if ($oblach >= 66 and $osadki < 1) {
$pogoda = 'oblbezos';
}
//6. облачно с осадками - дождь
if ($oblach >= 66 and $osadki > 1 and $temper >= 0) {
$pogoda = 'oblsos_d';
}
//7. облачно с осадками - снег
if ($oblach >= 66 and $osadki > 1 and $temper < 0) {
$pogoda = 'oblsos_s';
}
//Диапазон температур
$temper_min = round($temper) - 1;
$temper_max = round($temper) + 1;
if ($temper_min > 0) {
$temper_min = "+".$temper_min;
}
if ($temper_max > 0) {
$temper_max = "+".$temper_max;
}
$dtemper = $temper_min."..".$temper_max;
//Направление ветра
//1. Южный ветер
if ($winddir >= 0 and $winddir < 22.5) {
$vectorwind = "южный";
}
if ($winddir >= 337.5 and $winddir <= 359) {
$vectorwind = "южный";
}
//2. Юго-западный ветер
if ($winddir >= 22.5 and $winddir < 67.5) {
$vectorwind = "юго-зап.";
}
//3. Западный ветер
if ($winddir >= 67.5 and $winddir < 112.5) {
$vectorwind = "западный";
}
//4. Северо-западный ветер
if ($winddir >= 112.5 and $winddir < 157.5) {
$vectorwind = "сев.-зап.";
}
//5. Северный ветер
if ($winddir >= 157.5 and $winddir < 202.5) {
$vectorwind = "северный";
}
//6. Северо-восточный ветер
if ($winddir >= 202.5 and $winddir < 247.5) {
$vectorwind = "сев.-вост.";
}
//7. Восточный ветер
if ($winddir >= 247.5 and $winddir < 292.5) {
$vectorwind = "восточный";
}
//7. Юго-восточный ветер
if ($winddir >= 292.5 and $winddir < 337.5) {
$vectorwind = "юго-вост.";
}
$dateofday = explode("-", $timesofday[0]);
$date = $dateofday[2].".".$dateofday[1].".".$dateofday[0];
$dates[] = $date;
$timedays[] = $timeday;
$tempers[] = $dtemper;
$windspeeds[] = round($windspeed);
$windgusts[] = round($windgust);
$vectorwinds[] = $vectorwind;
$pressures[] = round($davlenie);
$humiditys[] = round($vlazh);
$cloudcovers[] = $oblach;
$precipitations[] = $osadki;
$i++;
if ($i == 12) break;
};
$k = 0;
while ($k < 12) {
$table = "
<table class='table table-striped table-hover weather' style='border: 1px solid #2c3e50'>
<thead>
<tr>
<th colspan='5' style='color:#ffffff; background:#2c3e50'>Прогноз погоды на ".$dates[$k]."</th>
</tr>
<tr>
<th>Время прогноза</th>
<th>".$timedays[0]."</th>
<th>".$timedays[1]."</th>
<th>".$timedays[2]."</th>
<th>".$timedays[3]."</th>
</tr>
</thead>
<tbody>
<tr>
<td>Температура</td>
<td>".$tempers[$k+0]." °C</td>
<td>".$tempers[$k+1]." °C</td>
<td>".$tempers[$k+2]." °C</td>
<td>".$tempers[$k+3]." °C</td>
</tr>
<tr>
<td>Скорость ветра</td>
<td>".$windspeeds[$k+0]." м/с</td>
<td>".$windspeeds[$k+1]." м/с</td>
<td>".$windspeeds[$k+2]." м/с</td>
<td>".$windspeeds[$k+3]." м/с</td>
</tr>
<tr>
<td>Порывы ветра</td>
<td>".$windgusts[$k+0]." м/с</td>
<td>".$windgusts[$k+1]." м/с</td>
<td>".$windgusts[$k+2]." м/с</td>
<td>".$windgusts[$k+3]." м/с</td>
</tr>
<tr>
<td>Направление ветра</td>
<td>".$vectorwinds[$k+0]."</td>
<td>".$vectorwinds[$k+1]."</td>
<td>".$vectorwinds[$k+2]."</td>
<td>".$vectorwinds[$k+3]."</td>
</tr>
<tr>
<td>Атмосферное давление</td>
<td>".$pressures[$k+0]." мм.рт.ст.</td>
<td>".$pressures[$k+1]." мм.рт.ст.</td>
<td>".$pressures[$k+2]." мм.рт.ст.</td>
<td>".$pressures[$k+3]." мм.рт.ст.</td>
</tr>
<tr>
<td>Относительная влажность</td>
<td>".$humiditys[$k+0]." %</td>
<td>".$humiditys[$k+1]." %</td>
<td>".$humiditys[$k+2]." %</td>
<td>".$humiditys[$k+3]." %</td>
</tr>
<tr>
<td>Облачность</td>
<td>".$cloudcovers[$k+0]." %</td>
<td>".$cloudcovers[$k+1]." %</td>
<td>".$cloudcovers[$k+2]." %</td>
<td>".$cloudcovers[$k+3]." %</td>
</tr>
<tr>
<td>Осадки за 3 часа</td>
<td>".$precipitations[$k+0]." мм</td>
<td>".$precipitations[$k+1]." мм</td>
<td>".$precipitations[$k+2]." мм</td>
<td>".$precipitations[$k+3]." мм</td>
</tr>
</tbody>
</table>";
echo $table;
$k = $k+4;
}
По-хорошему, нужно все шаблонизировать, чтобы из сниппета убрать лишний мусор.
Поблагодарить автора
Отправить деньги