Pagina 1 van 1

Distinct

Geplaatst: 04 jul 2004, 17:40
door BladiN
Ik ben een scriptje aant maken voor de laatste 10 posts, alleen nou krijg ik dus dubbele posts te zien op http://www.duhfietsbelluh.com/phpBB. Dit komt waarschijnlijk doordat er iets niet goed zit bij mn DISTINCT in mn query.

Code: Selecteer alles

$s_info = mysql_query("SELECT 
                        DISTINCT (p.topic_id),
                        f.forum_name,
                        u.username,
                        t.topic_title,
                        p.post_time
                    FROM
                        " . $table_prefix . "posts AS p,
                        " . $table_prefix . "forums AS f,
                        " . $table_prefix . "users AS u,
                        " . $table_prefix . "topics AS t
                    WHERE
                        u.user_id = p.poster_id AND
                        f.forum_id = p.forum_id AND
                        t.topic_id = p.topic_id
                    ORDER BY
                        p.post_time DESC
                    LIMIT 0, 10") or die(mysql_error());

$url = array();

while($f_info = mysql_fetch_assoc($s_info))
{
	
 if (date("mdy", $f_info['post_time']) == date("mdy"))
 {		
	if (strlen($f_info['topic_title']) > "12")
	 {
	$url[] = '<span style="color: #000000">' . date("H:i", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. substr($f_info['topic_title'], 0, 11) . '..</a><br />';
     }
    else
     {
	$url[] = '<span style="color: #000000">' . date("H:i", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. $f_info['topic_title'] . '</a><br />';    
     }
 }
 else
 {
	if (strlen($f_info['topic_title']) > "12")
	 {
	$url[] = '<span style="color: #000000">' . date("m/d", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. substr($f_info['topic_title'], 0, 11) . '..</a><br />';
     }
    else
     {
	$url[] = '<span style="color: #000000">' . date("m/d", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. $f_info['topic_title'] . '</a><br />';    
     }
 }
}

$url = implode("\n", $url);
Verder zou ik ook graag willen weten hoe ik het stukje van

Code: Selecteer alles

while($f_info = mysql_fetch_assoc($s_info))
{
	
 if (date("mdy", $f_info['post_time']) == date("mdy"))
 {		
	if (strlen($f_info['topic_title']) > "12")
	 {
	$url[] = '<span style="color: #000000">' . date("H:i", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. substr($f_info['topic_title'], 0, 11) . '..</a><br />';
     }
    else
     {
	$url[] = '<span style="color: #000000">' . date("H:i", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. $f_info['topic_title'] . '</a><br />';    
     }
 }
 else
 {
	if (strlen($f_info['topic_title']) > "12")
	 {
	$url[] = '<span style="color: #000000">' . date("m/d", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. substr($f_info['topic_title'], 0, 11) . '..</a><br />';
     }
    else
     {
	$url[] = '<span style="color: #000000">' . date("m/d", $f_info['post_time']) . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. $f_info['topic_title'] . '</a><br />';    
     }
 }
}
Zou kunnen inkorten.

Alvast bedankt :)

Geplaatst: 04 jul 2004, 19:52
door WebSiteNet
dat stuk verkorten kan makkelijk:

Code: Selecteer alles

while($f_info = mysql_fetch_assoc($s_info)) 
{ 
    $title = $f_info['topic_title'];
	$date = $f_info['post_time'];
    if (strlen($f_info['topic_title']) > "12") 
    { 
        $title = substr($title, 0, 11) . '..';
    } 
	
	if(date("mdy", $date) == date("mdy"))
	{
	    $date = date("H:i", $date);
	}
	else
	{
	    $date = date("m/d", $date)
	}
       $url[] = '<span style="color: #000000">' . $date . '</span>&nbsp;<a href="viewtopic.php?t=' . $f_info['topic_id'] . '" title="' . $f_info['forum_name'] . ' (' . $f_info['username'] .  ')">'. $f_info['topic_title'] . '</a><br />';    
}
Dat kan nog korter (3 regels binnne in de while, 7 dus in totaal), maar dat wordt onoverzichtelijker.

En je kan die distict hier volgens mij gewoon weghalen (inclusief die haakjes).

Geplaatst: 04 jul 2004, 20:34
door BladiN
Nee want dan geeft hij alle topics weer die nieuw zijn. Het is net de bedoeling dat als er om 10:10 in Topic A gepost is, en om 11:27 weer in Topic A, dat deze er niet allebei komen te staan, maar alleen de laatste, die van 11:27 dus

Geplaatst: 05 jul 2004, 07:51
door WebSiteNet
Probeer je nu de laatste topics of posts te query'en? Als ik de query zie de laatste topics met de distict bij p.topic_id. De query is dus niet correct.

Geplaatst: 05 jul 2004, 09:55
door BladiN
mja idd :P op deze manier zijn t dus de laatste topics :/ moet dus de laatste posts worden ;) foutje (A)

Maar ff voor de duidelijkheid:
Ik wil dus dat hij de laatste posts pakt, MAAR als het in een zelfde topic is als die al in de Last 10 Posts staat, dat ie dan alleen de laatste nieuwe post in dat topic in die lijst zet, dus niet dubbel.

Wat zou ik dan moete veranderen aan deze query?