---
title: "Sortera på datumet?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/171292-sortera-på-datumet"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "streetrobban"
published: "2008-05-06T18:58:47.000Z"
updated: "2008-05-19T13:38:03.000Z"
replies: 15
views: 924
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/171292-sortera-på-datumet"
---

# Sortera på datumet?

## #1 — streetrobban, 2008-05-06T18:58Z

Hej!

Jag håller på med ett forum där jag listar de senast skrivna trådarna i forumet. Nu är det så att jag vill sortera på ett annat sätt, på datumet då svaren är skrivna. Just nu hämtar jag trådarna från tabellen Forum och länkar den tillsammans med användarna från Users. Men jag antar att jag även måste länka in tid/datum från tabellen med svaren (Replys)?

Någon som har några tips på hur detta ska göras? Har provat med den här koden, men den vill inte skriva ut något.

```php
$get = mysql_query("SELECT
fo.*,
us.Username AS Username, us.ID AS UserID,
re.TimeAdded AS ReTimeAdded, re.DateAdded AS ReDateAdded
FROM Users us
INNER JOIN Forum fo ON fo.UserID = 'us.ID'
LEFT JOIN ForumReplys re ON us.ID = 're.UserID'
WHERE fo.CategoryID = '$CategoryID'
ORDER BY re.DateAdded DESC, re.TimeAdded DESC");
while($row = mysql_fetch_array($get))
```

Permalänk: https://www.webforum.nu/p/171292

## #2 — Melea, 2008-05-06T19:01Z

Vad händer om du sorterar efter ReDateAdded?

Permalänk: https://www.webforum.nu/p/2108401

## #3 — streetrobban, 2008-05-06T19:02Z

Fortfarande ingenting...

Permalänk: https://www.webforum.nu/p/2108402

## #4 — effata, 2008-05-07T07:36Z

Länkas verkligen reply tabellen med userid? Borde rimligtvis vara länkat till primärnyckeln i forum? Kan du visa hur datastrukturen ser ut så blir det lättare att förstå.
Sen borde du rimligtvis ha forum som primär tabell och joina med users och inte tvärt om. Det spelar inte så stor roll på mindre siter, men det kan orsaka prestandaproblem när datamängden ökar.

Permalänk: https://www.webforum.nu/p/2108497

## #5 — SPiN, 2008-05-07T07:56Z

Ta bort enkel-fnuttarna runt us.ID och re.UserID i dina JOINs?

Permalänk: https://www.webforum.nu/p/2108500

## #6 — streetrobban, 2008-05-07T19:11Z

SPiN: Nice det funkade, fast nu skriver den ut posterna x så många kommentarer det finns :)

Permalänk: https://www.webforum.nu/p/2108677

## #7 — aasah, 2008-05-10T19:11Z

> **streetrobban skrev:**
>
> SPiN: Nice det funkade, fast nu skriver den ut posterna x så många kommentarer det finns :)

Det här får du lösa i while-slingan.

```php
$get = mysql_query("SELECT ...");
$oldID = -1; 
while($row = mysql_fetch_array($get)) {
    if ($oldID != $row["<inläggets/postens ID-nr>"]) {
       //Skriv ut posten
       $oldID = $row["<inläggets/postens ID-nr>"];
    }
   //Skriv ut kommentaren
}
```

Permalänk: https://www.webforum.nu/p/2109257

## #8 — streetrobban, 2008-05-12T21:31Z

Hmm jag får det fortfarande inte att funka. Gör jag någo fel?

