RajkumarLA Posted May 22, 2013 Share Posted May 22, 2013 Table: cquestions -> cqid, cqtext, showdate. I want to update 'showdate' field to tomorrows date.. cqid cqtext showdate 200 q1 2013-05-22 201 q2 0000-00-00 202 q3 0000-00-00 the idea is to display only one question everyday. showdate is compared with the current date and display the first question q1. the starting date only store in db. now i want to update only the next row (q2)'s showdate to tomorrows date. next day wen q2 is displayed q3 will be updated to tomorrows date. today q1 displayed. db is like this. cqid cqtext showdate 200 q1 2013-05-22 201 q2 2013-05-23 202 q3 0000-00-00 tomorrow q2 displayed. then db cqid cqtext showdate 200 q1 2013-05-22 201 q2 2013-05-23 202 q3 2013-05-24 203 q4 0000-00-00 my code: $today=date("Y/m/d"); $tomorrow= date("Y-m-d", strtotime("tomorrow")); echo "<form method='post' id='submit' action='checkresult.php'>"; $sql="SELECT * FROM cquestions where showdate= '$today' limit 1"; $result=mysql_query($sql); while ($row = mysql_fetch_array($result)) { $cqid=mysql_result($result,"cqid"); $update1="update cquestions set showdate='$tomorrow' where showdate='0000-00-00' and cqid!='$cqid' order by cqid limit 1"; mysql_query($update1); echo "<p>" . $row['cqtext'] . "</p>"; $sql2="SELECT * FROM canswers where cqid=".$row['cqid']; $result2=mysql_query($sql2); while($row2=mysql_fetch_assoc($result2)){ echo "<input type='radio' name='".$row['cqid']."' value='".$row2['cqans']."' />".$row2['aatext']; } /*echo "<input type='hidden' name='email' value='email' />";*/ } echo"<input type='submit' id='submit' name='submit' value='Submit Answers' />"; echo "</form>"; ?> this code update the next row, but the problem is its executed every time page loads and update the next row... i want to execute the update query only once for the day. how to do it? Quote Link to comment Share on other sites More sharing options...
Barand Posted May 22, 2013 Share Posted May 22, 2013 Check if there is a row with tomorrow's date first Quote Link to comment Share on other sites More sharing options...
Muddy_Funster Posted May 22, 2013 Share Posted May 22, 2013 Don't run queries inside loops Quote Link to comment Share on other sites More sharing options...
RajkumarLA Posted May 22, 2013 Author Share Posted May 22, 2013 Barand no. there is only today's date in the database. all other rows doesn't have date. when the first row displayed i will insert the 2nd rows date as 'tomorrows' date. so next day the 2nd row will be displayed and 3rd row's date is updated to next day's date. the above code is working fine. the problem is that update query runs every time the page loads. i want to run the update query only once in a day.... Quote Link to comment Share on other sites More sharing options...
Muddy_Funster Posted May 22, 2013 Share Posted May 22, 2013 if you want to run the query once a day set it as a cron job rather than having it run on a browser script. If you absoloutly must use a browser script have it check the date and only run it if it hasn't run on this date already. oh yeah, and don't run queries inside loops. Quote Link to comment Share on other sites More sharing options...
Barand Posted May 22, 2013 Share Posted May 22, 2013 Barand no. there is only today's date in the database. all other rows doesn't have date. when the first row displayed i will insert the 2nd rows date as 'tomorrows' date. so next day the 2nd row will be displayed and 3rd row's date is updated to next day's date. the above code is working fine. the problem is that update query runs every time the page loads. i want to run the update query only once in a day.... When you run it today it will put tomorrows date in there. So when you load the page again today you don't want to run it if tomorrows date is already there 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.