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:
  1. $sql = "select * from forum_comments order by date desc limit 5";  
  2. $result = mysql_query($sqlor die(mysql_error());  
  3.   
  4. echo "  
  5.     <h2>Új fórumtémák</h2>  
  6.     <ul id='new_topic'>";  
  7.   
  8. while ($r = mysql_fetch_array($result)) {  
  9.   
  10.     echo "<li><a href='#'>$r[ft_id]</a></li>";  
  11. }  
  12.   
  13. 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:
  1. <h2>Új fórumtémák</h2>  
  2. <ul id='new_topic'>  
  3. <li><a href='#'>2</a></li>  
  4. <li><a href='#'>4</a></li>  
  5. <li><a href='#'>2</a></li>  
  6. <li><a href='#'>2</a></li>  
  7. <li><a href='#'>2</a></li>  
  8. </ul>  
Mi lehet a megoldás?
 
1

distinct

tiku I tikaszvince · 2006. Ápr. 29. (Szo), 12.47
Próbáld distinctel kiegészíteni
  1. 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:
  1. select topics.*, messages.* from  topics, messages   
  2. where topics.id=messages.tid  
  3. group by messages.tid  
  4. 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?