Versio

distinct wil niet sorteren

Overzicht Reageren

Teun Beijers

Teun Beijers

31/01/2009 19:19:00
Quote Anchor link
Ik heb een forum en wil de topic titels van de laatste 5 geplaatste berichten laten zien, een beetje als Laatste forum berichten op phphulp.
Nu heb ik deze functie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function laatsteforum() {
        $sql = "SELECT distinct TopicID FROM berichten ORDER BY Datum DESC LIMIT 5";
        $query = mysql_query($sql);
        $returner = array();
        while($result = mysql_fetch_array($query)) {
            $sql2 = "SELECT Naam FROM topics WHERE TopicID = ".$result['TopicID'];
            $query2 = mysql_query($sql2);
            $object = mysql_fetch_object($query2);
            $tekst = $object->Naam;
            if(strlen($tekst) > 30) {
                $tekst = substr($tekst,0,27).'...';
            }

            $returner[] = array("Topic" => $result['TopicID'], "Tekst" => $tekst);
        }

        return $returner;
    }

?>

Het werkt op zich wel, want hij laat alleen maar unieke topic titels zien. Maar het sorteren klopt totaal niet. De langst geleden post komt bovenaan, als 2de de kortst geleden, en die er tussenin ligt als 3de, de volgorde klopt dus van geen kant. Weet iemand wat ik verkeerd doe?
Gewijzigd op 01/01/1970 01:00:00 door Teun Beijers
 
PHP hulp

PHP hulp

24/05/2012 09:50:07
Gesponsorde koppelingen:
 
Merijn Venema

Merijn Venema

31/01/2009 19:22:00
Quote Anchor link
Hoe heb je je datum gesorteerd? Volgens mij moet je die eerst bewerken
 
Teun Beijers

Teun Beijers

31/01/2009 19:23:00
Quote Anchor link
daar ligt het niet aan, want als ik op ID sorteer doe ie precies hetzelfde, en die staat ook op de goede volgorde
 
Klaasjan Boven

Klaasjan Boven

31/01/2009 19:58:00
Quote Anchor link
Waarom zo moeilijk en niet in een SQL?

SELECT
DISTINCT TopicID, Naam
FROM
berichten,
topics
WHERE
berichten.topicid= topic.topicic
ORDER BY Datum DESC LIMIT 5


Laat me raden datum is een varchar??
Op id sorteren is overigens niet juist een id heeft geen enkele betekenis
 
Teun Beijers

Teun Beijers

31/01/2009 20:15:00
Quote Anchor link
@Klaasjan: Datum is bigint.
Als ik jouw manier probeer:
#1052 - Column 'TopicID' in field list is ambiguous
SELECT DISTINCT TopicID, Naam
FROM berichten, topics
WHERE berichten.TopicID = topics.TopicID
ORDER BY Datum DESC
LIMIT 5

EDIT: heb het nu zo opgelost:
SELECT DISTINCT Naam, berichten.TopicID
FROM berichten, topics
WHERE berichten.TopicID = topics.TopicID
ORDER BY berichten.Datum DESC
LIMIT 5

denk dat het zo wel werkt, bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Teun Beijers
 
Jasper Sni

Jasper Sni

31/01/2009 20:17:00
Quote Anchor link
teuneboon schreef op 31.01.2009 20:15:
@Klaasjan: Datum is bigint.
Als ik jouw manier probeer:
#1052 - Column 'TopicID' in field list is ambiguous
SELECT DISTINCT TopicID, Naam
FROM berichten, topics
WHERE berichten.TopicID = topics.TopicID
ORDER BY Datum DESC
LIMIT 5


Dan zijn er 2 velden met de naam TopicID ...
 
Teun Beijers

Teun Beijers

31/01/2009 20:20:00
Quote Anchor link
Jasper, zie mijn edit van die post voor je :P
 
Jasper Sni

Jasper Sni

31/01/2009 20:23:00
Quote Anchor link
teuneboon schreef op 31.01.2009 20:20:
Jasper, zie mijn edit van die post voor je :P

Goedzo ;p
 
Klaasjan Boven

Klaasjan Boven

31/01/2009 20:43:00
Quote Anchor link
Het probleem zit hem in het feit dat de datum in een BIGINT zit. Ik neem aan dat je nummers altijd opslaat in een datefield? of in een varchar?

Zet je datum in een DATE of DATETIME en je probleem is opgelost.

Je
 
Klaasjan Boven

Klaasjan Boven

01/02/2009 19:22:00
Quote Anchor link
Is het nog gelukt?
 
Teun Beijers

Teun Beijers

02/02/2009 22:13:00
Quote Anchor link
Ja hoor:
SELECT DISTINCT Naam, berichten.TopicID
FROM berichten, topics
WHERE berichten.TopicID = topics.TopicID
ORDER BY berichten.Datum DESC
LIMIT 5
 



Overzicht Reageren

Get Adobe Flash player