mfandel Posted February 4, 2014 Share Posted February 4, 2014 Problem: the php code is returning the wrong day of the week on a statistics report the software generates. So when you go run the statistics page and it queries the DB it returns a value but the wrong day label shows up. In my test case I have data only on Thursday of the month and when I run the report it shows up as data for Sunday. Here are what I assume are the two section of code from my research.. rather than posting the entire php file. I guess at least I think I narrowed down the code section...small victories. The code used to get the first day of the month is (which i have seen out there and compared and looks like it is correct): function get_first_day($day_number=1, $month=false, $year=false) { $month = ($month === false) ? strftime("%m"): $month; $year = ($year === false) ? strftime("%Y"): $year; $first_day = 1 + ((7+$day_number - strftime("%w", mktime(0,0,0,$month, 1, $year)))%7); return mktime(0,0,0,$month, $first_day, $year); } Before I go on I have also tried to set $day_number=1 to various values 0-6, but seems to have no effect. I read several post that setting that value was the problem, but made no difference for me. I thought maybe the "session" was causing the issue after trying to learn about them, so I tried to log out and log back in clear my cache and also change browsers after changing the value but that got me nowhere. The code I guess you would say that calls this??? to generate the output report that is not correct is: <table id="graph_weekday" class="data" style="display:none" cellpadding="0" cellspacing="0" width="100%"> <caption><?php echo _occupancy_per_week." / "._days;?></caption> <thead> <tr> <td class="no_input"> </td> <?php foreach ($label_wk as $value) { echo "<th>".strftime("%A", get_first_day($value, $_SESSION['statistic_month'], $_SESSION['selectedDate_year']))."</th>"; } ?> </tr> </thead> <tbody> <tr> <th><?php echo _days;?></th> <?php foreach ($data_wk as $value) { echo "<td>".$value."</td>"; } ?> </tr> </tbody> </table> } ?> So things seem to be working to pull the data, but the label is wrong. Though setting the value for $day_number= to something else doesn't seem to work. Is there something wrong with the.$value. which is being echoed and I need to apply the get_first_day to the value? Thanks for any help. Quote Link to comment https://forums.phpfreaks.com/topic/285919-mktime-and-strftime-gives-wrong-day-of-week/ Share on other sites More sharing options...
mfandel Posted February 4, 2014 Author Share Posted February 4, 2014 I am trying to dig into this and tracked back to some additional code that might be relevant // Bar Plot Guest by weekday/month $data_wk = array(); $label_wk = array(); $statistic = querySQL('statistic_weekday'); foreach ($statistic as $key => $value) { foreach($value as $paxsum){ $label_wk[] = $key; $data_wk[] = $paxsum; } } Quote Link to comment https://forums.phpfreaks.com/topic/285919-mktime-and-strftime-gives-wrong-day-of-week/#findComment-1467657 Share on other sites More sharing options...
mfandel Posted February 5, 2014 Author Share Posted February 5, 2014 Ok I think I have it. I was changing the value $day_number=1 to a different number. I wasn't changing the $first_day = 1. When I changed $first_day = 5 it seems to work. Does this seem like it is correct or going to cause me other issues? Quote Link to comment https://forums.phpfreaks.com/topic/285919-mktime-and-strftime-gives-wrong-day-of-week/#findComment-1467799 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.