I've been trying for a fortnight to get the createclimate.php and createnoaa.php scripts working, but without success. The scripts connect to the database ok, but they don't seem to be pulling in the data, which is why I'm getting division by zero errors. The following code should select each day and produce a chart displaying data for each day in the month ...
$datesearch = "SELECT * FROM WeatherData WHERE CONVERT_TZ(Time,'UTC','$tz') BETWEEN '$s' AND '$e' ORDER BY Time ASC";
$result = mysql_query($datesearch);
$c = 0;
$curr_day = "01";
$tot_temp = 0;
$tot_dew = 0;
$tot_press = 0;
$MaxHiT[1] = 0;
$MinHiT[1] = 1000;
$RainDay[$c_day] = 0;
while ($row = mysql_fetch_assoc($result)) {
$local_time = strtotime($row['Time'].'UTC');
$local_date_time = date('Y-m-d H:i', $local_time);
$local_date = date('Y-m-d', $local_time);
$local_month_name = date('M', $local_time);
$local_month_num = date('m', $local_time);
$local_year = date('Y', $local_time);
$local_day_2 = date('d', $local_time);
$local_day_1 = date('n', $local_time);
if ($local_day_2 == $curr_day) {
$curr_day = $local_day_2;
$c_day = sprintf("%1d",$curr_day);
if ($row['Temperature_C'] > $MaxHiT[$c_day]) $MaxHiT[$c_day] = $row['Temperature_C'];
if ($row['Temperature_C'] < $MinHiT[$c_day]) $MinHiT[$c_day] = $row['Temperature_C'];
if ($row['RawRain_mm'] > $RainDay[$c_day]) $RainDay[$c_day] = $row['RawRain_mm'];
$tot_temp = $tot_temp + $row['Temperature_C'];
$tot_dew = $tot_dew + $row['Dewpoint_C'];
$tot_press = $tot_press + $row['Pressure_mB'];
$c++;
} else {
$c_day = sprintf("%1d",$curr_day);
$MaxHiT[$c_day] = sprintf("%05.1f",9/5 * $MaxHiT[$c_day] + 32);
$MinHiT[$c_day] = sprintf("%04.1f",9/5 * $MinHiT[$c_day] + 32);
$RainDay[$c_day] = sprintf("%05.2f",$RainDay[$c_day]* 0.03937);
$Ave_Temp[$c_day] = sprintf("%04.1f",9/5 * ($tot_temp/$c) + 32);
$Ave_dew[$c_day] = sprintf("%04.1f",9/5 * ($tot_dew/$c) + 32);
$Ave_press[$c_day] = $tot_press/$c;
$Ave_press[$c_day] = sprintf("%05.2f",$Ave_press[$c_day]/33.8637526);
$deg_days = $Ave_Temp[$c_day]-65;
if ($deg_days < 0) $heat_days[$c_day] = sprintf("%04.1f",abs($deg_days)); else $heat_days[$c_day] = sprintf("%04.1f",0);
if ($deg_days > 0) $cool_days[$c_day] = sprintf("%04.1f",$deg_days); else $cool_days[$c_day] = sprintf("%04.1f",0);
$curr_day = $local_day_2;
$c_day = sprintf("%1d",$curr_day);
$c = 0;
$tot_temp = 0;
$tot_dew = 0;
$tot_press = 0;
$MaxHiT[$c_day] = 0;
$MinHiT[$c_day] = 1000;
$RainDay[$c_day] = 0;
if ($row['Temperature_C'] > $MaxHiT[$c_day]) $MaxHiT[$c_day] = $row['Temperature_C'];
if ($row['Temperature_C'] < $MinHiT[$c_day]) $MinHiT[$c_day] = $row['Temperature_C'];
if ($row['RawRain_mm'] > $RainDay[$c_day]) $RainDay[$c_day] = $row['RawRain_mm'];
$tot_temp = $tot_temp + $row['Temperature_C'];
$tot_dew = $tot_dew + $row['Dewpoint_C'];
$tot_press = $tot_press + $row['Pressure_mB'];
$c++;
}
}
$c_day = sprintf("%1d",$curr_day);
$MaxHiT[$c_day] = sprintf("%05.1f",9/5 * $MaxHiT[$c_day] + 32);
$MinHiT[$c_day] = sprintf("%04.1f",9/5 * $MinHiT[$c_day] + 32);
$RainDay[$c_day] = sprintf("%05.2f",$RainDay[$c_day]* 0.03937);
$Ave_Temp[$c_day] = sprintf("%04.1f",9/5 * ($tot_temp/$c) + 32);
$Ave_dew[$c_day] = sprintf("%04.1f",9/5 * ($tot_dew/$c) + 32);
$Ave_press[$c_day] = $tot_press/$c;
$Ave_press[$c_day] = sprintf("%05.2f",$Ave_press[$c_day]/33.8637526);
$deg_days = $Ave_Temp[$c_day]-65;
if ($deg_days < 0) $heat_days[$c_day] = sprintf("%04.1f",abs($deg_days)); else $heat_days[$c_day] = sprintf("%04.1f",0);
if ($deg_days > 0) $cool_days[$c_day] = sprintf("%04.1f",$deg_days); else $cool_days[$c_day] = sprintf("%04.1f",0);
Can anyone who has got this script working, or anyone with a greater SQL / PHP knowledge than me (which isn't a lot), suggest what might be wrong? I'm getting desperate.
Thanks - ALAN.