x1nick Posted October 23, 2009 Share Posted October 23, 2009 I have a set of dates (and times), which are returned from a mySQL query. These usually span from 1-2 months and I need to be able to separate the results (using HTML) every sunday (monday being the start of the week). Set of timestamps.... 1255482000 1255483800 1255485600 1255487400 1256086800 1256088600 1256090400 1256092200 1256691600 1256693400 1256695200 1256697000 1257300000 1257301800 1257303600 1257305400 1257904800 1257906600 1257908400 1257910200 1258509600 1258511400 1258513200 1258515000 1259114400 1259116200 1259118000 1259119800 Currently the code looks like this, but having trouble getting round the logic of doing this... <?php while ($sqlresults = mysql_fetch_array($results)) { $compare = strtotime(date('d F Y',$laststamp)." next Sunday"); echo $sqlresults['timestamp'].'<br>'; if ($sqlresults['timestamp'] != $laststamp) { if ($compare > $laststamp) { #HTML CODE } } $laststamp = $sqlresults['timestamp']; } ?> But at the moment it just puts HTML code inbetween every time. Quote Link to comment Share on other sites More sharing options...
cags Posted October 23, 2009 Share Posted October 23, 2009 You could perhaps use something like... if(date("D", strtotime($sqlresults['timestamp'] . " previous weekday")) == "Fri") { echo "new week"; } ... though it's probably not the best method. Quote Link to comment Share on other sites More sharing options...
kickstart Posted October 23, 2009 Share Posted October 23, 2009 Hi Think I would start with the first day, calculate the previous Monday and the next Monday (ie add 604800 seconds to it). Output the weeks HTML and the first record. Then loop around the rest. If the next record is later than the next monday then output a new week, add a week to each of the next and prev mondays and check again (until the day is within that week, copes with weeks with no records in your listing). Something like this:- <?php if ($sqlresults = mysql_fetch_array($results)) { $PrevMonday = strtotime(date('d F Y',$sqlresults['timestamp'])." last Monday"); $NextMonday = $PrevMonday + 604800; WeeksHtml($PrevMonday,$NextMonday); echo $sqlresults['timestamp'].'<br>'; while ($sqlresults = mysql_fetch_array($results)) { while ($sqlresults['timestamp'] > $NextMonday) { $PrevMonday += 604800; $NextMonday = $PrevMonday + 604800; WeeksHtml($PrevMonday,$NextMonday); } echo $sqlresults['timestamp'].'<br>'; } } function WeeksHtml($StartOfWeek,$EndOfWeek) { #HTML CODE } ?> All the best Keith Quote Link to comment Share on other sites More sharing options...
x1nick Posted October 23, 2009 Author Share Posted October 23, 2009 Ah thats brilliant thanks! Quote Link to comment 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.