2012-01-13 67 views
1

我正在构建一个php通知系统(有点像Facebook的)。php加入类似结果

它的工作原理应按照我希望的方式列出所有事件。但我试图让它明白,如果它在同一篇文章中获得3个以上的事件,它会将这些事件加入到一个通知中。

现在看起来是这样的:

User 1 wrote on article-x 
User 2 wrote on article-x 
user 3 wrote on article-x 
user 1 wrote on article-y 

相反,我希望它是打印:

user 1 and 2 others wrote on article-x 

一直试图在什么我需要做的这个念起来,但没有运气。任何指针不胜感激。 它被查询是这样的:

全码

$sesname = $_SESSION['user_name']; 
$sesid = $_SESSION['full_name']; 
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 
$stmt = $dbh->prepare("select * from comments WHERE full_name = '$sesid' and checked ='1' "); 
$stmt->bindParam(':full_name', $safe_name, PDO::PARAM_INT, 5); 

$stmt->execute(); 
$result = $stmt -> fetchAll(); 
foreach($result as $row) { 
$name = $row['name']; 
$pid = $row['pid']; 
$commentid = $row['id']; 
$fullink = $row['fullink']; 
$datetime = $row['dt']; 

if ($name == $sesname){ 
} else { 
echo "<div id='commentnote'><a href='http://{$fullink}'>{$name}</a>kommenterte ditt <a href='{$fullink}'>blogginnlegg</a><br><div class='updentry' style='color: red ! important; cursor: pointer; margin-top: -35px; position: absolute; right: 8px;'>x</div></div>"; 
} 

} 

使用你的答案下面编辑试过,但没有运气。谢谢回答虽然,我真的很感激它:)

回答

0

也许你可以创建一个2维数组是这样的:

Array 
(
    [article-x] => Array 
        (
         [0] => User1 
         [1] => User2 
        ) 
    [article-y] => Array 
        (
         [0] => User1 
        ) 
) 
1

约转动制品置于多维数组是什么? (只是一个例子,结构并不是最佳的,因为我不知道你有什么样的数据和需要。)

if(count($post['comments']) >= 3) { 
    echo $post['user'][0] ."and". (count($post['comments'])-1). " others wrote on .."; 
} else { 
    //Just one 
} 
0

如果你想这样做在PHP中,做这样的事情:

$events = array(); 
foreach($result as $row) { 
    if(isset($events[$row['article'])){ 
     $events[$row['article']]['counter']++; 
    }else{ 
     $row['counter'] = 0; 
     $events[$row['article']] = $row; 
    } 
} 

foreach($events as $event){ 
    echo "<div id='commentnote'>{$event['user']}".($event['counter']?' and '.$event['counter'].' others':'')." wrote on {$event['article']}</div>"; 
}