```php
// Visa samtliga inlägg
$get = mysql_query("SELECT
fo.*,
us.Username AS Username, us.ID AS UserID,
re.TimeAdded AS ReTimeAdded, re.DateAdded AS ReDateAdded
FROM Users us
INNER JOIN Forum fo ON fo.UserID = us.ID
LEFT JOIN ForumReplys re ON us.ID = re.UserID
WHERE fo.CategoryID = '$CategoryID'
ORDER BY re.DateAdded DESC, re.TimeAdded DESC");
$oldID = -1;
while($row = mysql_fetch_array($get)) 
{
$ID = $row['ID'];
$TimeAdded = $row['TimeAdded'];
$DateAdded = $row['DateAdded'];
$Subject = $row['Subject'];
$Message = $row['Message'];
$CategoryID = $row['CategoryID'];
$Views = $row['Views'];

$Username = $row['Username'];
$UserID = $row['UserID'];

if ($oldID != $row["ID"])
{
// Hämta svaren
$get2 = mysql_query("SELECT * FROM ForumReplys WHERE ThreadID = '$ID'");
$rowCount = mysql_num_rows($get2);

// SKRIV UT ALLA POSTER

$oldID = $row["ID"];
}
}
```

Permalänk: https://www.webforum.nu/p/2109712

## #9 — SPiN, 2008-05-12T21:49Z

Återigen har du enkel-fnuttar kring dina värden som du ska jämföra i SQL-frågan. ID-fälten är av heltalstyp, därför ska du inte omsluta dom med ' - då blir det en strängjämförelse mot ett heltal, vilket inte fungerar.

```
SELECT
fo.*,
us.Username AS Username, us.ID AS UserID,
re.TimeAdded AS ReTimeAdded, re.DateAdded AS ReDateAdded
FROM Users us
INNER JOIN Forum fo ON fo.UserID = us.ID
LEFT JOIN ForumReplys re ON us.ID = re.UserID
WHERE fo.CategoryID = $CategoryID
ORDER BY re.DateAdded DESC, re.TimeAdded DESC
```

```
SELECT * FROM ForumReplys WHERE ThreadID = $ID
```

Permalänk: https://www.webforum.nu/p/2109718

## #10 — streetrobban, 2008-05-13T11:33Z

Okej, trodde du menade på JOIN:sen bara. Ska kolla sen, tack för svar :)

Permalänk: https://www.webforum.nu/p/2109812

## #11 — streetrobban, 2008-05-13T21:14Z

Testade att ta bort enkelfnuttarna, men trådarna skrivs fortfarande ut flera gånger än de ska. Typ 3-4 gånger styck...

Permalänk: https://www.webforum.nu/p/2109928

## #12 — streetrobban, 2008-05-17T10:53Z

Om jag använder "GROUP BY ID" så får jag ut rätt mängd trådar. Men trådarna sorteras fortfarande inte efter det senaste svarets datum/tid.

Permalänk: https://www.webforum.nu/p/2110777

## #13 — effata, 2008-05-17T21:56Z

ORDER BY MAX(re.DateAdded) kanske?

Permalänk: https://www.webforum.nu/p/2110908

## #14 — streetrobban, 2008-05-18T13:32Z

Nej det funkar inte. Vad gör MAX?

Permalänk: https://www.webforum.nu/p/2110982

## #15 — effata, 2008-05-19T10:10Z

Precis som det låter, plockar ut maximalt värde av ett fält i en grupp. Du kanske behöver ange det redan i select för att kunna sortera på det, inte helt säker.
Väldigt svårt att ge några svar utan att se hur datastrukturen ser ut.

Skulle också rekommendera att slå ihop TimeAdded och DateAdded till en gemensam DATETIME eller TIMESTAMP, det borde underlätta vid datum och tidssortering.

Permalänk: https://www.webforum.nu/p/2111183

## #16 — streetrobban, 2008-05-19T13:38Z

Hmm, det har aldrig varit några problem att sortera på datumet tidigare. Jag tycker att SQL-satsen borde funka rent logiskt. Men jag kanske hämtar från tabellerna i fel ordning?

Permalänk: https://www.webforum.nu/p/2111219

---

Tråden på webben: https://www.webforum.nu/amne/php/171292-sortera-på-datumet
