TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   General (http://www.talkphp.com/general/)
-   -   Nested while loop needed for this? (http://www.talkphp.com/general/4752-nested-while-loop-needed.html)

gtifllm 07-19-2009 06:29 AM

Nested while loop needed for this?
 
Hello. I'm trying to display a MySQL timestamp in the user's timezone for each entry in a databse table. BTW, this is OsCommerce, so disregard the weird function names.

This code converts the timestamp for one entry....
PHP Code:

$timestamp_from_mysql tep_db_query("SELECT UNIX_TIMESTAMP(`date_added`) FROM `".TABLE_TUTORING_UNITS_COMMENTS."` WHERE `customers_id` = '".$customer_id."' ORDER BY `date_added`");
$timezone_from_mysql tep_db_query("SELECT `customers_timezone` FROM `".TABLE_CUSTOMERS."` WHERE `customers_id` = '".$customer_id."'");

if(
$timestamp_from_mysql!=false&&$timezone_from_mysql!=false){
        
$timestamp_from_mysql=tep_db_fetch_array($timestamp_from_mysql);
        
$timezone_from_mysql=tep_db_fetch_array($timezone_from_mysql);
        
        
$timestamp=$timestamp_from_mysql['UNIX_TIMESTAMP(`date_added`)']; 
        
$timezone=$timezone_from_mysql['customers_timezone'];
        
        
$dt_zone=new DateTimeZone($timezone);
        
$time=date('r',$timestamp);
        
$dtime=new DateTime($time);
        
$dtime->setTimeZone($dt_zone);
                            
        echo 
$dtime->format("M. j, Y \a\\t g:i a");



This is my current code...
PHP Code:

    $tutoring_comments_query tep_db_query("select comments from " TABLE_TUTORING_UNITS_COMMENTS " where customers_id = '" . (int)$customer_id "' order by date_added");

    if (
tep_db_num_rows($tutoring_comments_query)) {
      while (
$tutoring_comments tep_db_fetch_array($tutoring_comments_query)) {

          
$timezone_from_mysql tep_db_query("SELECT `customers_timezone` FROM `".TABLE_CUSTOMERS."` WHERE `customers_id` = '".$customer_id."'");
        
$timestamp_from_mysql tep_db_query("SELECT UNIX_TIMESTAMP(`date_added`) FROM `".TABLE_TUTORING_UNITS_COMMENTS."` WHERE `customers_id` = '".$customer_id."' ORDER BY `date_added`");

          if(
$timestamp_from_mysql!=false&&$timezone_from_mysql!=false){
        
$timestamp_from_mysql=tep_db_fetch_array($timestamp_from_mysql);
        
$timezone_from_mysql=tep_db_fetch_array($timezone_from_mysql);
        
        
$timestamp=$timestamp_from_mysql['UNIX_TIMESTAMP(`date_added`)']; 
        
$timezone=$timezone_from_mysql['customers_timezone'];
        
        
$dt_zone=new DateTimeZone($timezone);
        
$time=date('r',$timestamp);
        
$dtime=new DateTime($time);
        
$dtime->setTimeZone($dt_zone);
        }

      echo 
'          <tr>' "\n" .
             
'            <td class="main" align="center">' '&nbsp;' $dtime->format("M. j, Y \a\\t g:i a") . '&nbsp;' '</td>' "\n" .
             
'            <td class="main" align="center">' '&nbsp;';
        if (
$orders_history['customer_notified'] == '1') {
          echo 
tep_image(DIR_WS_ICONS 'tick.gif'ICON_TICK) . '&nbsp;' "</td>\n";
        } else {
          echo 
tep_image(DIR_WS_ICONS 'cross.gif'ICON_CROSS) . '&nbsp;' "</td>\n";
        }
        echo 
'            <td class="main">' '&nbsp;' nl2br(tep_db_output($tutoring_comments['comments'])) . '&nbsp;</td>' "\n" .
             
'          </tr>' "\n";
      }
    } else {
        echo 
'          <tr>' "\n" .
             
'            <td class="main" colspan="5">&nbsp;There are no tutoring comments at this time.</td>' '&nbsp;' "\n" .
             
'          </tr>' "\n";
    } 


Currently, I'm getting several entries so I know the main while loop is working. It's just that the timestamps that come from that are all displaying the time of the first entry instead of the time for each entry. So, it seems like the second while loop (the one for converting the timezone) is only getting run once.

I'm not married to the nested while structure. If someone has a better idea, please enlighten me.

Thanks!

jasonberresford 08-17-2009 07:50 PM

Yep ...

ob_flush();
flush();
clearstatcache();


Ran into the same problem for a daemon running a php loop.. Time wouldn't change any time during the loop.. Clear the stat cache .. and you should be good.


All times are GMT. The time now is 10:45 AM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0