0
I’m getting, from a few url´s
provided by a api
of Climatempo
, weather forecast information on these url´s
should inform the cities I wish to consult, ie their id´s
and they return to me a xml
with the information I need to record in my database.
The problem I’m having is, how to read the information of various url´s
At the same time, I ran a test to create a framework to try to solve this, but I’m having a hard time making it work.
Initially I made a loop to search the city id in my database, if there are records I try to do an update and if not, try the Insert, within this context
I can only get the information from the first url
.
I will post the full code, I hope I have been able to explain clearly my difficulty.
require_once('../Connections/con.php');
mysql_select_db($database_conCons, $conCons);
$query_rcCidades = "SELECT * FROM PrevisaoCidade WHERE PrevisaoCidade.ativo = 1 ORDER BY PrevisaoCidade.IdCidade";
$rcCidades = mysql_query($query_rcCidades, $conCons) or die(mysql_error());
$row_rcCidades = mysql_fetch_assoc($rcCidades);
$totalRows_rcCidades = mysql_num_rows($rcCidades);
do {
// CIDADES CADASTRADAS
$cCidades = $row_rcCidades['IdCidade'];
$url = 'http://api.climatempo.com.br/api/v1/forecast/15days/rain?idlocale="'.$cCidades.'"';
$url = 'http://api.climatempo.com.br/api/v1/forecast/15days/temperature?idlocale="'.$cCidades.'"';
$url = 'http://api.climatempo.com.br/api/v1/forecast/15days/wind?idlocale="'.$cCidades.'"';
$url = 'http://api.climatempo.com.br/api/v1/forecast/15days/humidity?idlocale="'.$cCidades.'"';
$url = 'http://api.climatempo.com.br/api/v1/forecast/15days/icon?idlocale="'.$cCidades.'"';
$url = 'http://api.climatempo.com.br/api/v1/forecast/15days/uv?idlocale="'.$cCidades.'"';
// PERMISSÃO
$post = array(
'key' => '',
'client' => '',
'nocache' => true,
'type' => 'xml',
'application' => 'Previsão 15 dias - Cidades'
);
// OBTENDO PERMISSÃO
$http = array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($post)
);
$context = stream_context_create(array('http' => $http));
$request = file_get_contents($url, true, $context);
$item = simplexml_load_string($request);
// DATA PARA INSERÇÃO E/OU UPDATE
$DataAux = substr((string)$item->data->item['dateBegin'], 0, -9);
// SELECIONANDO TODAS AS OPÇÕES
foreach($item->data->item->weather->item as $reg) {
// $data_aux = substr($data,6,4).'-'.substr($data,3,2).'-'.substr($data,0,2);
// ZERANDO O ARRAY
$data = array();
// CHUVA
$data['api']['data']['item']['weather']['item'][] = array
(
// LENDO OS NÓS
'precipitation' => (string)$reg['precipitation'],
'probability' => (string)$reg['probability'],
'date' => (string)$reg['date']
);
// ATRIBUINDO AS VARIÁVEIS
$Prec = $data['api']['data']['item']['weather']['item'][0]['precipitation'];
$Prob = $data['api']['data']['item']['weather']['item'][0]['probability'];
// TEMPERATURA
$data['api']['data']['item']['weather']['item'][] = array
(
// LENDO OS NÓS
'TMin' => (string)$reg['min'],
'TMax' => (string)$reg['max']
);
// ATRIBUINDO AS VARIÁVEIS
$TMin = $data['api']['data']['item']['weather']['item'][0]['min'];
$TMax = $data['api']['data']['item']['weather']['item'][0]['max'];
// VENTO
$data['api']['data']['item']['locale']['id'] = (string)$item->data->item->locale['id'];
$data['api']['data']['item']['locale']['name'] = (string)$item->data->item->locale['name'];
$data['api']['data']['item']['locale']['latitude'] = (string)$item->data->item->locale['latitude'];
$data['api']['data']['item']['locale']['longitude'] = (string)$item->data->item->locale['longitude'];
$data['api']['data']['item']['weather']['item'][] = array
(
// LENDO OS NÓS
'direction' => (string)$reg['direction'],
'minVelocity' => (string)$reg['minVelocity'],
'maxVelocity' => (string)$reg['maxVelocity']
);
// ATRIBUINDO AS VARIÁVEIS
$VenDir = $data['api']['data']['item']['weather']['item'][0]['direction'];
$VelMin = $data['api']['data']['item']['weather']['item'][0]['minVelocity'];
$VelMax = $data['api']['data']['item']['weather']['item'][0]['maxVelocity'];
// UMIDADE RELATIVA
$data['api']['data']['item']['dateBegin'] = (string)$item->data->item['dateBegin'];
$data['api']['data']['item']['dateEnd'] = (string)$item->data->item['dateEnd'];
$data['api']['data']['item']['latitude'] = (string)$item->data->item->locale['latitude'];
$data['api']['data']['item']['longitude'] = (string)$item->data->item->locale['longitude'];
$data['api']['data']['item']['weather']['item'][] = array
(
// LENDO OS NÓS
'UmiMin' => (string)$reg['min'],
'UmiMax' => (string)$reg['max']
);
// ATRIBUINDO AS VARIÁVEIS
$UmMin = $data['api']['data']['item']['weather']['item'][0]['min'];
$UmMax = $data['api']['data']['item']['weather']['item'][0]['max'];
// ÍCONES
$data['api']['data']['item']['dateBegin'] = (string)$item->data->item['dateBegin'];
$data['api']['data']['item']['dateEnd'] = (string)$item->data->item['dateEnd'];
$data['api']['data']['item']['weather']['item'][] = array
(
// LENDO OS NÓS
'morning' => (string)$reg['morning'],
'afternoon' => (string)$reg['afternoon'],
'night' => (string)$reg['night'],
'day' => (string)$reg['day'],
'pt' => (string)$reg['pt']
);
// ATRIBUINDO AS VARIÁVEIS
$IcoManha = $data['api']['data']['item']['weather']['item'][0]['morning'];
$IcomTarde = $data['api']['data']['item']['weather']['item'][0]['afternoon'];
$IcoNoite = $data['api']['data']['item']['weather']['item'][0]['night'];
$IcoDia = $data['api']['data']['item']['weather']['item'][0]['day'];
$Frase = $data['api']['data']['item']['weather']['item'][0]['pt'];
// UV
$data['api']['data']['item']['weather']['item'][] = array
(
// LENDO OS NÓS
'UvMax' => (string)$reg['max']
);
// ATRIBUINDO AS VARIÁVEIS
$UvMax = $data['api']['data']['item']['weather']['item'][0]['max'];
// INSERT DOS SERVIÇOS
mysql_select_db($database_conCons, $conCons);
$sql = "SELECT Data, IdCidade FROM PrevisaoClima WHERE Data = '$DataAux' AND IdCidade = $cCidades";
$rcDados = mysql_query($sql, $conCons) or die(mysql_error());
$row_rcDados = mysql_fetch_assoc($rcDados);
$totalRows_rcDados = mysql_num_rows($rcDados);
if ($totalRows_rcDados > 0) {
mysql_select_db($database_conCons, $conCons);
$sql = "UPDATE `cpCons_webCons`.`PrevisaoClima` SET `Frase`='$Frase', `TempMin`='$TMin', `TempMax`='$TMax', `ProbChuva`='$Prob', `PrecisaoChuva`='$Prec', `IconeManha`='$IcoManha', `IconeTarde`='$IcoTarde', `IconeNoite`='$IcoNoite', `IconeDia`='$IcoDia', `VentoDir`='$VenDir', `VentoMax`='$VenMax', `VentoMin`='$VenMin', `Umidade`='$UmMax', `Uv`='$UvMax' WHERE `Data`='$DataAux' AND `IdCidade` = $cCidades";
$result = mysql_query($sql, $conCons);
if (!$result) {
$message = 'ERRO: ' . mysql_error() . "\n";
$message .= 'Query: ' . $sql;
die($message);
}
} else {
//Cria os dados da importação
mysql_select_db($database_conCons, $conCons);
$sql = "INSERT INTO `cpCons_webCons`.`PrevisaoClima` (`Data`, `IdCidade`, `Frase`, `TempMin`, `TempMax`, `ProbChuva`, `PrecisaoChuva`, `IconeManha`, `IconeTarde`, `IconeNoite`, `IconeDia`, `VentoDir`, `VentoMax`, `VentoMin`, `Umidade`, `Uv`) VALUES ('$DataAux', '$cCidades', '$Frase', '$TMin', '$TMax', '$Prob', '$Prec', '$IcoManha', '$IcoTarde', '$IcoNoite', '$IcoDia', '$VenDir', '$VenMax', '$VenMin', '$UmiMax', '$UvMax')";
$result = mysql_query($sql, $conCons);
if (!$result) {
$message = 'ERRO: ' . mysql_error() . "\n";
$message .= 'Query: ' . $sql;
die($message);
}
}
}
} while ($row_rcCidades = mysql_fetch_assoc($rcCidades));
Why the variable $url has its contents written several times?
– Juven_v
You would not have to store the URL’s in an array and then perform a loop loop in that array to make the connection for each specific URL?
– Don't Panic
There it is, my attempt was also this, would like to post a hint of how it would look?
– adventistapr
see if my answer helps you, abçs
– Rovann Linhalis
Perhaps the most worrying thing there is whether the webservice will allow so many connections in a short time. If you have no agreement to do so, you may not like it and block access.
– Daniel Omine