I'm getting, from some url´s
provided by api
of Climatempo
, weather forecast information, url´s
I must inform the cities that I want to consult, that is, their id´s
and they return a xml
with the information that I need to write to my database.
The problem I'm having is, how to read information from multiple url´s
at the same time, I did a test creating a framework to try to solve this, but I'm having trouble getting it to work.
Initially I made a loop to search the id's of the cities in my bank, if there are records I try to do an update and if not, I try to insert within that context
I can only get the information from the first url
.
I'll post the complete code, I hope I've been able to explain my difficulty clearly.
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));