Datum sorteren d.m.v. database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kumkwat Trender

Kumkwat Trender

19/10/2008 17:06:00
Quote Anchor link
Hoi iedereen,

ik was een script aan het maken tot dat ik een probleem tegen kwam.
hieronder staat mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
$get    = mysql_query("SELECT *,DATE_FORMAT(datum, '%d-%m-%Y') AS datum FROM bericht ORDER BY datum DESC limit 0,7");

$i = "0";
while($row = mysql_fetch_array($get)) {
    $i++;
    ${'id'.$i}                = $row['id'];
    ${'datum'.$i}        = $row['datum'];
    ${'titel'.$i}                    = $row['titel'];
    ${'bericht'.$i}        = omzetter($row['bericht']);
    ${'categorie'.$i}        = $row['categorie'];
    ${'sbcategorie'.$i}    = $row['subcategorie'];
    ${'bron'.$i}        = $row['bron'];
}


Nou is mijn probleem dat ik mijn datum niet gesorteerd zie maar door elkaar. Dit komt omdat het script op een of andere manier alleen naar de dagen kijkt en die sorteert.
$get = mysql_query("SELECT *, DATE_FORMAT(datum, '%d-%m-%Y') AS datum FROM bericht ORDER BY datum DESC limit 0,7");
zoals je ziet zet ik eerst mijn datum op de goede volgorde door DATE_FORMAT(datum, '%d-%m-%Y') deze functie te gebruiken. Ik sorteer als eerst mijn dag. Nou is het zo dat ie daar dan ook alles op sorteert.
als ik mijn sorteer gedeelte zo heb DATE_FORMAT(datum, '%m-%d-%Y') sorteert ie het op de maanden.
is er misschien een oplossing ervoor zonder dat ik nog een 2e query hoef te voeren?
Met Vriendelijke Groeten,
Peter
Gewijzigd op 01/01/1970 01:00:00 door Kumkwat Trender
 
PHP hulp

PHP hulp

23/04/2024 09:49:56
 
Noppes

Noppes

19/10/2008 17:14:00
Quote Anchor link
en is datum dan wel van het type date?

en dan gaat je nog de fout in bij het uitlezen aan het onnodig aanmaken van variabelen

Dan pak je het eerder als volgt aan:
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
$sql
= "SELECT *
       ,       DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
       FROM bericht
       ORDER BY
               datum DESC
       LIMIT 0,7"
;

$preLoadBerichten = array();
if ($result = mysql_query($sql)) {
    while ($row = mysql_fetch_assoc($result)) {
        $preLoadBerichten[$row['id']] = $row;
    }
}

else {
   // hier fout afhandeling mysql_error() tonen bij debuggen bijvoorbeeld
}
?>


note `wij predikken`:
gebruik mysql_fetch_assoc ipv _fetch_array
het gebruik van {} om variabele variabelen aan te maken is in principe uit den boze
Gewijzigd op 01/01/1970 01:00:00 door Noppes
 
Joren de Wit

Joren de Wit

19/10/2008 17:19:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
DATE_FORMAT(datum, '%d-%m-%Y') AS datum
Dit is wat je probleem oplevert: je gebruikt een alias die hetzelfde is als de kolomnaam. Als je nu sorteert op 'datum', sorteer je dus op de geformatteerde datum en dat zal niet goed gaan.

Kortom, kies een alias nooit hetzelfde als een bestaande kolomnaam. Je verliest dan de mogelijkheid om te sorteren op die kolomnaam.
 
Kumkwat Trender

Kumkwat Trender

19/10/2008 17:40:00
Quote Anchor link
ow ja natuurlijk ik gebruik een alias met hetzelfde naam als wat ik aan wil roepen.

Maar bedankt Noppes en Blanche
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.