WXforum.net

Web Weather => Weather Website PHP/AJAX scripting => Topic started by: RickNY on April 28, 2022, 04:50:16 PM

Title: Forecast-compare script and PHP 8?
Post by: RickNY on April 28, 2022, 04:50:16 PM
I'been using jmcmurry's WXSIM forecast-compare script for a while... Figured I would try to start sorting out PHP 8 issues since I'm on 7.4... I did run into some with PHP 8, I was just wondering if there are some known issues with this script?

I did have to clear my existing data for forecast results because I was using an older version that didn't use abbreviations for the special characters, and I thought that may have been my issue.

I guess I should wait until my cron jobs start populating the log files a bit -- but wanted to check if maybe I did something wrong on my end.

Thanks
Rick
Title: Re: Forecast-compare script and PHP 8?
Post by: RickNY on April 28, 2022, 05:06:18 PM
OK, I probably have to wait until I fill up more data again in my forecast logs again -- but so far I was able to correct things by changing:

Code: [Select]
if (count($deltas[$i])
to

Code: [Select]
if (count((array)$deltas[$i])
on Lines 798, 850, and 903 of forecast-compare-include.php
Title: Re: Forecast-compare script and PHP 8?
Post by: RickNY on May 20, 2022, 03:16:18 PM

Another change I needed to make with PHP 8.1.5 to get my logs to start working.  Was receiving this error when forecast-compare-include.php fired:
Code: [Select]
Fatal error</b>: Uncaught TypeError: date(): Argument #2 ($timestamp) must be of type ?int, string given in /home/indigopc/public_html/forecast-compare-include.php:254
Changed Line 254 from:
Code: [Select]
if ($WSUpdate == date($mask,$entry[0])) {        // then we have an entry for that day
to

Code: [Select]
if ($WSUpdate == date($mask,(int)$entry[0])) {        // then we have an entry for that day


Title: Re: Forecast-compare script and PHP 8?
Post by: RickNY on May 20, 2022, 05:36:56 PM

Some more changes related to date() -- I think this should be all of them:

Line 370:
Code: [Select]
$fday = date("m/d/Y",$entry[0]);  //  ** Do not change this!!! ** - it is just to determine day/nightto
Code: [Select]
$fday = date("m/d/Y",(int)$entry[0]);  //  ** Do not change this!!! ** - it is just to determine day/night
Line 454:
Code: [Select]
<td><?php echo $Langupdated date($FCdatestr,$entry[0]) . $Langat date($FCtimestr,$entry[0]); ?> </td>to
Code: [Select]
<td><?php echo $Langupdated date($FCdatestr,$(int)entry[0]) . $Langat date($FCtimestr,(int)$entry[0]); ?> </td>
Line 532:
Code: [Select]
echo date($FCdatestr,$entry[0]);to
Code: [Select]
echo date($FCdatestr,(int)$entry[0]);
Line 534:
Code: [Select]
echo "<br />" . date($FCtimestr,$entry[0]);to
Code: [Select]
echo "<br />" . date($FCtimestr,(int)$entry[0]);
Line 957:
Code: [Select]
echo '>' . date($FCdatestr,$entry[0]) . '</option>' . "\n";to
Code: [Select]
echo '>' . date($FCdatestr,(int)$entry[0]) . '</option>' . "\n";