Avatar billede -kenner- Nybegynder
22. december 2008 - 15:03 Der er 7 kommentarer og
1 løsning

gruppere på et felt og sortere efter et andet?

Hej eksperter,

Jeg er ved at kode et forum, og i den forbindelse, så vil jeg gerne vise mine tråde i rækkefølge efter sidste indlæg. Det indebære ifølge min forsøgte løsning at jeg henter alle indlæg, som grupperes efter "Traad_ID" og sorteres efter "Tid", men det lader til at den gruppere før den sorterer så min teori holder ikke stik.

Hvordan løses det alternativt?

det skal lige nævnes at den viste kode er til forsiden, så det er kun de 5 første der bliver hentet.

Source:
$a =1;
    $result = mysql_query("select  * from debat_indlaeg group by Traad_ID order by Tid DESC") or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    $result2 = mysql_query("select * from debat_traade where ID = ".$row['Traad_ID']."") or die(mysql_error());
    $row2 = mysql_fetch_array($result2);
        if($a <= 5){
    echo "<table class=\"display-table\">
    <b>".formater($row2['Titel'])."</b> Seneste: ".dato($row['Tid'])."<br>";
    echo"".forkort_tekst(formater($row['Beskrivelse']),300)."<br><a href=\"index.php?side=Debat&ID=$row2[ID]\">Læs mere</a> - <a href=\"index.php?side=Debat\">Flere debatter</a>";
        }
    $a++;
}
Avatar billede fant0mas Nybegynder
22. december 2008 - 18:12 #1
Vil du have de sidste 5 besvarelser eller den sidste besvarelse i 5 tråde?
Avatar billede -kenner- Nybegynder
22. december 2008 - 18:13 #2
den sidste besvarelse i 5 tråde.

Men jeg har løst det med et ekstra felt i trådene, for "sidste_indlaeg_tid" er til at sortere på.
Avatar billede fant0mas Nybegynder
22. december 2008 - 18:52 #3
Sådan ville det se ud samlet så:

select *
from debat_indlaeg i
inner join debat_traade t on t.id = i.Traad_ID
group by i.Traad_ID
order by i.tid desc
LIMIT 5
Avatar billede fant0mas Nybegynder
22. december 2008 - 19:06 #4
The end:

$result = mysql_query("
SELECT i.id as svarID, i.beskrivelse, i.tid, t.titel
FROM debat_indlaeg i
INNER JOIN debat_traade t on t.id = i.Traad_ID
GROUP BY i.Traad_ID
ORDER BY i.tid desc
LIMIT 5") or die(mysql_error());

while($row = mysql_fetch_assoc($result))
{
echo '<table class="display-table"><b>'.formater($row['Titel']).'</b> Seneste: '.dato($row['Tid']).'<br>';
echo forkort_tekst(formater($row['Beskrivelse']),300).'<br>';
echo '<a href="index.php?side=Debat&ID='.$row['svarID'].'">Læs mere</a> - <a href="index.php?side=Debat">Flere debatter</a>';
}
Avatar billede fant0mas Nybegynder
22. december 2008 - 19:09 #5
Hvis du så beslutter dig for at lave en funktion til admin så forumer kan slettes, -så er du bedre forberedt derpå.
Avatar billede cronaldo Nybegynder
24. december 2008 - 11:38 #6
fant0mas: Det er kanon :) .. Tror der er mange der sidder og leder efter det der - og personligt har jeg aldrig rigtigt lært om det med INNER JOIN :( .. har aldrig fundet en ordentlig tutorial synes jeg ikke :)
Avatar billede -kenner- Nybegynder
18. marts 2009 - 19:08 #7
Tak, send svar :)
Avatar billede fant0mas Nybegynder
18. marts 2009 - 19:19 #8
Så lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester