slyte33 Posted March 25, 2010 Share Posted March 25, 2010 What I am trying to do is display 'drug' price changes for my online rpg game. I have a cron that runs once every 15 minutes, and the time when the cron runs is inserted into the DB. I have a for loop that looks like this: if ($_GET['chart']) { $drugprices=$db->execute("select * from drugs_pricechange where name='".$_GET['chart']."' order by time desc limit 24"); echo "<table width=\"540\" bgcolor=\"666666\" cellspacing=\"1\">"; echo "<tr>"; echo "<td class=\"dark\" colspan=\"3\" align=\"center\"><b>Drug price changes for ".$_GET['chart']."</td>"; echo "</tr>"; for($i=1;$dp=$drugprices->fetchrow();$i++) { echo "<tr>"; echo "<td>"; echo "<b>"; echo date('G:i', $dp['time']); echo "</b>"; echo " | $".$dp['newprice'].""; echo " | "; if ($dp['sign']=="+"){$color="green";}else{$color="red";} echo "<font color=\"$color>\""; echo "".$dp['sign'].""; echo "$".$dp['pchange'].""; echo "<br></font>"; if ($i % 8 == 0){echo "<td class=\"light\">";} } die; } As you can see, this would not work. Every 8 "$i" that is looped would start a new row. Although it does not work unless i put <tr><td> right after the for loop starts.(which results in 1 row, 24 columns) If you understand the code above you can see what I'm asking, kinda. I want 3 rows, 8 columns with the time the cron ran to be displayed like this: 1|9|17 2|10|18 3|11|19 4|12|20 5|13|21 6|14|22 7|15|23 8|16|24 The only way I can get this to work is by using <tr> instead which would result in this: 1|2|3 4|5|6 7|8|9 10|11|12 13|14|15 16|17|18 19|20|21 22|23|24 All help would me much appreciated, thank you ! Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/ Share on other sites More sharing options...
slyte33 Posted March 25, 2010 Author Share Posted March 25, 2010 Anyone? Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031651 Share on other sites More sharing options...
Psycho Posted March 25, 2010 Share Posted March 25, 2010 Not tested, so may be some synta errors: <?php //Config variables $max_rows = 8; $max_cols = 3; //End config variables function outputRecord($record) { if (!is_array($record)) { return false; } $color = ($record['sign']=="+") ? "green" : "red"; $date = date('G:i', $record['time']); $tdOutput = "<td><b>{$date}</b> | ${$record['newprice']} | "; $tdOutput .= "<span style=\"color:{$color};\">{$record['sign']}${$record['pchange']}</span><br>"; $tdOutput .= "</td>\n"; return $tdOuptu; } if ($_GET['chart']) { $total_records = $max_rows * $max_cols; $chart = mysql_real_escape_string($_GET['chart']); $query = "SELECT * FOM drugs_pricechange WHERE name='{$chart}' ORDER BY time DESC LIMIT {$total_records}"; $drugprices=$db->execute($query); //Dump restults into temporary array $records = array(); while($dp=$drugprices->fetchrow()) { $records[] = $dp; } //Ouput the results into columns $tableData = ''; $rows = floor(count($records)/3); for ($row=0; $row<$rows; $row++) { $tableData .= "<tr>\n"; for ($col=0; $col<$max_cols; $col++) { $tableData .= outputRecord($record[$i+($col*$rows)]); } $tableData .= "<tr>\n"; } } ?> <table width=\"540\" bgcolor=\"666666\" cellspacing=\"1\"> <tr> <th class=\"dark\" colspan=\"3\">Drug price changes for <?php echo $_GET['chart']; ?></th> </tr> <?php echo $tableData; ?> </table> Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031684 Share on other sites More sharing options...
slyte33 Posted March 25, 2010 Author Share Posted March 25, 2010 Not tested, so may be some synta errors: <?php //Config variables $max_rows = 8; $max_cols = 3; //End config variables function outputRecord($record) { if (!is_array($record)) { return false; } $color = ($record['sign']=="+") ? "green" : "red"; $date = date('G:i', $record['time']); $tdOutput = "<td><b>{$date}</b> | ${$record['newprice']} | "; $tdOutput .= "<span style=\"color:{$color};\">{$record['sign']}${$record['pchange']}</span><br>"; $tdOutput .= "</td>\n"; return $tdOuptu; } if ($_GET['chart']) { $total_records = $max_rows * $max_cols; $chart = mysql_real_escape_string($_GET['chart']); $query = "SELECT * FOM drugs_pricechange WHERE name='{$chart}' ORDER BY time DESC LIMIT {$total_records}"; $drugprices=$db->execute($query); //Dump restults into temporary array $records = array(); while($dp=$drugprices->fetchrow()) { $records[] = $dp; } //Ouput the results into columns $tableData = ''; $rows = floor(count($records)/3); for ($row=0; $row<$rows; $row++) { $tableData .= "<tr>\n"; for ($col=0; $col<$max_cols; $col++) { $tableData .= outputRecord($record[$i+($col*$rows)]); } $tableData .= "<tr>\n"; } } ?> <table width=\"540\" bgcolor=\"666666\" cellspacing=\"1\"> <tr> <th class=\"dark\" colspan=\"3\">Drug price changes for <?php echo $_GET['chart']; ?></th> </tr> <?php echo $tableData; ?> </table> Hi Mjdamato, thank you for your time and reply to my question, it seems you really spend some time and work into helping us out . When I try using this, it displays "Drug price changes for" in green on the <td>, but it doesn't display the $_GET['chart'] Am I doing something wrong? Ok i figured out what was wrong, but now I can't get it to display the rows and such. It will only show this: <table width=\"540\" bgcolor=\"666666\" cellspacing=\"1\"> <tr> <td class=\"dark\" colspan=\"3\">Drug price changes for <?php echo $_GET['chart']; ?></td> </tr> <?php echo $tableData; ?> </table> Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031690 Share on other sites More sharing options...
slyte33 Posted March 25, 2010 Author Share Posted March 25, 2010 Ok I figured out why it isn't working, but one thing that I can't fix is this: outputRecord($record[$i+($col*$rows)]); It can't seem to figure out whats wrong with it. Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031701 Share on other sites More sharing options...
Psycho Posted March 25, 2010 Share Posted March 25, 2010 Oh hell! It's the little things that screws you up. Change that line to this outputRecord($record[$i+($col*$rows)]); And fix the last line in that function. I misspelled the variable name Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031727 Share on other sites More sharing options...
Psycho Posted March 25, 2010 Share Posted March 25, 2010 Oh hell! It's the little things that screws you up. Change that line to this outputRecord($record[$i+($col*$rows)]); Ok, I double failed. Forgot to make the change. Doh! That line should be echo'd like this: echo outputRecord($record[$i+($col*$rows)]); Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031778 Share on other sites More sharing options...
slyte33 Posted March 26, 2010 Author Share Posted March 26, 2010 I worked on it for awhile and was able to get it working. Thank you very much for your help Quote Link to comment https://forums.phpfreaks.com/topic/196488-how-to-display-3-rows-8-columns-24-total-orded-by-time-correctly/#findComment-1031957 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.