hellonoko Posted January 3, 2008 Share Posted January 3, 2008 I am adding a countdown timer to my todo list that grabs the due date of a todo item from my DB and then creates a timer that counts down based on the current date. The timer code seems to work fine. However when I add it to my output code for my todo list it causes the list to fall into an infinite loop putting out table rows. After outputting the first todo item and timer correctly. Does anyone have any idea why this is happening? The timer is include "timer/timer.php"; on line 131 of the todo code and current commented out. Thanks for your time. Timer Code: <?php //$date = $HTTP_GET_VARS[date]; //$hours = $HTTP_GET_VARS[hours]; //$minutes = $HTTP_GET_VARS[minutes]; //get date from DB include "../dbconnect.php"; //SELECT DATE_FORMAT(myDateField, '%d-%m-%Y') FROM myTable //gets the idea background color from DB //$query = "SELECT DATE_FORMAT(duedate, '%d-%m-%Y') FROM ideas WHERE id='18'"; $query = "SELECT duedate FROM ideas WHERE id = '18'"; //$row['id']"; $result = mysql_query($query); $rows = mysql_fetch_array($result); $duedate = $rows[0]; //echo $duedate; //echo "<br>"; $due_date = date('F j Y H:i:s',strtotime($duedate)); //echo "<br>"; //echo $due_date; //2007-12-28 14:59:59 //$due_date = $date." ".$hours.":".$minutes.":00"; //fake $due_date for testing $due_date = "January 1 2008 00:00:00"; $bg_color = "#FF0000"; ?> <!--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>--> <style style="text/css"> .custom { color:#FFFFFF; font: bold 20px Arial, Helvetica, sans-serif; background-color:<?php echo $bg_color;?>; } .lcdstyle{ /*Example CSS to create LCD countdown look*/ background-color:black; color:yellow; font: bold 18px MS Sans Serif; padding: 3px; } .lcdstyle sup{ /*Example CSS to create LCD countdown look*/ font-size: 80% } </style> <script type="text/javascript"> /*********************************************** * Dynamic Countdown script- © Dynamic Drive (http://www.dynamicdrive.com) * This notice MUST stay intact for legal use * Visit http://www.dynamicdrive.com/ for this script and 100s more. ***********************************************/ function cdtime(container, targetdate){ if (!document.getElementById || !document.getElementById(container)) return this.container=document.getElementById(container) this.currentTime=new Date() this.targetdate=new Date(targetdate) this.timesup=false this.updateTime() } cdtime.prototype.updateTime=function(){ var thisobj=this this.currentTime.setSeconds(this.currentTime.getSeconds()+1) setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second } cdtime.prototype.displaycountdown=function(baseunit, functionref){ this.baseunit=baseunit this.formatresults=functionref this.showresults() } cdtime.prototype.showresults=function(){ var thisobj=this var timediff=(this.targetdate-this.currentTime)/1000 //difference btw target date and current date, in seconds if (timediff<0){ //if time is up this.timesup=true this.container.innerHTML=this.formatresults() return } var oneMinute=60 //minute unit in seconds var oneHour=60*60 //hour unit in seconds var oneDay=60*60*24 //day unit in seconds var dayfield=Math.floor(timediff/oneDay) var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour) var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute) var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute)) if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level hourfield=dayfield*24+hourfield dayfield="n/a" } else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level minutefield=dayfield*24*60+hourfield*60+minutefield dayfield=hourfield="n/a" } else if (this.baseunit=="seconds"){ //if base unit is seconds, set "secondfield" to be topmost level var secondfield=timediff dayfield=hourfield=minutefield="n/a" } this.container.innerHTML=this.formatresults(dayfield, hourfield, minutefield, secondfield) setTimeout(function(){thisobj.showresults()}, 1000) //update results every second } /////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW////////////////////////////// //Create your own custom format function to pass into cdtime.displaycountdown() //Use arguments[0] to access "Days" left //Use arguments[1] to access "Hours" left //Use arguments[2] to access "Minutes" left //Use arguments[3] to access "Seconds" left //The values of these arguments may change depending on the "baseunit" parameter of cdtime.displaycountdown() //For example, if "baseunit" is set to "hours", arguments[0] becomes meaningless and contains "n/a" //For example, if "baseunit" is set to "minutes", arguments[0] and arguments[1] become meaningless etc function formatresults(){ if (this.timesup==false){//if target date/time not yet met var displaystring="<span class='custom'>"+arguments[0]+" days "+arguments[1]+" hours "+arguments[2]+" minutes "+arguments[3]+" seconds</span>" } else{ //else if target date/time met var displaystring="Future date is here!" } return displaystring } </script> <!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Count Down!</title> </head> <body>--> <div id="countdowncontainer"></div> <!-- <div id="countdowncontainer2"></div> --> <script type="text/javascript"> var futuredate=new cdtime("countdowncontainer", "<?php echo $due_date;?>") futuredate.displaycountdown("days", formatresults) <!-- --> </script> <!--</body> </html>--> TODO code: <link rel="shortcut icon" href="images/favicon.ico" > <?php error_reporting(E_All); session_start(); session_register('sort'); if ($_session['sort'] == NULL) { $_session['sort'] = $HTTP_GET_VARS[sort]; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Idea Box</title> <style type="text/css"> <!-- td,th { font-size: 10px; font-family: Arial, Helvetica, sans-serif; color: #FFFFFF; } body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; } a:link { color: #FFFFFF; } a:visited { color: #FFFFFF; } a:hover { color: #666666; } a:active { color: #FFFFFF; } .menu_text {color: #000000} --> </style> </head> <?php include 'dbconnect.php'; include 'menu.php'; if ( $_session['sort'] == NULL) { $_session['sort'] = "title_ascending"; } if ( $_session['sort'] == "title_ascending" ) { $query = "SELECT * FROM ideas ORDER BY rank ASC"; } else if ( $_session['sort'] = "title_descending") { $query = "SELECT * FROM ideas ORDER BY rank DESC"; } //echo $_session['sort']; $result = mysql_query($query); $rows = mysql_num_rows($result); echo "<table width='100%' border='0' cellspacing='1'>"; for ($i=0; $i <$rows; $i++) { $row = mysql_fetch_array($result); $num_rows = mysql_num_rows($result); echo "<tr>"; /// changes the state of viewing childen IF the idea has children if ( $row[haschildren] == TRUE) { if ( $row[state] == FALSE) { echo "<form action='state.php' method='get'>"; echo "<input name='id' type='hidden' value=".$row[id]." />"; echo "<input name='state' type='hidden' value='open' />"; echo "<td width='16' align='center' valign='middle' bgcolor='#ffffff'><input type='image' src='images/right.png' alt='Open'></td>"; echo "</form"; } if ( $row[state] == TRUE) { echo "<form action='state.php' method='get'>"; echo "<input name='id' type='hidden' value=".$row[id]." />"; echo "<input name='state' type='hidden' value='close' />"; echo "<td width='16' align='middle' valign='middle' bgcolor='#ffffff'><input type='image' src='images/down.png' alt='Close'></td>"; echo "</form"; } } if ( $row[haschildren] == FALSE) { echo "<td width='16' valign='top' bgcolor='#ffffff'></td>"; } // add sub idea button echo "<form action='add_child.php' method='get'>"; echo "<input name='id' type='hidden' value=".$row[id]." />"; echo "<td width='16' align='center' valign='middle' bgcolor='#ffffff'><input type='image' src='images/add.png' alt='Add Child'></td>"; echo "</form"; //echos the title and content of the idea echo "<td width='180' valign='top' bgcolor='#666666'>".$row['title']."</td>"; echo "<td valign='top' bgcolor='#666666'>"; echo $row['content']; if ( $row[hasduedate] == "true") { // include "timer/timer.php"; echo "</td>"; } else { echo "</td>"; } //echo "</td>"; // echos the UP and DOWN rank buttons and form if ( $row[rank] > 1) { echo "<form action='idea_rank.php' method='get'>"; echo "<input name='id' type='hidden' value=".$row[id]." />"; echo "<input name='direction' type='hidden' value='up' />"; echo "<td width='16' valign='middle' bgcolor='#666666'><input type='image' src='images/up.png' alt='Up'></td>"; echo "</form"; } if ( $row[rank] < $num_rows) { echo "<form action='idea_rank.php' method='get'>"; echo "<input name='id' type='hidden' value=".$row[id]." />"; echo "<input name='direction' type='hidden' value='down' />"; echo "<td width='16' valign='middle' bgcolor='#666666'><input type='image' src='images/down.png' alt='Down'></td>"; echo "</form"; } echo "<form action='edit_idea.php' method='get'>"; echo "<input name='id' type='hidden' value=".$row[id]." />"; echo "<td width='16' valign='middle' bgcolor='#ffffff'><input type='image' src='images/edit.png' alt='Edit'></td>"; echo "</form"; echo "<form action='delete_idea.php' method='get'>"; echo "<input name='delete_idea' type='hidden' value=".$row[id]." />"; echo "<td width='16' valign='middle' bgcolor='#ffffff'><input type='image' src='images/delete.png' alt='Delete'></td>"; echo "</form"; echo "</tr>"; // child query $query_children = "SELECT * FROM children"; $children_result = mysql_query($query_children); $children_rows = mysql_num_rows($children_result); //this part displays the children of the item IF it is set to OPEN and IF it has any children. if ( $row[state] == TRUE ) { for ($c=0; $c < $children_rows; $c++) { $children_row = mysql_fetch_array($children_result); if ( $children_row['childof'] == $row['id'] ) { echo "<tr>"; echo "<td width='16' valign='top' bgcolor='#ffffff'></td>"; echo "<td width='16' valign='top' bgcolor='#ffffff'></td>"; echo "<td width='150' valign='top' bgcolor='#999999'>"; echo $children_row['title']; echo "</td>"; echo "<td bgcolor='#999999'>".$children_row['content']."</td>"; // links for editing and deleting each child. echo "<form action='edit_child.php' method='get'>"; echo "<input name='id' type='hidden' value=".$children_row[id]." />"; echo "<td width='16' valign='middle' bgcolor='#ffffff'><input type='image' src='images/edit.png' alt='Edit Child'></td>"; echo "</form"; echo "<form action='delete_child.php' method='get'>"; echo "<input name='parent_id' type='hidden' value=".$row[id]." />"; echo "<input name='delete_child' type='hidden' value=".$children_row[id]." />"; echo "<td width='16' valign='middle' bgcolor='#ffffff'><input type='image' src='images/delete.png' alt='Delete Child'</td>"; echo "</form"; echo "</tr>"; } } } // } echo "</table>"; ?> 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.