Я хочу показать блок с надписью «Город не найден», если города нет во внешней базе данных.
Как это возможно?
function curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
if (isset($_GET['q'])) {
$urlContents = curl("http://api.openweathermap.org/data/2.5/weather?q = ".$_GET['q']."&type=accurate&units=metric&appid=4802fab0dfe2bf3e1f47e0882a5e93de"); // pre tahanie udajov potrebujeme vlastne app id ktore nam vygeneruje po registracii na stranke https://openweathermap.org/api
$city = $_GET['q'];
$weatherArray = json_decode($urlContents, true);
$weather = $weatherArray['weather'][0]['description'];
$temp = $weatherArray['main']['temp'];
$icon = $weatherArray['weather'][0]['icon'];
$logo = "<img src='http://openweathermap.org/img/w/".$icon.".png'>";
}
он уже работает, это был какой-то неопределенный индекс
Вы должны получить ответ
{"cod":"404","message":"city not found"}
из API, если он не находит город в вашем запросе, поэтому вы можете обработать ответ примерно так ...
$weatherArray = json_decode($urlContents, true);
if ( isset($weatherArray['cod']) && $weatherArray['cod'] == "404" ) {
$message = "No city found";
}
else {
// Process weather data
}
спасибо, все работает :) $ weatherArray = json_decode ($ urlContents, true); if (isset ($ weatherArray ['cod']) && $ weatherArray ['cod'] == "404") {заголовок ("Местоположение: notfound.php"); выход; } else {// данные процесса}
Если это помогло, пометьте его как ответ - meta.stackexchange.com/questions/5234/…
Ну а можно ли поделиться ответом, когда в урл кладете "мусорный" город? пожалуйста
var_export($weatherArray);
для нас.