Distinct

Installatie lukt niet? Plotseling een foutmelding. Of weet je niet hoe iets werkt. Problemen met phpBB2 kun je in dit archief opzoeken.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Gebruikersavatar
BladiN
Berichten: 38
Lid geworden op: 29 jun 2004, 07:25

Distinct

Bericht door BladiN » 04 jul 2004, 17:40

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 :)

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 04 jul 2004, 19:52

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).

Gebruikersavatar
BladiN
Berichten: 38
Lid geworden op: 29 jun 2004, 07:25

Bericht door BladiN » 04 jul 2004, 20:34

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

Gebruikersavatar
WebSiteNet
Berichten: 6524
Lid geworden op: 20 okt 2003, 16:56
Locatie: Wieringerwerf
Contacteer:

Bericht door WebSiteNet » 05 jul 2004, 07:51

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.

Gebruikersavatar
BladiN
Berichten: 38
Lid geworden op: 29 jun 2004, 07:25

Bericht door BladiN » 05 jul 2004, 09:55

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?

Gesloten