ugrás a tartalomhoz

Aktív fórum témák meghatározása, mint a Weblaboron

Anonymous · 2006. Ápr. 29. (Szo), 11.09
Sziasztok!

Van egy saját kis fórum "motorom". Ehhez szeretnék késziteni egy olyan modult, ami itt a Weblaboron is szerepel, és amelynek a segítségével meg tudom mutatni az utolsó x db aktív fórum témát. Tehát azokat, amelyekbe az utolsó hozzászólások érkeztek.

Ehhez nekem meg kéne határoznom az adatbázistáblámból 5 db ft_id mezo erteket időrendben, de úgy, hogy ne szerepeljen benne kétszer ugyanaz az érték...

Tehát az alábbi kódhoz hasonlóan:

	$sql = "select * from forum_comments order by date desc limit 5";
	$result = mysql_query($sql) or die(mysql_error());

	echo "
		<h2>Új fórumtémák</h2>
		<ul id='new_topic'>";

	while ($r = mysql_fetch_array($result)) {
	
		echo "<li><a href='#'>$r[ft_id]</a></li>";
	}
	
	echo"</ul>";

Mindössze annyit kéne valahogy javítani vagy a lekérdezésen vagy php segítségével, hogy ugyanaz az $r[ft_id] érték nem szerepelhet benne. Hiszen, ha ugyanahhoz a témához érkezik az utolsó 5 hozzászólásból mondjuk 4, akkor a kimenet így fog kinézni:

<h2>Új fórumtémák</h2>
<ul id='new_topic'>
<li><a href='#'>2</a></li>
<li><a href='#'>4</a></li>
<li><a href='#'>2</a></li>
<li><a href='#'>2</a></li>
<li><a href='#'>2</a></li>
</ul>
Mi lehet a megoldás?
 
1

distinct

tiku I tikaszvince · 2006. Ápr. 29. (Szo), 12.47
Próbáld distinctel kiegészíteni
SELECT DISTINCT * FROM forum_comments ORDER BY date DESC LIMIT 5
TikuVoltam
2

Ez nem volt jo

Anonymous · 2006. Ápr. 29. (Szo), 21.50
Distinct-tel nem változott az eredmény...
3

gondolkozz!

tiku I tikaszvince · 2006. Ápr. 30. (V), 07.21
Szerinted miért nem változott semmi? A distinct arra való, hogy a teljesen azonos sorokat kiszűri, magyarul nem jelenik meg két ugyanolyan sor.
Ott száll el a distinct-es elképzelés, hogy te mindent (select *) lekérdezel.
Ahogy a while-al végigmész az eredmény tömbödön, írass ki minden sort a print_r segítségével. Látni fogod, hogy minden sor különbözik valamiben a többitől.
Gondold végig, hogy mire van valójában szükséged abból a táblából, mit szeretnél kiíratni az 5 sorban, és csak azokat tedd be a lekérdezésbe. Ha csak a téma azonosítókat, akkor csak azt kérdezd le!
Ha már ezen a lépésen is túl vagy, és még mindig nem jó, akkor gyere vissza.

Jó gondolkozást(!)
TikuVoltam
4

Koszonom

Anonymous · 2006. Május. 2. (K), 08.34
Ok, mukodik a dolog. Megmondom oszinten, nem voltam tisztaban a distinct mukodesevel... :(
5

Nekem nem teszi sorrendbe

Sx dfc · 2007. Júl. 1. (V), 01.05
Nekem is meggyűlt a bajom ezzel a kérdéssel:
Két tábla van:
1. 'topics', mezők: id, name
2. 'messages', mezők: id, tid, message, datum

Namost szerettem volna kilistázni a topikokat a legfrissebb hozzászólások szerint:
select topics.*, messages.* from  topics, messages 
where topics.id=messages.tid
group by messages.tid
order by messages.datum
de ezzel teljesen rossz sorrendben adta vissza az eredményt (mintha a group by on belül nem jól rendezné sorba.)

Szóval hogy is van itt a weblaboron megoldva a témák utolsó hozzászólás szerinti rendezése?