Jump to content
Pedro12345

Aparecer iguais valores de Temperaturas

Recommended Posts

Pedro12345

Olá a todos os utilizadores!!

Estou a ter algumas dificuldades em colocar numa tabela a duplicação de valores de temperaturas minimas e máximas!

Estou a utilizar basicamente 3 colunas para ir buscar os valores que pretendo.

Uma coluna possui a Data, outra a Hora e outra as Temperaturas..

Estou a utilizar o seguinte código:

<table align="center" border=1 borderColor="grey" cellspacing="0">
<tr>
<th width="100" height="40" scope="col" bgColor="#000080"> <font color='white'>Valores registados</th>
<th width="250" height="40" scope="col" bgColor="#000080"> <font color='white'>Média da Temperatura</th>
<th width="250" height="40" scope="col" bgColor="#000080"> <font color='white'>Temperatura mínima registada</th>
<th width="250" height="40"scope="col" bgColor="#000080"> <font color='white'>Temperatura máxima registada</th>

</tr>
<?php
include('config.php');
$query = mysql_query("select * from dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'");
$linhas = mysql_num_rows($query); //conta numero de linhas
$query0 = "SELECT data, AVG(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'";
$result0 = mysql_query($query0) or die(mysql_error());
$query1 = "SELECT data, MIN(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'";
$result1 = mysql_query($query1) or die(mysql_error());
$query2 = "SELECT data, MAX(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'";
$result2 = mysql_query($query2) or die(mysql_error());
$Query12 = mysql_query("SELECT MAX(tempc) AS max_temp FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim'")or die(mysql_error());
$exibir12 = mysql_fetch_assoc($Query12); // Serve para capturar os valores obtidos da consulta Sql '$Query''

if($linhas==0)
{
echo "<tr><tr align=center><td align=center colspan=7><font color='blue' face=Arial, Helvetica, sans-serif><h4><br>Não existem dados inseridos!</font><img src='stop.png' width='25' height='25'><br><br></td><td></tr>";
}

echo "<td align=center><b><font color='Gold2'> $linhas</td>";

if($row = mysql_fetch_array($result0)){
echo "<td align=center><b><font color='Gold2'> " .round($row['AVG(tempc)'],1). " <i>ºC";
}

if($row1 = mysql_fetch_array($result1)){
echo "<td align=center><font color='black'>" .$row1['data']. " <font color='#CD950C'><b> " .round($row1['MIN(tempc)'],1). " <i>ºC";
}
if($row2 = mysql_fetch_array($result2)){
echo "<td align=center><font color='black'>" .$row2['data']. " <font color='#CD2626'><b> " .round($exibir12['max_temp'],1). " <i>ºC </i></td>";
}
?>

O Aspecto da tabela criada e os dados nela colocados, como um exemplo de intervalo de 15 minutos num periodo das 00:00:00 às 00:30:00 é a seguinte:

tfl7.png

A minha dificuldade é a seguinte:

  • Caso existisse na tabela, no intervalo selecionado a mesma temperatura minima, gostaria que dentro da coluna de Temperatura Minima Registada, mostrasse, como lá está, a data, hora em que ocorreram.

Ou seja, se entre o intervalo 00:00:00 e o 00:30:00 tiver os valores de temperatura 19.4, 19.4 e 27.1 respetivamente, gostaria que aparecesse nessa coluna desta forma:

2013-09-18 00:00:00 19ºC

2013-09-18 00:00:15 19ºC

...

Ou seja, que mostrasse as datas e horas que tiveram a mesma temperatura mínima!!

(que posteriormente seria aplicado às temperaturas máximas)

Grato se me puderem ajudar!!!

Um abraço,

Pedro

Edited by Pedro12345

Share this post


Link to post
Share on other sites
Pedro12345

Será que terei de fazer algum Select Count(Min(tempc)) para contar o número de vezes que aparece a temperatura minima?

Outra forma que estou a pensar agora seria em guardar numa varíavel a temperatura mínima, depois percorria as linhas todas, e imprimia em todas elas as temperaturas iguais à temperatura minima.. acham que resultaria também dessa forma?

Share this post


Link to post
Share on other sites
Virneto

Porque não um

SELECT COUNT(tempc) FROM dados WHERE tempc= [minima];

ou então um SELECT aninhado. Pesquisa por Nested SELECT:

assim de cor...

SELECT COUNT(*) from (
SELECT data,MIN(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim')
AS frequencia;

calculo que a primeira query seja mais rápida.

Espero ter ajudado.


"Que inquieto desejo vos tortura, Seres elementares, força obscura? Em volta de que ideia gravitais?" >> Anthero de Quental

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Linuxando.com | ...

Share this post


Link to post
Share on other sites
Pedro12345

Porque não um

SELECT COUNT(tempc) FROM dados WHERE tempc= [minima];

ou então um SELECT aninhado. Pesquisa por Nested SELECT:

assim de cor...

SELECT COUNT(*) from (
SELECT data,MIN(tempc) FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim')
AS frequencia;

calculo que a primeira query seja mais rápida.

Espero ter ajudado.

Não consegui implementar dessa forma, fiz assim:

$sql1="SELECT * FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim' ";
$query1=mysql_query($sql1) or die ("Nao seleccionou tabela!");
$linhas=mysql_num_rows($query1);

$sql2="SELECT MIN(tempc) AS minima FROM dados WHERE data BETWEEN '$datainicio' AND '$datafim' and hora BETWEEN '$horainicio' AND '$horafim' ";
$query2=mysql_query($sql2) or die ("Nao seleccionou tabela!");
$minima = mysql_fetch_assoc($query2);


for($i=0;$i<$linhas;$i++)
{
$data=mysql_result($query1,$i,'data');
$hora=mysql_result($query1,$i,'hora');
$tempc=mysql_result($query1,$i,'tempc');
$sit=mysql_result($query1,$i,'sit');
$tempf=mysql_result($query1,$i,'tempf');

if(round($minima['minima'],1) == $tempc){
echo "<tr><td align=center><font color='black'> $data</td>";
echo "<td align=center><font color='black'> $hora</td>";
echo "<td align=center><b><font color='red'> $tempc</td>";
echo "<td align=center><font color='black'> $sit</td>";
echo "<td align=center><font color='black'> $tempf</td></tr></table";
}
}

Fiz desta forma e está a funcionar corretamente!! ;)

Obrigado!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.