Reputation: 780
I have the following code:
//set $message and run database query
$message .= '<body style="margin: 0;">';
$message .= '<div style="padding: 0 20px;">';
$message .= '<span style="display: block; font-size: 22px; font-weight: bold; margin: 25px 0 -15px 0;"> User Activity on ' . $website . ' for ' . $yesterday . '</span>';
//query the database for today's history
$result = mysql_query("SELECT * FROM user_history WHERE date = '$yesterday' ORDER by name, time, title")
or die(mysql_error());
$old_user = '';
while($row = mysql_fetch_array( $result )) {
$new_user = $row['uid'];
if ($new_user != $old_user) {
$message .= '<br /><br /><hr />' . '<span style="font-size: 18px; font-weight: bold;">' . $row['name'] . '</span>' . '<br />' . $row['company'] . '<br />' . $row['email'] . '<br />' . $row['phone'] . '<br /><br />';
$old_user = $new_user;
}
$message .= '<ul><li>' . $row['time'] .
'<ul><li>' . $row['title'] . ' (<a href="' . $row['url'] . '">' . $row['url']. '</a> )' . '</li></ul>' . '<br /><br />' .
'</li></ul>';
}
//if no user activity, simply say so
if($new_user == "") {
$message .= '<br /><br /><hr /><span style="font-size: 18px; font-weight: bold;">No user activity to report</span>';
}
$message .= '</div>';
$message .= '<div style="position: fixed; bottom: 0; height: 40px; width: 100%; margin: 20px 0 0 0; background: #000; color: #FFF; line-height: 40px; padding: 0 20px;">' .
'Report generated ' . $date . ' ' . $time .
'</div>';
$message .= '</body>';
It works beautifully in the mail function. The output email groups like this...
John Doe
John Doe's Company
[email protected]
800-555-0000
*1:30pm
*Video 1
*1:47pm
*Video 2
*1:47pm
*Video 3
==============================
Instead, I'd like to output like this:
John Doe
John Doe's Company
[email protected]
800-555-0000
*1:30pm
*Video 1
*1:47pm
*Video 2
*Video 3
=============================
Can someone please tell me how to make this happen? Thanks!
Upvotes: 0
Views: 120
Reputation: 11360
Just keep track of the current time value using the same technique that you are doing for distinct users (if ($new_user != $old_user) {
) but for the time value.
Something like
if ($new_user != $old_user) {
//your existing code
$old_time = null;
$end_tag = false;
}
if ($old_time == null || $row['time'] != $old_time) {
$old_time = $row['time'];
$message .= '<ul><li>' . $row['time'];
$end_tag = true;
}
$message .= '<ul><li>' .
$row['title'] . ' (<a href="' .
$row['url'] . '">' . $row['url']. '</a> )' .
'</li></ul>';
if ($end_tag) {
$message .= "</li></ul>";
$end_tag = false;
}
Though coding this way starts to get ugly fast and should be split up into functions.
Upvotes: 1
Reputation: 1464
Does this help?
$old_time = '';
$video_cache = '';
while($row = mysql_fetch_array( $result ))
{
$new_user = $row['uid'];
if ($new_user != $old_user)
{
$message .= '<br /><br /><hr />' . '<span style="font-size: 18px; font-weight: bold;">' . $row['name'] . '</span>' . '<br />' . $row['company'] . '<br />' . $row['email'] . '<br />' . $row['phone'] . '<br /><br />';
$old_user = $new_user;
}
$new_time = $row['time'];
if ($old_time != $new_time)
{
$video_cache = '<ul><li>' . $old_time . '</li>' . $video_cache . '</ul>';
$message .= $video_cache;
$video_cache = '';
}
$video_cache .= '<li>' . $row['title'] . ' (<a href="' . $row['url'] . '">' . $row['url']. '</a> )' . '</li>';
}
Upvotes: 0